01-线性方程组求解
% 第六节-数值微分与方程求解
% 01-线性方程组求解
% 1、直接法
% 2、迭代法
% 线性方程组的直接解法
% 高斯(Gauss)消去法
% 列主元消去法
% 矩阵的三角分解法
% 1、利用左除运算符的直接求法
% Ax=b ---> x=A\b 即 x=inv(A)*b
% 但是 必须保证 |A|!=0
% eg
% 2x1+x2-5x3+x4=13
% x1-5x2+7x4=-9
% 2x2+x3-x4=6
% x1+6x2-x3-x4=0
A=[2,1,-5,1; %建立A矩阵
1,-5,0,7;
0,2,1,-1;
1,6,-1,-4]
b=[3,-9,6,0]' %建立b向量,这里是列向量
x1=A\b %求解x
x2=inv(A)*b %等价的 x1=x2 ,不建议用逆矩阵求解,增加计算机运算量
% 利用矩阵分解求解线性方程组
% LU分解
% QR分解
% Cholesky分解
% MATLAB的LU分解函数
% [L,U]=lu(A): 产生一个上三角阵U和一个变换形式的下三角
% 阵L,使之满足A=LU。注意,这里的矩阵A必须是方阵。
%[L,U,P]=lu(A):产生-一个上三角阵U和一个下三角阵L以及一
%个置换矩阵P,使之满足PA=LU。同样,矩阵A必须是方阵。
% eg 利用LU 分解求解线性方程组
A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]
b=[13,-9,6,0]' % b是列向量,末尾加【'】变成列向量
[L,U]=lu(A) % 对A矩阵进行分解
x3=U\(L\b) % 极大提高解析效率
% 或者使用:
[L,U,P]=lu(A)
x4=U\(L\P*b)
%线性方程组的迭代求解法
% 1、雅可比( Jacobi)迭代法
% 原理 Ax=b
% A=D-L-U --> (D-L-U)x=b
% 注:D为对角线元素形成的矩阵
% L为主对角线以下元素的取反(前面加负号)形成的矩阵
% U为主对角线以上元素的取反(前面加负号)形成的矩阵
% x=D^(-1)(L+U)x+D^(-1)b
% x(k+1)=D^(-1)(L+U)x(k)+D^-1*b --> B=D^(-1)(L+U), f=D^(-1)b
% x(k+1)=Bx(k)+f
% 2、高斯赛德尔( Gauss-Serdel)迭代法
% 可以自己去了解一些
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv13719