Matlab实现Cholesky分解解方程组

function [x,res]=mych(A,b)
AA=A;[m,n]=size(A);
y=zeros(n,1);x=zeros(n,1);
for k=1:1:n
    A(k,k)=sqrt(A(k,k));
    A(1:k-1,k)=0;
    A(k+1:n,k)=A(k+1:n,k)/A(k,k);
    for j=k+1:n
        A(j:n,j)=A(j:n,j)-A(j:n,k)*A(j,k);
    end
end    
U=A';L=A;
    y(1,1)=b(1,1)/L(1,1);
for i=2:n
    s=0;
    for j=1:i-1
        s=s+y(j,1)*L(i,j);    
    end
    y(i,1)=(b(i,1)-s)/L(i,i);
end
x(n,1)=y(n,1)/U(n,n);
for i=n-1:-1:1
    s=0;
    for j=i+1:n
        s=s+U(i,j)*x(j,1);
    end
    x(i,1)=(y(i,1)-s)/U(i,i);
end
res=norm(b-AA*x);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值