まず、fminsearchを試してみるとよいと思います。この種の問題のために設計されています。
fminsearch では役に立たないが、それらがどのように動作するかについてある程度知っている場合は、手動の定量的アプローチを試すことができます (多くのポイントで計算して、うまく動作するかどうかを確認するだけです)。
関数がベクトル化された入力を処理できる場合、次のように実行できます。
vec1 = 0:0.1:10; %Assume you expect it somewhere between 0 and 10
vec2 = 0:0.1:10;
[x1, x2] = ndgrid(vec1, vec2);
result = (Y1 - F1(x1, x2))^2 + (Y2 - F2(x1, x2))^2
これがうまくいかない場合は、これを行うことができます:
horzcount = 0;
for x1 = vec1
horzcount = horzcount +1;
vertcount = 0;
for x2 = vec2
vertcount = vertcount + 1;
result(horzcount, vertcount) = (Y1 - F1(x1, x2))^2 + (Y2 - F2(x1, x2))^2;
end
end
その後、結果 (surf
領域またはplot
行または列で使用) を見て、最適を含む領域を見つけて満足するかどうかを判断します。次に、十分な精度が得られるまで、vec1 と vec2 を適宜調整して、その領域を拡大します。