GNU Octave 2.1.x 日本語マニュアル/非線形方程式

出典: フリー教科書『ウィキブックス(Wikibooks)』

21 非線形方程式[編集]

Octaveは、以下の形式の非線形方程式の組を、関数fsolveを使用して解くことができます。

これはMINPACKサブルーチンのhybrdに基づいています。

[x, info, msg] = fsolve (fcn, x0)[編集]

[Loadable Function]

f(x)形式の関数名として'fcn'を与えられ、最初の出発点がx0であり、fcnが2エレメントの文字列配列である場合、fsolve は f(x)==0 のような方程式の組を解きます。

最初のエレメントが、上記のように関数fと名付けられ、第二のエレメントが j(x) 形式のヤコビ行列で、要素が以下の場合、

fsolveのオプションパラメータを設定するために、関数 fsolve_options を使用することができます。

fsolve_options (opt, val)[編集]

[Loadable Function]

この関数を、2つの引数で呼び出したとき、関数 fsolve のオプションパラメータを設定できます。 1つの引数が与えられたとき、fsolve_optionsは対応するオプションの値を返します。 引数が指定されていない場合、すべての利用可能なオプションとその現在の値の名前が表示されます。 以下のオプションがあります

"tolerance" 

"許容誤差" 非負の相対許容誤差。

ここでは完全な例を示します。

以下の連立方程式を解くために、

最初に、与えられた関数の値を計算するfunction を記述する必要があります。 たとえば、次の例のように:

    function y = f (x)
        y(1) = -2*x(1)^2 + 3*x(1)*x(2) + 4*sin(x(2)) - 6;
        y(2) = 3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1)) + 4;
    end function

次に、連立方程式の根を見つけるために、指定された初期条件でfsolveを呼び出します。 たとえば、上記で定義された関数fが与えられ、解の結果

[x, info] = fsolve ("f", [1; 2])
x =
0.57983
2.54621

info = 1

値、info = 1は、解が収束したことを示します。

関数perrorは数値エラーコードに対応する英語のメッセージを印刷するために使用することができます。 たとえば、

perror ("fsolve", 1)
    a solution converged to requested tolerance

解は、要求された許容値に収束した。