Trying to solve a system of linear equations in matlab

半腔热情 提交于 2020-01-05 09:02:52

问题


I've been set a question asking me to solve a system of linear equations. In the question it states I should set up a matrix A and column vector b to solve the equation Ax=b, where x is the column vector (w x y z).

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)

This is what I've done so far, however I know the answer that MATLAB gives me is incorrect, as the right solutions should be w=10.5, x=9, y=2.5, z=6.

Can someone point me in the right direction/ show me where I'm going wrong? (I'm fairly new to MATLAB so very unsure about it all). Thanks.


回答1:


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);

For a reference concerning the \ operator, please read this: https://it.mathworks.com/help/matlab/ref/mldivide.html

The correct code to use your technique would be:

A1 = inv(A) * b;

but as you may notice, the Matlab code analyzer will point out that:

For solving a system of linear equations, the inverse of a matrix is primarily of theoretical value. Never use the inverse of a matrix to solve a linear system Ax=b with x=inv(A)*b, because it is slow and inaccurate.

Replace inv(A)*b with A\b

Replace b*inv(A) with b/A

and that:

INV(A)*b can be slower than A\b



来源:https://stackoverflow.com/questions/47489617/trying-to-solve-a-system-of-linear-equations-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!