旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【C#】 微分を計算するクラス

微分を計算するクラスを作成します。まずはクラスのソースコードです。

public class Derivative
{
    private const double _h = 1e-5;

    /// <summary>
    /// 導関数を計算するメソッド
    /// </summary>
    /// <param name="f">関数</param>
    /// <returns>fの導関数</returns>
    public static Func<double, double> Compute(Func<double, double> f)
    {
        return x => (f(x + _h) - f(x - _h))/(2.0*_h);
    }

    /// <summary>
    /// 微分係数を計算するメソッド
    /// </summary>
    /// <param name="f">関数</param>
    /// <param name="x">微分係数を計算する座標値</param>
    /// <returns>xにおける微分係数</returns>
    public static double Compute(Func<double, double> f, double x)
    {
        return Compute(f)(x);
    }
}

これを使ってf(x)=2x^2+3x-2x=-1における微分係数を計算します。

double v = Derivative.Compute((x) => 2.0*x*x + 3.0*x - 2.0, -1.0);

計算結果は-1に限りなく近い値となっており、正しく計算できていることが分かります。

関連記事
【C#】 偏微分を計算するクラス - 旅行好きなソフトエンジニアの備忘録
【C#】 勾配ベクトルを計算するクラス - 旅行好きなソフトエンジニアの備忘録