Main Content

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

有限差分ヤコビアンによる非線形方程式

解析ヤコビアンによる非線形方程式の例では、関数 bananaobjF を評価し、ヤコビアン J を計算します。それでは、ヤコビアンを計算するコードが使用できない場合はどうするのでしょうか?既定の設定ではユーザーが (options の中の SpecifyObjectiveGradient オプションを true に設定して) 目的関数でヤコビアンを計算しない場合、fsolvelsqnonlinlsqcurvefit は有限差分を使ってヤコビアンを近似します。これは Jacobian オプションの既定の設定です。optimoptions を使用して SpecifyObjectiveGradientfalse に設定することにより、有限差分を選択することができます。

この例では目的関数として例解析ヤコビアンによる非線形方程式bananaobj を使用していますが、fsolve でヤコビアンを近似し、2 番目の bananaobj 出力を無視するように、SpecifyObjectiveGradientfalse に設定しています。

n = 64;  
x0(1:n,1) = -1.9; 
x0(2:2:n,1) = 2;
options = optimoptions(@fsolve,'Display','iter','SpecifyObjectiveGradient',false);
[x,F,exitflag,output,JAC] = fsolve(@bananaobj,x0,options);

この例は次の出力を生成します。

                                    Norm of    First-order   Trust-region
Iteration  Func-count   f(x)        step       optimality    radius
    0         65       8563.84                       615               1
    1        130       3093.71            1          329               1
    2        195       225.104          2.5         34.8             2.5
    3        260        212.48         6.25         34.1            6.25
    4        261        212.48         6.25         34.1            6.25
    5        326       102.771       1.5625         6.39            1.56
    6        327       102.771      3.90625         6.39            3.91
    7        392       87.7443     0.976562         2.19           0.977
    8        457       74.1426      2.44141         6.27            2.44
    9        458       74.1426      2.44141         6.27            2.44
   10        523        52.497     0.610352         1.52            0.61
   11        588       41.3297      1.52588         4.63            1.53
   12        653       34.5115      1.52588         6.97            1.53
   13        718       16.9716      1.52588         4.69            1.53
   14        783       8.16797      1.52588         3.77            1.53
   15        848       3.55178      1.52588         3.56            1.53
   16        913       1.38476      1.52588         3.31            1.53
   17        978      0.219553      1.16206         1.66            1.53
   18       1043             0    0.0468565            0            1.53

Equation solved.

fsolve completed because the vector of function values is near zero
as measured by the value of the function tolerance, and
the problem appears regular as measured by the gradient.

この例を有限差分型にした場合も、収束には前の例の解析ヤコビ型の場合と同じ回数の反復が必要になります。一般に、どちらの型も反復により、同程度の割合で収束します。ただし、有限差分型では、他にも多くの関数評価処理が必要です。このような付加的評価処理のコストが大きくなるかどうかは個々の問題に依存します。

参考

関連するトピック