[MATLAB]Doolittle分解

[MATLAB代码]关于杜利尔特Doolittle分解法求线性方程组的数值解

A = [2 -1 4 -3 1;
    -1 1 2 1 3;
    4 2 3 3 -1;
    -3 1 3 2 4;
    1 3 -1 4 4];
b = [11;14;4;16;18];
c = [1 1 1 1 1 ];
L = zeros(5) + diag(c);
U = zeros(5);
y = zeros(5,1);
x = zeros(5,1);
%Doolittle分解
for i = 1:5
    U(1, i) = A(1, i);
    L(i, 1) = A(i, 1)/U(1, 1);
end
d = 0;
e = 0;
for i = 2:5
    for j = i:5
        for k = 1:(i-1)
            d = d + L(i, k)*U(k, j);
            e = e + L(j, k)*U(k, i);
        end
        U(i, j) = A(i, j) - d;
        L(j, i) = (A(j, i) - e)/U(i, i);
        d = 0;
        e = 0;
    end 
end
%Gauss消去法求解Ly=b
y(1) = b(1);
for i = 2:5
    for j = 1:(i-1)
        d = d + y(j)*L(i, j);
    end
    y(i) = (b(i)-d)/L(i,i);
    d = 0;
end
%Gauss消去法求解Ux=y,x即Ax=b的解
x(5) = y(5)/U(5,5);
for i = 4:-1:1
    for j = 5:-1:(i+1)
        d = d + x(j)*U(i, j);
    end
    x(i) = (y(i)-d)/U(i,i);
    d = 0;
end
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值