用MATLAB 实现列主元高斯消去法
答案:1 悬赏:40
解决时间 2021-01-17 23:32
- 提问者网友:两耳就是菩提
- 2021-01-17 05:09
用MATLAB 实现列主元高斯消去法
最佳答案
- 二级知识专家网友:迷人又混蛋
- 2021-01-17 06:07
function x=gauss_lie(A,b)
%采用高斯列主元法求解方程组Ax=b
n=length(b);
p=1:n;lu=A;
y=[];
for k=1:n
[c,i]=max(abs(lu(k:n,k)));
ik=i+k-1;
if ik~=k
m=p(k);p(k)=p(ik);p(ik)=m;
ck=lu(k,:);lu(k,:)=lu(ik,:);lu(ik,:)=ck;
end
if k==n
break;
end
lu(k+1:n,k)=lu(k+1:n,k)/lu(k,k);
lu(k+1:n,k+1:n)=lu(k+1:n,k+1:n)-lu(k+1:n,k)*lu(k,k+1:n);
end
l=diag(ones(n,1))+tril(lu,-1);
u=triu(lu);
y(1)=b(p(1));
for i=2:n
y(i)=b(p(i))-l(i,1:i-1)*y(1:i-1)';
end
x(n)=y(n)/u(n,n);
for i=n-1:-1:1
x(i)=(y(i)-u(i,i+1:n)*x(i+1:n)')/u(i,i);
end
x=x';
%采用高斯列主元法求解方程组Ax=b
n=length(b);
p=1:n;lu=A;
y=[];
for k=1:n
[c,i]=max(abs(lu(k:n,k)));
ik=i+k-1;
if ik~=k
m=p(k);p(k)=p(ik);p(ik)=m;
ck=lu(k,:);lu(k,:)=lu(ik,:);lu(ik,:)=ck;
end
if k==n
break;
end
lu(k+1:n,k)=lu(k+1:n,k)/lu(k,k);
lu(k+1:n,k+1:n)=lu(k+1:n,k+1:n)-lu(k+1:n,k)*lu(k,k+1:n);
end
l=diag(ones(n,1))+tril(lu,-1);
u=triu(lu);
y(1)=b(p(1));
for i=2:n
y(i)=b(p(i))-l(i,1:i-1)*y(1:i-1)';
end
x(n)=y(n)/u(n,n);
for i=n-1:-1:1
x(i)=(y(i)-u(i,i+1:n)*x(i+1:n)')/u(i,i);
end
x=x';
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯