使用Matlab实现:Jacobi、Gauss-Seidel迭代

  • 例题
  • Jacobi迭代
  • Gauss-Seidel迭代

例题

方程组 { 5 x 1 + 2 x 2 + x 3 = − 12 − x 1 + 4 x 2 + 2 x 3 = 20 2 x 1 − 3 x 2 + 10 x 3 = 3 \begin{cases} 5x_1 + 2x_2 + x_3 = -12\\ -x_1 + 4x_2 + 2x_3 = 20\\ 2x_1 - 3x_2 + 10x_3 = 3\\ \end{cases} ⎩⎪⎨⎪⎧​5x1​+2x2​+x3​=−12−x1​+4x2​+2x3​=202x1​−3x2​+10x3​=3​ 求解,当 m a x ∣ x i ( k + 1 ) − x i ( k ) ∣ ≤ 1 0 − 5 max|x_i^{(k + 1)} - x_i^{(k)}| \leq 10^{-5} max∣xi(k+1)​−xi(k)​∣≤10−5 时候迭代终止。

以下解答过程,上标表示迭代次数,下标表示序号。

Jacobi迭代

定义变量:
D = d i a g ( a 11 , a 22 , . . . , a n n ) , L = [ 0 − a 21 0 . . . − a i 1 . . . − a i , i − 1 0 . . . − a n 1 . . . − a n , i − 1 . . . − a n , n − 1 0 ] , U = [ 0 − a 12 . . . − a 1 , i . . . − a 1 , n . . . 0 − a i − 1 , i . . . − a i − 1 , n . . . 0 − a n − 1 , n . . . 0 ] D = diag(a_{11}, a_{22}, ..., a_{nn}),\\ L = \left[\begin{array}{cccccc} 0\\ -a_{21} & 0\\ ...\\ -a_{i1} & ... & -a_{i,i-1} & 0\\ ...\\ -a_{n1} & ... & -a_{n,i-1} & ... & -a_{n,n-1} & 0\\ \end{array}\right],\\ U = \left[\begin{array}{cccccc} 0 &-a_{12} & ... & -a_{1,i} & ... & -a_{1,n}\\ ...\\ & & 0 & -a_{i-1,i} & ... & -a_{i-1,n}\\ ...\\ & & & & 0 & -a_{n-1,n}\\ ...\\ & & & & & 0\\ \end{array}\right] D=diag(a11​,a22​,...,ann​),L=⎣⎢⎢⎢⎢⎢⎢⎡​0−a21​...−ai1​...−an1​​0......​−ai,i−1​−an,i−1​​0...​−an,n−1​​0​⎦⎥⎥⎥⎥⎥⎥⎤​,U=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡​0.........​−a12​​...0​−a1,i​−ai−1,i​​......0​−a1,n​−ai−1,n​−an−1,n​0​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤​

其矩阵迭代形式为:
x ( k + 1 ) = B J ⋅ x ( k ) + f J B J = D − 1 ⋅ ( L + U ) , f J = D − 1 ⋅ b x^{(k+1)} = B_J \cdot x^{(k)} + f_J\\ B_J = D^{-1} \cdot (L + U), \quad f_J = D^{-1} \cdot b x(k+1)=BJ​⋅x(k)+fJ​BJ​=D−1⋅(L+U),fJ​=D−1⋅b。

写出分量形式:

{ x 1 ( k + 1 ) = 1 5 ( − 12 − 2 x 2 ( k ) − x 3 ( k ) ) x 2 ( k + 1 ) = 1 4 ( 20 + x 1 ( k ) − 2 x 3 ( k ) ) x 3 ( k + 1 ) = 1 10 ( 3 − 2 x 1 ( k ) + 3 x 2 ( k ) ) \begin{cases} x_1^{(k + 1)} = \frac15 (-12 - 2 x_2^{(k)} - x_3^{(k)} )\\ x_2^{(k + 1)} = \frac14 (20 + x_1^{(k)} - 2x_3^{(k)} )\\ x_3^{(k + 1)} = \frac1{10} (3 - 2 x_1^{(k)} + 3x_2^{(k)} )\\ \end{cases} ⎩⎪⎨⎪⎧​x1(k+1)​=51​(−12−2x2(k)​−x3(k)​)x2(k+1)​=41​(20+x1(k)​−2x3(k)​)x3(k+1)​=101​(3−2x1(k)​+3x2(k)​)​

写成矩阵形式:

[ x 1 ( k + 1 ) x 2 ( k + 1 ) x 3 ( k + 1 ) ] = [ 0 − 0.4 − 0.2 0.25 0 − 0.5 − 0.2 0.3 0 ] ⋅ [ x 1 ( k ) x 2 ( k ) x 3 ( k ) ] + [ − 2.4 5 0.3 ] \left[\begin{array}{c} x_1^{(k + 1)}\\ x_2^{(k + 1)}\\ x_3^{(k + 1)}\\ \end{array}\right] = \left[\begin{array}{cccc} 0 & -0.4 & -0.2\\ 0.25 & 0 & -0.5\\ -0.2 & 0.3 & 0\\ \end{array}\right] \cdot \left[\begin{array}{c} x_1^{(k)}\\ x_2^{(k)}\\ x_3^{(k)}\\ \end{array}\right] + \left[\begin{array}{c} -2.4\\ 5\\ 0.3\\ \end{array}\right] ⎣⎢⎡​x1(k+1)​x2(k+1)​x3(k+1)​​⎦⎥⎤​=⎣⎡​00.25−0.2​−0.400.3​−0.2−0.50​⎦⎤​⋅⎣⎢⎡​x1(k)​x2(k)​x3(k)​​⎦⎥⎤​+⎣⎡​−2.450.3​⎦⎤​

取初始向量: x 0 = ( 0 , 0 , 0 ) T x^0 = (0, 0, 0)^T x0=(0,0,0)T,依次按照上式进行迭代。使用Matlab进行编程求解。

a=[0,-0.4,-0.2;0.25,0,-0.5;-0.2,0.3,0];
b = [-2.4;5;0.3];
x = [0;0;0];
xx = a * x + b;
i = 0;
while norm(x - xx, inf) >= 1e-5x = xx;xx = a * x + b;i = i +1;
end

以上代码,最终 x = x i , x x = x ( i + 1 ) x = x^{i}, xx = x^{(i + 1)} x=xi,xx=x(i+1) ,最终迭代次数位 i + 1 i + 1 i+1 次,如果你需要看到更长的小数位置,可以使用以下Matlab代码,表示使用15位浮点或定点数。

format long g

运行结果为:

即精确解为 x = ( − 4 , 3 , 2 ) T x = (-4,3,2)^T x=(−4,3,2)T 。

Gauss-Seidel迭代

其矩阵迭代形式为:
x ( k + 1 ) = B G ⋅ x ( k ) + f G B G = ( D − L ) − 1 ⋅ U , f G = ( D − L ) − 1 ⋅ b x^{(k+1)} = B_G \cdot x^{(k)} + f_G\\ B_G = (D - L) ^{-1} \cdot U, \quad f_G = (D - L) ^{-1} \cdot b x(k+1)=BG​⋅x(k)+fG​BG​=(D−L)−1⋅U,fG​=(D−L)−1⋅b

使用Matlab编程求解:

d = [5,0,0;0,4,0;0,0,10];
l = [0,0,0;1,0,0;-2,3,0];
u = [0,-2,-1;0,0,-2;0,0,0];
b = [-12;20;3];
t = inv(d - l);
bg = t * u;
fg = t * b;
x = [0;0;0];
xx = [-2.4;4.4;2.1];
i = 0;
while norm(x - xx, inf) >= 1e-5x = xx;xx = bg * x + fg;i = i +1;
end

运行结果为:

同样求得精确解为 x = ( − 4 , 3 , 2 ) T x = (-4,3,2)^T x=(−4,3,2)T 。

使用Matlab实现:Jacobi、Gauss-Seidel迭代相关推荐

  1. 数值计算大作业:Jacobi与Gauss -Seidel迭代求解线性方程组(Matlab实现)

    作为研究生的入门课,数值计算的大作业算是所有研究生开学的重要编程作业. 我把Jacobi与Gauss -Seidel迭代求解线性方程组的数值计算作业在MATLAB中编程实现.具体的程序详细标注后放在文 ...

  2. 高斯—赛德尔(Gauss - Seidel)迭代法解线性方程组(Matlab程序)

    %---高斯-赛德尔迭代法----- %---Gauss - Seidel iteration method clear;clc; % A=[10,-1,-2;-1,10,-2;-1,-1,5]; % ...

  3. jacobi matlab程序,jacobi迭代法实验MATLAB程序数值分析

    jacobi迭代法实验MATLAB程序数值分析 例1. 求线性方程组 得近似解.精确解为x*=[3,2,1]'. 解:对方程进行移项就得 记为Ax=b,或写为x=B0 x+f,其中 取初始值,代入原方 ...

  4. 六、线性方程组求解--Jacobi和Gauss-Seidel迭代求解

    六.线性方程组求解-Gauss消去.Jacobi和Gauss-Seidel迭代求解 1.消去法求解原理 求解Ax = b,首先对增广矩阵(A|b)进行初等行变换为如下三种矩阵对角阵.上三角阵.下三角阵 ...

  5. matlab编jacobi方法,jacobi迭代法matlab

    h Matlab 线性方程组的迭代解法(Jacobi 迭代法 Gauss-Seidel 迭代法)实验报告 2008年11月09日 星期日 12:49 1.熟悉 Jacobi 迭代法,并编写 Matla ...

  6. C语言实现高斯-赛德尔迭代gauss seidel(附完整源码)

    实现C语言高斯-赛德尔迭代gauss seidel 高斯-赛德尔迭代gauss seidel的完整源码(实现,main函数测试) 高斯-赛德尔迭代gauss seidel的完整源码(实现,main函数 ...

  7. Jacobi 和 Gauß-Seidel 迭代方法

    Jacobi 和 Gauß-Seidel 迭代方法 这两种方法是求解线性方程组Ax = b 的方法.即使用迭代方式在已知A和b的情况下,如何求解x. Jacobi 方法 取任意x向量作为初值,迭代即可 ...

  8. 分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yyywww666/article/details/42805071 算法介绍(迭代法介绍): 代码C ...

  9. 分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组

    算法介绍(迭代法介绍): 代码C语言实现; # include<stdio.h> # include<math.h> # define N 6 /* *使用雅可比迭代法和高斯- ...

最新文章

  1. jquery easyui datagrid 排序列
  2. 如何获取NumPy数组中N个最大值的索引?
  3. 误删除Exchange默认的会议室如何恢复?
  4. 这位电子工程师,你不能错过。
  5. 牛客题霸 [合并两个有序的数组] C++题解/答案
  6. [HNOIAHOI2018] 转盘(线段树维护单调栈)
  7. 《走遍中国》珍藏版(十一)
  8. opencv:灰色和彩色图像的像素直方图及直方图均值化的实现与展示
  9. 提交表单到弹出窗口 Submit a form into a popup
  10. OpenShift 4 MTC - 从 OpenShift 3 向 OpenShift 4 迁移应用
  11. golang for循环时修改自身的值
  12. 用python代码将原图转化为手绘图
  13. Python智能对话机器人实现
  14. 基于onvif协议的嵌入式设备(摄像头)开发(客户端)
  15. 上古卷轴ol服务器正在维护,上古卷轴ol服务器在哪 | 手游网游页游攻略大全
  16. 两道2016年美国高中数学竞赛题
  17. mysql分表 ---Merge
  18. 第三章微分中值定理与导数应用
  19. 自贸港有志青年,捂碳星球旧衣回收项目,成功引起团中央的重视
  20. HP V3500简要拆机流程

热门文章

  1. 时序数据库基本概念学习
  2. python:shape和reshape函数基本讲解
  3. Bitwig Studio 4.0.1 x64 Windows+Linux 音乐制作宿主软件
  4. python pdf分割_Python分割PDF
  5. AltiumDesigner如何绘制PCB封装
  6. 爬虫(2)之re 爬取淘宝网
  7. GestureOverlayView
  8. ACP slave interface 学习
  9. 全球与中国便携式USB摄像机市场现状及未来发展趋势(2022)
  10. Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法...