簡介
楚列斯基鳳姐發只適用於係數矩陣A是對稱正定的情況。
方法/步驟
先將矩陣A進行楚列斯基分解:A=R'R;
然後接R'y=b;
最後解Rx=y,得到原方程組的接。下面給出利用楚列斯基分解法求解線性方程組Ax=b的函式。
function x=solvebyCHOL(A,b)
% 該函式利用Cholesky分解法求線性方程組Ax=b的解
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
舉例應用
>> A=[3 3 -3;3 5 -2; -3 -2 5];
>> b=[1 2 3]';
>> x=solvebyCHOL(A,b)
x =
10/3
-2/3
7/3
>> A*x %驗證解的正確性
ans =
1
2
3