试图在matlab中求解线性方程组

时间:2017-11-25 19:11:37

标签: matlab matrix linear-equation

我已经提出了一个问题,要求我解决一个线性方程组。在问题中它说明我应该设置矩阵A和列向量 b 来求解方程A x = 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)

这是我到目前为止所做的,但我知道MATLAB给出的答案是错误的,因为正确的解决方案应该是w = 10.5,x = 9,y = 2.5,z = 6。 / p>

有人能指出我正确的方向/告诉我哪里出错了吗? (我对MATLAB很新,所以非常不确定)。 感谢。

1 个答案:

答案 0 :(得分: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代码分析器会指出:

  

对于求解线性方程组,a的逆   矩阵主要是理论值。永远不要使用a的倒数   矩阵求解线性系统Ax = b,其中x = inv(A)* b,因为它是   慢和不准确。

     

将inv(A)* b替换为A \ b

     

用b / A

替换b * inv(A)

那:

  

INV(A)* b可能比A \ b