1、下图是需要求解的线性方程组。
2、打开MATLAB,利用左除法(\)求解上述线性方程组。输入如下代码:close allclear allclc% MATLAB左除法(\)求解线性方程组,A = [1 2 3-1 3 79 0 3]b = [1 4 7]'x = A\b。
3、保存和运行上述代码,利用左除法(\)得到线性方程组的解。
4、用求逆法(inv)求解线性方程组,输入如下代码:close allclear allclc,% MATLAB求逆法(inv)求解线性方程组,% A是线性方程组等号左边系数构成的矩阵。
5、保存和运行上述代码,利用求逆法(inv)得到线性方程组的解如下。
6、最后,可以看到左除法(\)和求逆法(inv)求得的线性方程组解是一样的。
function [x,XA]= Gauss (A,b)N = size(A)
n = N(1)
index = 0
pos = zeros(n,1)
B = A
for i=1:n
me = max(abs(B(1:n,i))) %选取列主元
for k=1:n
if(abs(A(k,i))==me)
index = k
pos(i,1) = k %保存列主元所在的行号
break
end
end
m = A(index,i)
for j=1:n
if(j ~= index)
l = A(j,i)
A(j,1:n)=A(j,1:n)-l*A(index,1:n)/m
b(j)=b(j)-l*b(index)/m %消元
end
end
B = A
for k=1:n
if(pos(k,1)~=0)
B(pos(k,1),1:n)=0 %避免列主元在同一行
end
end
end
XA = A
for i=1:n
x(i,1)=b(pos(i,1))/A(pos(i,1),i) %求解
end
测试用例:
>>A=magic(3)x=ones(3,1)b=A*x
b =
15
15
15
>>xx=Gauss(A,b)
xx =
1
1
1
>>xx-x
ans =
0
0
0
>>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)