matlab行阶梯变换,LU

 

                lu函数厂商代码
 1 function [L,U,x]=lux(A,b)
 2 %LU 分解法解线性方程组(列主元LU分解)
 3 [n,n]=size(A);
 4 p=eye(n);%p记录了选择主元时候所进行的行变换
 5 for k=1:n-1
 6      [r,m]=max(abs(A(k:n,k)));  %选列主元
 7      m=m+k-1;
 8      if(A(m,k)~=0)
 9          if(m~=k)
10              A([k m],:)=A([m k],:);
11              p([k m])=p([m k]);
12         end
13         for i=k+1:n    
14              A(i,k)=A(i,k)/A(k,k);
15              j=k+1:n;              A(i,j)=A(i,j)-A(i,k)*A(k,j);
16         end
17     end
18 end
19 L=tril(A,-1)+eye(n,n);
20 U=triu(A);
21 %解下三角矩阵 Ly=b
22  newb=p*b;
23  y=zeros(n,1);
24 for k=1:n
25     j=1:k-1;
26     y(k)=(newb(k)-L(k,j)*y(j))/L(k,k);
27 end 
28 %解上三角方程组  Ux=y
29 x=zeros(n,1);
30 for k=n:-1:1
31      j=k+1:n;
32      x(k)=(y(k)-U(k,j)*x(j))/U(k,k);
33 end
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值