y=[0.211 0.313 0.466 0.692 1.03 1.532 2.190 3.250 4.823 7.158];
最初のものを当てはめます:
関数 f = first(c, x, y)
f = y - c(1) .* x .^ c(2);
first.m ファイルとして保存します。
コマンドラインから実行:
c = lsqnonlin('first', [0 0], [], [], [], x, y);
a = c(1)
b = c(2)
2 番目のフィッティング:
関数 f = first2(c, x, y)
f = y - c(2) .* exp(c(1) .* x);
first2.m ファイルとして保存します。
コマンドラインから実行:
c2 = lsqnonlin('first2', [0 0], [], [], [], x, y);
a2 = c2(1)
b2 = c2(2)
MATLAB を使用して最小二乗近似を行う方法
z=[70 122 144 152 174 196 202];
a=ポリフィット(x,z,1)
###結果:###
a =1.0e 03 **
0.0205 -1.7551
1 は次数 1 の多項式を表します (次数 1 の場合は直線となり、状況に応じて適用されます)
a は多項式の係数ベクトルであり、高次の項から低次の項まで並べられています。
結果を使用したい場合は、たとえば、x=97 のときの z が何に等しいかを知りたい場合です。
次に、2 つの方法があります。係数を直接使用する
>>a(1)*97 a(2)
ans =
233.4286
または、polyval 関数を使用します
>>ポリバル(a,97)
ans =
233.4286
最小二乗法の適用? ?
最小二乗法は、二乗誤差の合計を最小限に抑えることによって、一連のデータに最もよく一致する関数を見つける数学的最適化手法です。
最小二乗法は、二乗誤差の合計を最小限に抑えながら、絶対に未知の真の値を取得する最も単純な方法を使用することです。
最小二乗法は、カーブ フィッティングに一般的に使用されます。他の多くの最適化問題も、エネルギーを最小化するかエントロピーを最大化することによって最小二乗形式で表現できます。
たとえば、最も単純な線形関数 y=kx b
もちろん、この直線がすべての点を通るわけではありません。5 つの点からこの直線までの距離の二乗和を最小化すればよいのです。これには、最小二乗法を使用します。その後、線形フィッティングを使用します。話したいことがたくさんあります。最小二乗法についてのみ質問されたので、私はこれくらいにします。
これは大学でのみ学ばれるものであり、一般にモデリングに使用されます。
以上が最小二乗法を使用して、べき乗関数 y=a*x^b と指数関数 y=b*exp(a) を近似します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。