5

線形代数の宿題のために、MATLAB の\演算子を使用して次の方程式を解きました (これが推奨される方法です)。

A = [0.2 0.25; 0.4 0.5; 0.4 0.25];
y = [0.9 1.7 1.2]';
x = A \ y

次の答えが生成されます。

×=
1.7000
2.0800

割り当ての次の部分では、最小二乗近似を使用して同じ方程式を解くことになっています (そして、それを以前の値と比較して、近似の精度を確認します)。

MATLABでそれを行う方法を見つけるにはどうすればよいですか?

以前の作業:lsqlin上記のタイプの方程式を解くことができると思われる関数 を見つけましたが、どの引数をどの順序で指定するかわかりません。

4

2 に答える 2

6

mldivide , (" \ ") も実際にそれを行います。ドキュメントによると:

A が m ~= n の m 行 n 列の行列で、B が m 成分の列ベクトル、またはそのような列がいくつかある行列の場合、X = A\B は最小二乗法の意味で以下の解になります。 - または過決定方程式系 AX = B. 言い換えると、X はベクトル AX - B の長さであるノルム (A*X - B) を最小化します。A のランク k は、列ピボットを使用した QR 分解から決定されます (詳しくはアルゴリズム)。計算された解 X には、列ごとに最大 k 個の非ゼロ要素があります。k < n の場合、これは通常、最小二乗解を返す x = pinv(A)*B と同じ解ではありません。

つまり、最初の課題で行ったのは、LSE を使用して方程式を解くことでした。

于 2009-12-02T11:55:40.300 に答える
2

あなたの課題には、最小二乗近似を明示的にコーディングする必要がありますか、それとも MATLAB で利用可能な別の関数を使用するだけですか? 別の関数を使用できる場合、1 つのオプションはLSQRです。

x = lsqr(A,y);
于 2009-12-02T15:19:10.343 に答える