用高斯消元法解线性方程组 的MATLAB程序

用高斯消元法解线性方程组 的MATLAB程序,第1张

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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11060742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存