【计算方法笔记】矩阵分解求解线性方程组
来源:互联网 发布:js获取客户端端口号 编辑:程序博客网 时间:2024/05/18 00:36
一般有Doolittle分解和Crout分解。
Doolittle分解
将系数矩阵A分解为单位下三角阵(L)和上三角矩阵(U)
Crout分解
将系数矩阵A分解为单位上三角阵和下三角矩阵
原理:根据矩阵乘法推导
Doolittle分解,分解的矩阵保存到原系数矩阵,减少内存
clear;A=[5,7,9,10;6,8,10,9;7,10,8,9;5,7,6,5];[n,cl]=size(A);b=[26;18;22;9];% disp(b(4));列向量行向量都可以用数组方式()访问for i=1:n for j=1:n if(i<=j) A(i,j)=A(i,j)-A(i,1:i-1)*A(1:i-1,j); %L单位下三角阵 else A(i,j)=(A(i,j)-A(i,1:j-1)*A(1:j-1,j))/A(j,j); %U上三角阵 end endend%LUx=b%Ly=b先解y,再解ux=y,再解xy=zeros(4,1);for i=1:n y(i,1)=b(i,1)-A(i,1:i-1)*y(1:i-1,1);end%利用matlab矩阵可以用冒号迭代,减少代码数量x=zeros(4,1);for i=n:-1:1 x(i,1)=(y(i,1)-A(i,i+1:n)*x(i+1:n,1))/A(i,i);end
针对特殊系数矩阵(对角占优的三对角矩阵),Crout分解,此为追赶法。
方便计算记住:
L对角元(i,i)=A对角元(i,i)-A对角元左边(i,i-1)*A对角元上面(i-1,i)
U次对角元(i,i+1)=A(i,i+1)/A对角元(i,i)
A=[2,1,0,0;1,4,1,0;0,1,4,1;0,0,1,2];b=[-3;6;14;2];[n,cl]=size(A);x=zeros(4,1); %将A分解成二对角元的下三角矩阵L和二对角元的上三角矩阵U,若U对角元为1则为Crout分解 A(1,2)=A(1,2)/A(1,1); for i=2:n A(i,i)=A(i,i)-A(i,i-1)*A(i-1,i); if(i<=n-1) A(i,i+1)=A(i,i+1)/A(i,i); end end %解LUx=b,先解Ly=b,再解Ux=b; x(1)=b(1)/A(1,1); for i=2:n x(i)=(b(i)-A(i,i-1)*x(i-1))/A(i,i); end x(n)=x(n); for i=n-1:-1:1 x(i)=x(i)-A(i,i+1)*x(i+1); end format rat;%以分数展示结果 %format解除分数显示 disp(A); disp(x);
阅读全文
0 0
- 【计算方法笔记】矩阵分解求解线性方程组
- LUP分解求解线性方程组及求逆矩阵 java
- 矩阵的LU分解求解线性方程组(C++实现)
- 【计算方法笔记】列高斯消元法解线性方程组
- 求解线性方程组之LU分解
- 求解线性方程组之Cholesky分解
- 计算方法:矩阵三角分解法解线性方程组
- 求解这个矩阵形式的HTML5线性方程组
- 矩阵分解 (特征值/奇异值分解+SVD+解齐次/非齐次线性方程组)
- matlab 用LU分解求解线性方程组——代码记录
- 数值计算-线性方程组求解(1)-LU分解-MATLAB实现
- 求解线性方程组
- 线性方程组求解
- 求解线性方程组
- 计算方法-全主元高斯消元法解线性方程组(Matlab)
- Matlab线性方程组求解
- 求解线性方程组--追赶法
- 求解线性方程组--Jacobi迭代法
- 条件运算符 ? :
- <C语言经典100例>c40 自守数
- java提高篇(45)--Java解析XML汇总
- Python 切割(split())
- 第六章图像滤波 方向滤波器边缘检测
- 【计算方法笔记】矩阵分解求解线性方程组
- 梯度下降算法推导(笔记)
- sql server建表时怎么设置ID字段自增
- php培训学习记录 第六、七天
- 跳跃的杰克(51nod 1615)
- Java学习日志
- Python数据挖掘入门与实践(四)——亲和性分析
- js rowspan
- ubuntu使用shadowsocks-qt5代理