急求!!!用MATLAB编写矩阵A的LU分解程序。
要求必须用数学软件MATLAB编写程序。急求,谢谢有才之士帮忙。
要求必须用数学软件MATLAB编写程序。急求,谢谢有才之士帮忙。
答案:里面有自带的LU分解函数,你可在帮助文档搜索 LU
给你一个我自己写的LU分解函数
function [myl,myu,x]=MYLU(A,b)
%依据《现代电力系统分析》编制的LU分解程序。
%matlab自带的lu函数与书上所讲略有不同,不方便参照课本步骤进行后续计算。
%A为待分解的矩阵,myl为分解后下三角矩阵,myu为分解后的上三角矩阵,未考虑单独的对角阵D
%clc
%A=[5,0,0,5,1;2,1,1,0,0;0,1,2,0,10;1,0,5,1,0;1,1,0,3,10] %两组测试用矩阵方程
%b=[1,3,3,4,1]';
%M=[1,2,1,1;2,1,0,0;1,0,1,0;1,0,0,1]
%b=[-1,1,2,0]'
%A=[2,3,1;3,7,-1;5,-4,2]
%b=[12,13,5]'
n=length(A);
myl=speye(n); %可以先不分配内存,由系统自动分配内存
myu=speye(n);
%==============LU分解================
for i=1:n
for j=1:n
if (i<j)
x=0;
for k=1:i-1
x=x+myl(i,k)*myu(k,j);
end
myu(i,j)=(A(i,j)-x)/myl(i,i);
end
if(i>=j)
x=0;
for k=1:j-1
x=x+myl(i,k)*myu(k,j);
end
myl(i,j)=A(i,j)-x;
end
end
end
%B=myl*myu %测试LU分解矩阵,B=A表明结果正确
%===============解方程Ax=b================
y=(zeros(1,n))';
x=(zeros(1,n))';
y(1)=b(1)/myl(1,1);%解Ly=b
for i=2:n
p=0;
for k=1:i-1
p=p+myl(i,k)*y(k);
end
y(i)=(b(i)-p)/myl(i,i);
end
%C=(myl*y) %测试Ly=b,如果相等表明结果正确
x(n)=y(n);
for i=1:n-1
p=0;
for k=n-i+1:n
p=p+myu(n-i,k)*x(k);
end
x(n-i)=y(n-i)-p;
end
%D=myl*myu*x
里面注释部分可以删除
上一个:如何编写程序(matlab或C++)n个数的组合,使之相加的和不超过某个值(假设是s)。
下一个:matlab中的流场图的程序怎么写