高斯消去法与列选主元的高斯消去法-matlab实现

本文介绍了一种改进的高斯消元法实现,通过直接变换增广矩阵简化了过程,并探讨了列选主元的方法以提高数值稳定性。但未处理主元过小的情况,存在一定的局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一次写了一篇关于列选主元的高斯消去法,这次进行了修改,直接对增广矩阵进行变换,更简洁一些。不过没有对主元过小时进行处理,因此有缺陷。

%高斯分解
function [X]=gauss(A,b)
%Inpiut A 是系数矩阵,b是右端项
%Output x是解

[N,N]=size(A);
X=zeros(N,1);
B=[A b];
for i=1:N-1
if A(i,i)==0
'A is singular. no unique solution'
break
end
for k=i+1:N;
temp=B(k,i)/B(i,i);
B(k,i+1:N+1)=B(k,i+1:N+1)-temp*B(i,i+1:N+1);
end
end
%回代法
X(N)=B(N,N+1)/B(N,N);
for k=N-1:-1:1
X(k)=(B(k,N+1)-B(k,k+1:N)*X(k+1:N))/B(k,k);
end

%列选主元的高斯消去法
function [X]=gauss_pivot(A,b)
%Inpiut A 是系数矩阵,b是右端项
%Output x是解

[N,N]=size(A);
X=zeros(N,1);
C=zeros(1,N);
B=[A b];
for i=1:N-1
[max1,j]=max(abs(B(i:N,i)));
%交换行
C=B(i,:);%C为A的第k列的值
B(i,:)=B(j+i-1,:); %将A的第K列赋为最大
B(j+i-1,:)=C;
%主元为0的情况
%主元为0的情况
if A(i,i)==0
'A is singular. no unique solution'
break
end
for k=i+1:N;
temp=B(k,i)/B(i,i);
B(k,i+1:N+1)=B(k,i+1:N+1)-temp*B(i,i+1:N+1);
end
end
%回代法
X(N)=B(N,N+1)/B(N,N);
for k=N-1:-1:1
X(k)=(B(k,N+1)-B(k,k+1:N)*X(k+1:N))/B(k,k);
end

%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值