矩阵分解-LU分解

矩阵分解-LU分解

矩阵分解

矩阵分解
矩阵分解是将矩阵拆解为数个矩阵的乘积,可分为三角分解、满秩分解、QR分解、Jordan分解和SVD(奇异值)分解等。

三角分解法是将原正方矩阵分解成一个上三角形矩阵或是排列 的上三角形矩阵和一个 下三角形矩阵,这样的分解法又称为LU分解法。它的用途主要在简化一个大矩阵的行列式值的计算过程,求逆矩阵,和求解联立方程组。不过要注意这种分解法所得到的上下三角形矩阵并非唯一,还可找到数个不同 的一对上下三角形矩阵,此两三角形矩阵相乘也会得到原矩阵。

一、程序

可采用如下命令:
MATLAB内置lu分解法, 其语法为[L,U]=lu(A)。
[L,U]=lu(A):产生一个上三角阵U和一个变换形式的下三角阵L(行交换),使之满足A=LU。注意,这里的矩阵A必须是方阵。
[L,U,P]=lu(A):产生一个上三角阵U和一个下三角阵L以及一个置换矩阵P,使之满足PA=LU。当然矩阵A同样必须是方阵。
(设P 是一个 m×n 的(0,1) 矩阵,如 m≤n且P*P′=E,则称 P为一个m×n的置换矩阵。)
实现LU分解后,线性方程组Ax=b的解x=U(Lb)或x=U(LPb)。

也可采用如下程序:
function x=DecomLU(A,b)
flag=isexist(A,b);
if flag==0
disp(‘该方程组无解!’);
x=[];
return;
else
r=rank(A);
[m,n]=size(A);
[L,U,P]=lu(A);
y(1)=b(1);
if m>1
for i=2:m
y(i)=b(i)-L(i,1:i-1)*y(1:i-1)’;
end
end
y=y’;
x0®=y®/U(r,r);
if r>1
for i=r-1: -1:1
x0(i)=(y(i)-U(i,i+1:r)*x0(i+1:r)’)/U(i,i);
end
end
x0=x0’;
if flag ==1
x=x0;
return;
else
format rat;
Z=null(A,‘r’);
[mZ,nZ]=size(Z);
x0(r+1:n)=0;
for i=1:nZ
t=sym(char([107 48+i]));
k(i)=t;
end
x=x0;
for i=1:nZ
x=x+k(i)*Z(:,i);
end
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值