ここに画像の説明を入力してくださいMATLABでとlb
を選択する方法がわかりません。また、関数をデータに適合させるために、いくつかの出力がありますが、正しくありません。ub
lsqcurvefit
x0
これが私のデータです:
xdata= [22.8700000000000;7.92000000000000;3.45000000000000;1.78000000000000;
1.57000000000000;6.41000000000000;12.9000000000000;1.82000000000000;
1.86000000000000;3.71000000000000;12.0900000000000;15.9900000000000;
18.9600000000000;23.1500000000000;23.4500000000000;24.8200000000000;
25.0700000000000;13.2800000000000];
ydata= [8.44300000000000;7.92100000000000;7.64600000000000;7.51600000000000;
7.47100000000000;7.82100000000000;8.03200000000000;7.76200000000000;
7.77400000000000;7.87800000000000;8.07000000000000;8.26000000000000;
8.40000000000000;8.52000000000000;8.52000000000000;8.57000000000000;
8.58000000000000;8.03200000000000];
次に、myfuncを別のmファイルに入れます。
function F = myfun(x,xdata)
F=x(1)*(1-x(2)^2)./((1+x(2)^2+2*x(2)*cosd(xdata)).^1.5);
私は、データに適合させた後に推定したい不明なものを持ってx(1)
おり、kが負の値にならないことx(2)
を知っています。x(2)
だから私はlsqcurvefit
このように設定しました:
[x, resnorm]=lsqcurvefit(@myfun,[-0.5:0.5], xdata, ydata, 0, 1.5, options)
そしてこれが結果です:
x = 1.5000 -0.4945
resnorm = 52.1739
x(2)
これは!の負の値を示します
手伝っていただけませんか?
質問に答えてくれてありがとう。コマンドがxとresnormを計算した後、関数で結果を使用します。これは、x(1)= 92.8054 x(2)=0.7427を使用したことを意味します。
それで;
F = 92.8054 *(1-(0.7427)^ 2)./((1-0.7427)^ 2 + 2 *(0.7427)* cosd(xdata))。^ 1.5;
これで、ベクトルFが得られました。データと結果をプロットすると、plot(xdata、ydata、'o'、xdata、F、'*')
軸yの範囲がそんなに違うのはなぜですか!関数にx(3)を追加する必要があるかもしれません。
フィギュアを付けました。