C#、コード Haishibei (53) - 「勾配法」「非線形方程式」の実根セットの C# ソース コード

 

システムを使用する;

名前空間 Zhou.CSharp.Algorithm
{     パブリック デリゲート double delFunction_x(double x);     パブリックデリゲートdouble delFunction_xa(double[] x);     パブリックデリゲートdouble delFunction_x_y(double x, double y);     パブリックデリゲートdouble delFunction_x_ya(double x, double[] y);     パブリックデリゲートdouble delFunction_xa_ya(double[] x, double[] y);




    /// <summary>
    /// 非線形方程式を解くためのクラス NLEquations
    /// Zhou Changfa
    /// 深い混乱に適応
    /// </summary>
    public static Partial class NLEquations
    {

        double eps) {             int i, j;             ダブル f、d、s;














            double[] y = 新しい double[n];

            i = nMaxIt;
            f = Func(x, y);

            // 精度を制御し、反復的に解決します
            while (f >= eps)
            {                 i = i - 1;                 if (i == 0)                 {                     return true;                 }




                d = 0.0;
                for (j = 0; j <= n - 1; j++)
                {                     d = d + y[j] * y[j];                 if (Math.Abs​​(d) < float.Epsilon)                 {                 return                     false;                 }





                s = f / d;
                for (j = 0; j <= n - 1; j++)
                {                     x[j] = x[j] - s * y[j];                 f                 = Func(x, y);             }



            // 有効反復回数内で精度に達するかどうか
            return (nMaxIt > i);
        }
 

}

}

おすすめ

転載: blog.csdn.net/beijinghorn/article/details/131276696