矩阵分解之matlab,MATLAB 矩阵分解算法大全

(1)LU 分解法程序:function x=solvebyLU(A,b)

% 该函数利用LU分解法求线性方程组Ax=b的解

flag=isexist(A,b); %调用第一小节中的isexist函数判断方程组解的情况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'; % 解Ux=y得原方程组的一个特解

x0(r)=y(r)/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; %取k=[k1,k2...,];

end

x=x0;

for i=1:nZ

x=x+k(i)*Z(:,i); %将方程组的通解表示为特解加对应齐次通解形式

end

end

end

(2)矩阵的QR分解法(c语言):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值