矩阵LDL T 分解与Cholesky 分解:
()2020,m i n (,)-2,T ij ij A LDL Cholesky i i j i j i j αα?==?=?≠?
求矩阵的分解与分解,其中
。 矩阵的LDLT 消去函数的程序代码:
%矩阵的LDLT 分解
function [s,l,d]=ldlt(a)
s=1;l=0;d=0;
%判断矩阵是否对称
if a~=a' %矩阵不对称,输出错误信息
s=0;
else
b=diag(a); %列向量b 存放矩阵a 的对角元素,矩阵D 的元素也放在该向量 n=size(a,1); %矩阵a 维数n
for k=1:n
b(k)=b(k)-(a(k,1:k-1).^2)*b(1:k-1);
if ~b(k) %如果矩阵D 的对角元素出现0,出现错误,停止计算
s=0;
break
else %进行递推
a(k+1:n,k)=(a(k+1:n,k)-a(k+1:n,1:k-1)*(b(1:k-1).*a(k,1:k-1)'))/b(k); end
end
if s
l=tril(a)-diag(diag(a))+diag(b);
d=diag(b);
end
end
矩阵的Cholesky 消去函数程序代码:
%矩阵的cholesky 分解
function [s,g]=cholesky(a)
s=1;g=0;
%判断矩阵是否对称正定
if a~=a'|min(eig(a))<=0 %矩阵不是对称正定,输出错误信息
s=0;
else %矩阵对称正定
n=size(a,1); %矩阵a 维数n
a(1,1)=a(1,1)^(1/2);
for i=2:n
for j=1:i-1
a(i,j)=(a(i,j)-a(i,1:j-1)*a(j,1:j-1)')/a(j,j); %对角线下方元素计算