2017-11-25 97 views
1

私は線形方程式の系を解くように質問されました。質問では、Iは式Xは、(XをY軸、Z W)の列ベクトルであるX = Bを解決するために行列Aと列ベクトルBを設定する必要が述べています。matlabで線形方程式の系を解くことを試みている

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) 

これは私がこれまで行ってきたものです、しかし、私は右のソリューションはワットでなければなりませんよう、MATLABが私を与えることの答えが間違っている知っている= 10.5、X = 9、Y = 2.5、Z = 6 。

誰かが正しい方向に私を向けることができますか、私が間違っている場所を教えてください? (私はMATLABにはかなり新しいので、それについては全くわかりません)。おかげさまで \オペレータに関する参考

+1

Typo。 3行目に 'inv'(A)の後に余分な '.'があります。ここで要素的な乗算は必要ありません –

答えて

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コード、あなたが気づくことのようにアナライザは次のことを指摘します。

リニアイコライザマトリックスの逆行列は主に理論上の値です。 の速度が遅く不正確であるため、 行列の逆行列を使用して、線形システムAx = bをx = inv(A)* bで解くことは避けてください。

B/

とそれとのb * INV(A)を交換B \ bに*

をINV(A)を交換:

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

+1

'。*'は[要素単位の操作]です(https://mathworks.com/help/matlab/ref/times.html)。 – m7913d