Optimization Toolbox の FSOLVE 関数や LSQNONLIN 関数を使用することで可能です。
以下では、FSOLVE 関数を使用し、
の 2 つの方程式の交点を求める手順を説明します。
1. 式(システム)を F(x,y) = 0 の形に書き直します。
y - sin(x) = 0
y^2 - cos(x) = 0
2. FSOLVE 関数の目的関数シンタックスに合わせ、ベクトル 'V = [x; y]'の形で関数を定義します。
F = @(V) [V(2)-sin(V(1)); V(2).^2-cos(V(1))];
※MATLAB 7.0(R14) 以前のバージョンをご利用の場合は、以下のようにインライン関数を用いて記述します。
F = inline('[V(2)-sin(V(1)); V(2).^2-cos(V(1))]', 'V');
3. FSOLVE関数を実行します。
InitialGuess = [1;1];
Options = optimset('Display','iter');
XY = fsolve(F, InitialGuess, Options);
4.上記で得られた結果が F(x,y) = 0 を満たしているか、確認します。
ShouldBeZero = F(XY)
ezplot('y = sin(x)');
hold on
ezplot('y^2 = cos(x)');
plot(XY(1),XY(2),'ro');
この例では、変数 ShouldBeZero の結果は厳密に 0 ではありませんが、FSOLVE 関数における関数出力値の許容誤差(TolFun)のデフォルト値を満たしています。同様に、X,Y の各点は厳密に 2 つの方程式の交点の値ではありませんが、FSOLVE 関数における目的変数の許容誤差(TolX)のデフォルト値を満たしています。