1

我被设置了一个问题,要求我解决一个线性方程组。在问题中,我应该设置一个矩阵 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。

有人可以指出我正确的方向/告诉我哪里出错了吗?(我对 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 回答