solvebychol.m

来自「MATLAB科学计算与工程分析源代码源程序4」· M 代码 · 共 29 行

M
29
字号
function x=solvebyCHOL(A,b)
% 该函数利用Cholesky分解法求线性方程组Ax=b的解
% 编写日期:2007-5-14

lambda=eig(A);
if lambda>eps&isequal(A,A')
    [n,n]=size(A);
    R=chol(A);
    
    %解R'y=b
    y(1)=b(1)/R(1,1);
    if n>1
        for i=2:n
            y(i)=(b(i)-R(1:i-1,i)'*y(1:i-1)')/R(i,i);
        end
    end
    
    %解Rx=y
    x(n)=y(n)/R(n,n);
    if n>1
        for i=n-1:-1:1
            x(i)=(y(i)-R(i,i+1:n)*x(i+1:n)')/R(i,i);
        end
    end
    x=x';
else
    x=[];
    disp('该方法只适用于对称正定的系数矩阵!');
end   

⌨️ 快捷键说明

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