function [x,L,U]= Doolittle (A,b)
N = size(A);
n = N(1);
L = eye(n,n); %L的对角元素为1
U = zeros(n,n);
U(1,1:n) = A(1,1:n); %U的第一行
L(1:n,1) = A(1:n,1)/U(1,1); %L的第一列
for k=2:n
for i=k:n
U(k,i) = A(k,i)-L(k,1:(k-1))*U(1:(k-1),i);
%U的第k行
end
for j=(k+1):n
L(j,k) = (A(j,k)-L(j,1:(k-1))*U(1:(k-1),k))/U(k,k);
%L的第k列
end
end
y = SolveDownTriangle(L,b);
x = SolveUpTriangle(U,y); %求解方程
请matlab高手帮忙指点 以下是程序 望高手解释一下程序的意思及运行方法,这是LU分解 问题补充里面有程序
答案:2 悬赏:20
解决时间 2021-03-07 09:43
- 提问者网友:长安小才冯
- 2021-03-07 00:09
最佳答案
- 二级知识专家网友:懂得ㄋ、沉默
- 2021-03-07 00:34
先做LU分解,A=L*U。
再解 L*y=b
U*x=y
还缺 SolveDownTriangle.m 和SolveUpTriangle.m 2个程序文件。
否则 [x,L,U]= Doolittle (A,b) 就出结果。
再解 L*y=b
U*x=y
还缺 SolveDownTriangle.m 和SolveUpTriangle.m 2个程序文件。
否则 [x,L,U]= Doolittle (A,b) 就出结果。
全部回答
- 1楼网友:一起来看看吧
- 2021-03-07 01:06
matlab有多种lu分解程序下面算一种:
function [l,u]=mylu(a)
%实现对矩阵a的lu分解,l为下三角矩阵
a
[n,n]=size(a);
l=zeros(n,n);
u=zeros(n,n);
for i=1:n
l(i,i)=1;
end
for k=1:n
for j=k:n
u(k,j)=a(k,j)-sum(l(k,1:k-1).*u(1:k-1,j)');
end
for i=k+1:n
l(i,k)=(a(i,k)-sum(l(i,1:k-1).*u(1:k-1,k)'))/u(k,k);
end
end
用法,在控制台输入
a=[1 2 3 -4;-3 -4 -12 13;2 10 0 -3;4 14 9 -13];
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯