matlab 用LU分解求解线性方程组——代码记录

转自http://www.cnblogs.com/wangshide/archive/2011/12/09/2282641.html


求解Ax=d的解x

1. LU分解

%  file : myLU.m
function [L,U] = myLU(A)
% 实现对矩阵A的LU分解,L为下三角矩阵
A
[n,n] = size(A);
L = zeros(n,n);
U = zeros(n,n);
for  i = 1 :n
     L(i,i) = 1 ;
end
for  k = 1 :n
     for  j = k:n
         U(k,j) = A(k,j) - sum (L(k, 1 :k - 1 ). * U( 1 :k - 1 ,j)');
     end
     for  i = k + 1 :n
         L(i,k) = (A(i,k) - sum (L(i, 1 :k - 1 ). * U( 1 :k - 1 ,k)')) / U(k,k);
     end
end

2. 用分解获得的L,U求解x

 

[L,U] =  myLU(A)
 
[n,m] = size(A)
 
y( 1 ) = d( 1 );
for  i = 2 :n   
     for  j = 1 :i - 1
         d(i) = d(i) - L(i,j) * y(j);
     end
     y(i) = d(i);
end
 
x(n) = y(n) / U(n,n);
for  i = (n - 1 ): - 1 : 1
     for  j = n: - 1 :i + 1
         y(i) = y(i) - U(i,j) * x(j);
     end
     x(i) = y(i) / U(i,i);
end
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值