1

一次方程式系を解くように求める問題が設定されました。質問では、方程式 A x = bを解くために行列 A と列ベクトルbを設定する必要があると述べています。ここで、xは列ベクトル (wxyz) です。

A = [1 1 1 1; 0 1 4 -2; 2 0 -2 1; 1 -2 -1 1]
b = [28;7;22;-4]
A1 = inv(A).*b
sum(A1,2)

これは私がこれまで行ってきたことですが、正しい解決策は w=10.5、x=9、y=2.5、z=6 である必要があるため、MATLAB が提供する答えが間違っていることはわかっています。

誰かが私を正しい方向に向けることができますか/私が間違っている場所を教えてくれますか? (私はMATLABにかなり慣れていないので、すべてについて非常に確信が持てません)。ありがとう。

4

1 に答える 1

2
A = [1 1 1 1; 0 1 4 -2; 2 0 -2 1; 1 -2 -1 1];
b = [28;7;22;-4];
A1 = A \ b;
ans = sum(A1,2);

演算子に関するリファレンスについては、https\ ://it.mathworks.com/help/matlab/ref/mldivide.html をお読みください。

あなたのテクニックを使用する正しいコードは次のようになります。

A1 = inv(A) * b;

しかし、お気づきかもしれませんが、Matlab コード アナライザーは次のことを指摘します。

線形方程式系を解く場合、逆行列は主に理論値です。x=inv(A)*b を使用して線形システム Ax=b を解くために逆行列を使用しないでください。遅くて不正確です。

inv(A)*b を A\b に置き換えます

b*inv(A) を b/A に置き換えます

そしてそれ:

INV(A)*b は A\b よりも遅くなる可能性があります

于 2017-11-25T19:15:28.890 に答える