基本信息
源码名称:列主lu分解法(PLU.m)
源码大小:1.14KB
文件格式:.m
开发语言:MATLAB
更新时间:2021-04-08
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
function x=PLU(A,b,eps)
if (length(A)~=length(b))
disp('输入方程有误!')
return;
end
disp('原方程为AX=b:')
A
b
disp('------------')
n=length(A);
A=[A b];
for r=1:n
if r==1
for i=1:n
[c d]=max(abs(A(:,1)));
if c<=eps
break;
else
end
d=d 1-1;
p=A(1,:);
A(1,:)=A(d,:);
A(d,:)=p;
A(1,i)=A(1,i);
end
A(1,2:n)= A(1,2:n);
A(2:n,1)=A(2:n,1)/A(1,1);
else
u(r,r)=A(r,r)-A(r,1:r-1)*A(1:r-1,r);
if abs(u(r,r))<=eps
p=A(r,:);
A(r,:)=A(r 1,:);
A(r 1,:)=p;
else
end
for i=r:n
A(i,r)=(A(i,r)-A(i,1:r-1)*A(1:r-1,r))/A(r,r);
end
end
end
y(1)=A(1,n 1);
for i=2:n
h=0
for k=1:i-1
h=h A(i,k)*y(k);
end
y(i)=A(i,n 1)-h;
end
x(n)=y(n)/A(n,n);
for i=n-1:-1:1
h=0;
for k=i 1:n
h=h A(i,k)*x(k);
end
x(i)=(y(i)-h)/A(i,i);
end
A
disp('AX=b的解x是')
x=x';
function x=PLU(A,b,eps)
if (length(A)~=length(b))
disp('输入方程有误!')
return;
end
disp('原方程为AX=b:')
A
b
disp('------------')
n=length(A);
A=[A b];
for r=1:n
if r==1
for i=1:n
[c d]=max(abs(A(:,1)));
if c<=eps
break;
else
end
d=d 1-1;
p=A(1,:);
A(1,:)=A(d,:);
A(d,:)=p;
A(1,i)=A(1,i);
end
A(1,2:n)= A(1,2:n);
A(2:n,1)=A(2:n,1)/A(1,1);
else
u(r,r)=A(r,r)-A(r,1:r-1)*A(1:r-1,r);
if abs(u(r,r))<=eps
p=A(r,:);
A(r,:)=A(r 1,:);
A(r 1,:)=p;
else
end
for i=r:n
A(i,r)=(A(i,r)-A(i,1:r-1)*A(1:r-1,r))/A(r,r);
end
end
end
y(1)=A(1,n 1);
for i=2:n
h=0
for k=1:i-1
h=h A(i,k)*y(k);
end
y(i)=A(i,n 1)-h;
end
x(n)=y(n)/A(n,n);
for i=n-1:-1:1
h=0;
for k=i 1:n
h=h A(i,k)*x(k);
end
x(i)=(y(i)-h)/A(i,i);
end
A
disp('AX=b的解x是')
x=x';