矩陣的Cholesky分解的Matlab實現

2021-09-14 05:18:25 字數 1042 閱讀 5686

1.cholesky分解在matlab裡面有專門的函式chol(其呼叫格式為:r=chol(x))這一函式功能就不介紹了,但有些場合只能用最基礎的函式,所以,下面給出cholesky分解的最基礎形式。

%cholesky分解法

function [x]=m_chol(a,b)

[n,n]=size(a);

x=zeros(n,1);

y=zeros(n,1);

for i=1:n

a(i,i)=sqrt(a(i,i)-a(i,1:i-1)*a(i,1:i-1)');

if a(i,i)==0

'a is singular. no unique solution'

break

end

for j=i+1:n

a(j,i)=(a(j,i)-a(j,1:i-1)*a(i,1:i-1)')/a(i,i);

end

end

a b

%前代法

for j=1:n

y(j)=(b(j)-a(j,1:j-1)*y(1:j-1))/a(j,j);

end

y %

a=a'

for k=n:-1:1

x(k)=(y(k)-a(k,k+1:n)*x(k+1:n))/a(k,k);

end

如果矩陣x是對稱正定的,則cholesky分解將矩陣x分解成乙個下三角矩陣和上三角矩陣的乘積。設上三角矩陣為r,則下三角矩陣為其轉置,即x=r』r。

另外,cholesky分解可能出現非正定問題, [r,p]=chol(x):這個命令格式將不輸出出錯資訊。當x為對稱正定的,則p=0,r與上述格式得到的結果相同;否則p為乙個正整數。如果x為滿秩矩陣,則r為乙個階數為q=p-1的上三角陣,且滿足r』r=x(1:q,1:q)。 實現cholesky分解後,線性方程組ax=b變成r『rx=b,所以x=r(r』\b)。

2.下面給出兩個部落格講解

(1)cholesky原理:

(2)c語言實現方式:

矩陣分解 Cholesky分解

矩陣分解是將矩陣拆解為數個矩陣的乘積,可分為三角分解 滿秩分解 qr分解 jordan分解和svd 奇異值 分解等。cholesky分解法是求解對稱正定線性方程組最常用的方法之一。可採用如下命令 r chol a 產生乙個上三角陣r,使r r a。若a為非對稱正定,則輸出乙個出錯資訊。r,p cho...

矩陣的分解

matlab中有這個恒等式 a triu a,1 tril a,1 diag diag a 將矩陣分解為乙個上三角陣 下三角陣和乙個對角陣。測試如下 format compact a 1 2 3 4 5 6 7 8 9 a 1 2 3 4 5 6 7 8 9 u triu a,1 u 0 2 3 0...

矩陣的Crout分解

本函式將乙個滿秩方陣按crout方式分解 function l,u crout a b size a b 1 行 b 2 列 n b 1 這裡只處理n n的非奇異矩陣 錯誤檢查 if b 1 b 2 非方陣錯誤 error matlab crout input matrix should be a ...