输出的量:系数矩阵 和增广矩阵 的秩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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)