标签:
(一)线性方程组求解
包含n个未知数,由n个方程构成的线性方程组为:
其中
一、直接求解法
1、左除法
x=A\b;
如果A是奇异的,或者接近奇异的。MATLAB会发出警告信息的。
2、利用矩阵的分解来求解线性方程组(比单单进行左除速度快)
(1)LU分解
LU分解就是分解成一个交换下三角矩阵(也就是说进行一定的操作后才是下三角矩阵)和一个上三角矩阵(不需要变换)的乘积形式。只要A是非奇异的,就可以进行LU分解。
MATLAB提供的LU分解函数对于矩阵进行LU分解:
[L,U]=lu(X); %X必须是方阵
[L,U,P]=lu(X); %PX=LU。X必须是方阵
实现LU分解之后,线性方程组Ax=b的解就为x=U\(L\b)或x=U\(L\Pb)、
(2)QR分解
QR分解就是分解成一个正交矩阵Q和一个上三角矩阵R的乘积形式。只要A是非奇异的,就可以进行LU分解。QR只能对方阵进行分解。
[Q,R]=qr(X); %X=QR
[Q,R,E]=qr(X); %XE=QR
实现QR分解之后,解为x=R\(Q\b)或x=E(R\(Q\b))。
(3)Cholesky分解
如果X是正定的。则将矩阵分解成一个下三角矩阵和上三角矩阵的乘积。上三角矩阵为R,下三角矩阵为其转置,X=R’R.
MATLAB进行CHolesky分解方法:
R=chol(X); [R,p]=chol(X); %p=0则为正定矩阵,返回一个R,或者p为一个正整数q=p-1,满足R‘R=X(1:q,1:q)
则线性方程组的解为x=R\(R’\b)
二、迭代法求解
标签:
原文地址:http://www.cnblogs.com/BlueMountain-HaggenDazs/p/4293798.html