矩阵的三角分解算法实验报告

该实验报告详细探讨了矩阵的LR分解、LDR分解和Cholesky分解算法,通过MATLAB实现并举例说明。在LR分解中,对特定矩阵进行了分解展示;Cholesky分解部分,解释了矩阵必须正定的要求,并给出了正确分解的例子。同时,报告还讨论了如何利用这些分解求解线性方程组和求解上三角或下三角矩阵的逆。
摘要由CSDN通过智能技术生成

矩阵的三角分解算法实验报告

作者:戴宇童

如有任何问题请联系 rothdyt@gmail.com

LR 分解,LDR 分解算法

LR分解的代码

function [A,L,R]=myLR(A,op)
%op是一个数值,op=1表示执行节约内存版的计算方式,否则执行普通LR分解
%如果执行op=1,则所求的单位下三角存在A的下三角部分(不含对角线),所求的上三角矩阵R存储在A的上三角部分(包含对角线)
n=size(A,2);
for i=1:n
    Z=det(A(1:i-1,1:i-1));
    if Z==0
         fprintf('Factorization is impossible')
    end
end

if op==1

    A(1,:)=A(1,:);
    A(2:end,1)=A(2:end,1)/A(1,1);
    for r=2:n

        for j=r:n
        A(r,j)=A(r,j)-A(r,1:r-1)*A(1:r-1,j);
        end

        for i=r+1:n
        A(i,r)=(A(i,r)-A(i,1:r-1)*A(1:r-1,r))/A(r,r);
        end
    end
else

    R=zeros(size(A));
    L=eye(size(A));
    R(1,:)=A(1,:);
    L(2:end,1)=A(2:end,1)/A(1,1);

for r=2:n
    for j=r:n
        R(r,j)=A(r,j)-L(r,1:r-1)*R(1:r-1,j);
    end

    for i=r+1:n
        L(i,r)=(A(i,r)-L(i,1:r-1)*R(1:r-1,r))/R(r,r);
    end
end
end

LDR分解代码

function [L,D,Rn]=myLDR(A,op)
%op是一个数值,op=1表示执行节约内存版的计算方式,否则执行普通分解
%{
   
如果执行节约内存的计算方式,那么得到的矩阵仍然记作A。
A的下三角(不含对角线)是L的下三角元素(不含对角线)
A的对角元是对角阵D的对角元
A的上三角(不含对角线)是R的上三角元素(不含对角线)
%}
n=size(A,2);
if op==1
    A=myLR(A,1);
    for i=1:n-1
        for j=i+1:n
            A(i,j)=A(i,j)/A(i,i);
        end
    end
    A
else
    [A,L,R]=myLR(A,2);
    for i=1:n
    D(i,i)=R(i,i);
    end
    for i=1:n
    Rn(i,i)=1;
    end
    for i=1:n-1
        for j=(i+1):n
        Rn(i,j)=R(i,j)/R(i,i);
        end
    end
end

例子

A1=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值