⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cholesky.m

📁 Cholesky分解 Matlab程序 关于科学计算方法
💻 M
字号:
%正定矩阵的Cholesky分解
function[]=Cholesky(input)
[m,n]=size(input);
if m~=n  %判断输入的矩阵是不是方阵
    disp('输入的矩阵不是方阵,请重新输入');
    return;
end
for i=1:n  %判断输入的矩阵是不是对称矩阵
    for j=1:n
        if input(i,j)~=input(j,i)
            disp('输入的方阵不是对称矩阵,请重新输入');
            return;
        end
    end
end
d=eig(input); %根据方阵的特征值判定是不是正定矩阵
for i=1:n
    if d(i)<=0
        disp('输入的矩阵不是正定矩阵,请重新输入');
        return;
    else
        break;
    end
end
disp('输入的矩阵可以进行Cholesky分解'); %如果是正定矩阵,可以进行下面的分解操作
L(1,1)=sqrt(input(1,1)); %确定第1列元素
for i=2:n
    L(i,1)=input(i,1)/L(1,1);
end
sum1=0;
for j=2:n-1  %确定第j列元素
    for k=1:j-1
        sum1=sum1+L(j,k)^2;
    end
    L(j,j)=sqrt(input(j,j)-sum1);
    sum1=0;
    for i=j+1:n
        for k=1:j-1
        sum1=sum1+L(i,k)*L(j,k);
        end
        L(i,j)=(input(i,j)-sum1)/L(j,j);
    end
    sum1=0;
end
for k=1:n-1  %确定第n列元素
    sum1=sum1+L(n,k)^2;
end
L(n,n)=sqrt(input(n,n)-sum1);
L
L'
disp('验证结果:L*L');
L*L'
%验证分解是否正确
    disp('请验证Cholesky分解正确(是/否)?');
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -