最小二乗法を使用して、Matlabにデータを収めようとしています。関数の値のある条件が満たされるまでループする
私は最適なパラメータを見つけましたが、今、それらの不確かさを判断したいと思います。 (そのバリエーションで評価)機能マイナス元の関数値との差が1に等しくなるまで
最初のパラメータの不確実性を決定するためには、我々は、1が一つのパラメータに変動を適用すべき過程で見てきたと言います
つまり、Matlabコードには、[bestparam]
という名前のベクトルがあり、これには4つのパラメータa、b、c、dが含まれています。
また、別のファイルで定義された関数chi-square
があります。この関数は、最良のパラメータで評価しました。
パラメータaに小さなバリエーションを適用し、カイ二乗(a +バリエーション) - カイ2乗= 1になるまでこれを続けます。違いはちょうど1でなければなりません。私はこのために次のコードを実装しました:
i = 0;
a_new = a + i;
%small variation on the parameter a
new_param = [a_new b c d];
%my new parameters at which I want the function chisquare to be evaluated
newchisquare = feval(@chisquare, [new_param], X, Y, dY);
%the function value
while newchisquare - chisquarevalue ~= 1
i = i + 0.0001;
a_new = a_new + i;
new_param = [a_new b c d];
newchisquare = feval(@chisquare, [new_param], X, Y, dY);
end
disp(a_new);
disp(newchisquare);
しかし、このループを実行すると、実行を停止しません。条件を< 1
に変更した場合、つまり差異が1より大きい場合は、5秒後に停止します。しかし、関数の値の違いは、もはや正確には1つではありません。たとえば、元の関数の値は63.5509であり、新しい関数の値は64.6145であり、正確には1ではありません。
コードを実装し、差異が1になるまでパラメータを更新し続ける方法はありますか?ヘルプは高く評価されます。