楚列斯基分解法解方程組matlab程式?

簡介

楚列斯基鳳姐發只適用於係數矩陣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

相關問題答案