【原创】LU分解求解线性方程组Matlab代码
[*]function =lusolve(A,b)
[*]% LU分解求解线性方程组Ax=b
[*]%
[*]% 参数说明
[*]% A,b:方阵A满足前n-1阶顺序主子式不为零,b为非零列向量
[*]% x:方程组根
[*]% L,U:L为单位下三三角阵,U的上三角阵(Doolittle分解),满足A=LU,
[*]%
[*]% LU分解的说明:
[*]% 方阵A满足前n-1阶顺序主子式不为零**** Hidden Message *****
[*]% 则A经过行变换的得到一个上三角阵U,而初等行变换相当于左乘一个初等矩阵L,故A可分解为A=LU,
[*]% 其中L或U为下或上三角矩阵,可以证明LU分解不唯一
[*]%
[*]% 如果L为单位下三角阵,U为上三角阵,那么称为Doolittle分解
[*]% 如果L为下三角阵,U为单位上三角阵,那么称为Crout分解
[*]%
[*]% 可以证明Doolittle和Crout分解满足唯一性
[*]%
[*]% LU分解程组的思路:
[*]% Ax=(LU)x=L(Ux)=Ly=b,其中x,y,b都是列向量
[*]% 先求解方程Ly=b,计算出y,然后通过Ux=y求解x
[*]%
[*]% 对A进行Doolittle分解
[*]=Doolittle(A);
[*]% 调用trimatrix()求解Ly=b
[*]y=trimatrix(L,b,'L');
[*]% 调用trimatrix求解Ux=y
[*]x=trimatrix(U,y,'U');
[*]
学习一下……
学习一下……
学习一下……
学习一下……
学习一下……
学习一下……
学习一下……
学习一下……
学习一下……