MATLAB线性方程组的求解

直接法

高斯消去法

列主元消去法

矩阵的三角分解法

(1)利用左除运算符的直接解法,
x=A\b如果矩阵A是奇异的或接近奇异的,会警告
(2)利用矩阵分解求解线性方程组
LU分解
[L,U]=lu(A):产生一个上三角阵U和一个变换形式的下三角阵L,使之满足A=LU。注意,A必须是方阵
[L,U,P]=lu(A) 产生一个上三角阵U和一个变换形式的下三角阵P,使之满足PA=LU。注意,A必须是方阵
QR分解
Cholesky分解

迭代法

雅可比迭代法

Ax=b A可以分解成D-L-U D为对角阵 L为下三角阵取反 U为上三角阵取反
求解公式为x=D-1(L+U)x+D-1b
与之对应的迭代公式为:x(k+1)=D-1(L+U)x(k)+D-1b

function [y,n]=jacobi(A,b,x0,ep)     %系数矩阵 右端列向量  迭代初值   精度
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
B=D\(L+U);
f=D\b;
y=B*x0+f;
n=1;
while norm(y-x0)>=ep
    x0=y;
    y=B*x0+f;
    n=n+1;
end

高斯-赛德尔迭代方法

Dx(k+1)=(L+U)x(k)+b
Dx(k+1)=Lx(k+1)+Ux(k)+b
(D-L)X(k+1)=Ux(k)+b
x(k+1)=(D-L)-1Ux(k)+(D-L)-1b
B=(D-L)-1U,f=(D-L)-1b >x(k+1)=Bx(k)+f

    function[y,n]=gauseidel(A,b,x0,ep)
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
B=(D-L)\U;
f=(D-L)\b;
y=B*x0+f;
n=1;
while norm(y-x0)>=ep
    x0=y;
    y=B*x0+f;
    n=n+1;
end

注意:在使用迭代法时要考虑方程组是否收敛,那种收敛速度快,那种收敛速度慢,集体问题具体分析

发布了22 篇原创文章 · 获赞 5 · 访问量 414
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览