matlab 编写高斯消去法程序代码

matlab 编写高斯消去法程序代码,第1张

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

输入的量:系数矩阵 和常系数向量 ;

输出的量:系数矩阵 和增广矩阵 的秩RA,RB, 方程组中未知量的个数n和有关方程组解 及其解的信息.

function [RA,RB,n,X]=gaus(A,b)

B=[A b]n=length(b)RA=rank(A)

RB=rank(B)zhica=RB-RA

if zhica>0,

disp('请注意:因为RA~=RB,所以此方程组无解.')

return

end

if RA==RB

if RA==n

disp('请注意:因为RA=RB=n,所以此方程组有团毁唯一解.')

X=zeros(n,1)C=zeros(1,n+1)

for p= 1:n-1

for k=p+1:n

m= B(k,p)/ B(p,p)B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1)

end

end

b=B(1:n,n+1)A=B(1:n,1:n)X(n)=b(n)/A(n,n)

for q=n-1:-1:1

X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q)

end

else

disp('请注意:悔型因为RA=RB<n,所以此方程组有碧或猜无穷多解.')

end

end

function [v,sN,vChain]=gaussSeidel(A,b,x0,errorBound,maxSp)

%Gauss-Seidel迭代法求解线性方程组

%A-系数矩阵 b-右端向量 x0-初始迭代点 errorBound-近似精度 maxSp-最大迭代次数

%v-近似解 sN-迭代次数 vChain-迭代过程的所有值携弊

step=0

error=inf

s=size(A)

D=zeros(s(1))

vChain=zeros(15,3)%最行岩多能记录档隐御15次迭代次数

k=1

fx0=x0

for i=1:s(1)

D(i,i)=A(i,i)

end

L=-tril(A,-1)

U=-triu(A,1)

while error>=errorBound &step<maxSp

x0=inv(D)*(L+U)*x0+inv(D)*b

vChain(k,:)=x0'

k=k+1

error=norm(x0-fx0)

fx0=x0

step=step+1

end

v=x0

sN=step


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

原文地址: http://outofmemory.cn/yw/8266709.html

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

发表评论

登录后才能评论

评论列表(0条)

保存