
Cholesky.m文件:
function [L,X] = Cholesky(A,b) % 先分解 n=size(A,1); L=zeros(n); L(1,1:n)=A(1,1:n); L(2:n,2:n)=A(2:n,2:n); for i=1:1:n L(i,i)=sqrt(L(i,i)); u=zeros(1,n-i); for j=i+1:1:n L(i,j)=L(i,j)/L(i,i); u(1,j-i)=L(i,j); end U=u'*u; L(i+1:n,i+1:n)=L(i+1:n,i+1:n)-U; end L=triu(L); % 求X X = zeros(n,1); Y = zeros(n,1); for j=1:n Y(j) = (b(j)-L(j,1:j-1)*Y(1:j-1))/L(j,j); end L = L'; for k=n:-1:1 X(k)=(Y(k)-L(k,k+1:n)*X(k+1:n))/L(k,k); end
控制台输入:
>> A = [2,1,-5,1;1,-5,2,7;0,2,1,-1;1,7,-1,-4]; >> b = [13;-9;6;0]; >> [L,X] = Cholesky(A,b);
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228395.html原文链接:https://javaforall.net
