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=gauss(a,b)
%高斯求解方程组
%x=gauss(a,b)
n=length(a)
a=[a,b]
for
k=1:n-1
maxa=max(abs(a(k:n,k)))
if
maxa==0
return
end
for
i=k:n
if
abs(a(i,k))==maxa
y=a(i,k:n+1)a(i,k:n+1)=a(k,k:n+1)a(k,k:n+1)=y
break
end
end
for
i=k+1:n
l(i,k)=a(i,k)/a(k,k)
a(i,k+1:n+1)=a(i,k+1:n+1)-l(i,k).*a(k,k+1:n+1)
end
end
%回代
if
a(n,n)==0
return
end
x(n)=a(n,n+1)/a(n,n)
for
i=n-1:-1:1
x(i)=(a(i,n+1)-sum(a(i,i+1:n).*x(i+1:n)))/a(i,i)
end
调用示例如下:
>>
a=[2,-1,34,2,51,2,0]
>>
b=[147]
>>
x=gauss(a,b)
x
=
9
-1
-6
高斯列主元消去法function X=Gauss_pivot(A,B)
% 用Gauss列主主元消去法解线性方程组AX=B
%X是未知向量
n=length(B)
X=zeros(n,1)
c=zeros(1,n)
d1=0
for i=1:n-1
max=abs(A(i,i))
m=i
for j=i+1:n
if max<abs(A(j,i))
max=abs(A(j,i))
m=j
end
end
if(m~=i)
for k=i:n
c(k)=A(i,k)
A(i,k)=A(m,k)
A(m,k)=c(k)
end
d1=B(i)
B(i)=B(m)
B(m)=d1
end
for k=i+1:n
for j=i+1:n
A(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i)
end
B(k)=B(k)-B(i)*A(k,i)/A(i,i)
A(k,i)=0
end
end
%回代求解
X(n)=B(n)/A(n,n)
for i=n-1:-1:1
sum=0
for j=i+1:n
sum=sum+A(i,j)*X(j)
end
X(i)=(B(i)-sum)/A(i,i)
End
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)