概述

用MATLAB编程实现,形成m函数文件。输入A,b矩阵,无返回值,解得x向量直接显示在命令行窗口,同时绘制出x向量的收敛曲线。
A = [ 2 − 1 1 1 1 1 1 1 − 2 ] b = [ 1 1 1 ] A=\begin{bmatrix} 2&-1&1\\1&1&1\\1&1&-2\end{bmatrix} b=\begin{bmatrix} 1\\1\\1\end{bmatrix} A=⎣⎡​211​−111​11−2​⎦⎤​b=⎣⎡​111​⎦⎤​

高斯塞德尔方法

代码

function [] = gaussseidel(A,b)
%高斯塞德尔迭代法
G=-(diag(diag(A))+tril(A,-1))\triu(A,1);
R=max(abs(eig(G)));
if(R>=1)disp('Gauss-Seidel is not work');
elsedisp('Gauss-Seidel is going well');disp('x vector:')d1=(diag(diag(A))+tril(A,-1))\b;x=zeros(size(b));for k=1:100x(:,k+1)=G*x(:,k)+d1;if(max(abs(x(:,k+1)-x(:,k)))<10^-4)break;endenddisp(x(:,k+1));e=1:k+1;plot(e,x,'- o');xlabel('generations');ylabel('vector_x');
end
end

结果

A=[2 -1 1;1 1 1;1 1 -2];b=[1;1;1];
gaussseidel(A,b);
Gauss-Seidel is going well
x vector:
0.6667
0.3333
0

可见,高斯塞德尔方法收敛且成功求出结果。

雅可比方法

代码

function [] = jacobi(A,b)
%雅可比迭代法
B=-(diag(diag(A)))\(tril(A,-1)+triu(A,1));
R=max(abs(eig(B)));
if(R>=1)disp('Jacobi is not work');
elsedisp('Jacobi is going well');disp('x vector:')d1=diag(diag(A))\b;x=zeros(size(b));for k=1:100x(:,k+1)=B*x(:,k)+d1;if(max(abs(x(:,k+1)-x(:,k)))<10^-4)break;endenddisp(x(:,k+1));e=1:k+1;plot(e,x,'- o');xlabel('generations');ylabel('vector_x');
end
end

结果

A=[2 -1 1;1 1 1;1 1 -2];b=[1;1;1];
jacobi(A,b)
Jacobi is not work
可见,雅可比方法不收敛。

代码思路

首先判断收敛性

判断迭代矩阵的谱半径的上界是否小于1。
若大于1则结束程序。

迭代求解

高斯塞德尔迭代矩阵

G = − D − 1 ( L + U ) G=-D^{-1}(L+U) G=−D−1(L+U)
x ( k + 1 ) = G x ( k ) + d 1 x^{(k+1)}=Gx^{(k)}+d_{1} x(k+1)=Gx(k)+d1​

雅可比迭代矩阵

B = − ( D + L ) − 1 U B=-(D+L)^{-1}U B=−(D+L)−1U
x ( k + 1 ) = B x ( k ) + d 1 x^{(k+1)}=Bx^{(k)}+d_ {1} x(k+1)=Bx(k)+d1​
每次迭代后判断
∣ x k + 1 − x k ∣ < 1 0 − 4 |x^{k+1}-x^k|<10^{-4} ∣xk+1−xk∣<10−4
结果为“真”跳出迭代循环,输出迭代末尾x向量。并绘出收敛曲线。

MATLAB实现雅可比与高斯塞德尔迭代相关推荐

  1. [计算机数值分析]高斯-塞德尔迭代公式解线性方程组

    在雅可比迭代公式的基础上,对于收敛的迭代过程,所求出的"新值"常比"老值"更准确些,因此可以用它替代老值作进一步的计算,这样的思想就是著名的高斯-塞德尔迭代公式 ...

  2. 解线性方程组的迭代法(雅可比、高斯-塞德尔迭代法)

    Agui_GS.m: function x=Agui_GS(A,b) %方程Ax=b,x0为初始向量 %e为精度,N为最大迭代次数 n=length(b); N=100; e=1e-4; x0=zer ...

  3. 雅可比(Jacobi)及高斯-塞德尔(Gauss_Seidel)迭代法求解线性方程组的matlab现实

    雅可比迭代法的实现代码: function X=Jacobi(A,B,P,delta,max1) %Input -A is a X*N nosingular matrix % -B is a N*1 ...

  4. 基于高斯塞德尔方法的超松弛迭代法MATLAB实现

    概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,与松弛因子 ω \omega ω,无返回值.设置精度要求 ε = 1 0 − 4 \varepsilon=10^{-4} ε=10−4.所 ...

  5. 计算方法:列主元消去法,LU分解法, 雅可比迭代法,高斯塞德尔迭代法 解线性方程(C++)

    Matrix.h包括矩阵类Matrix的定义,Matrix.cpp包括该类成员函数的实现,LinearEqu.h包括线性方程类LinearEqu的定义,继承自Matrix类,其中solve()方法为列 ...

  6. 方程组求解matlab实现(朴素高斯求解、LU分解、雅可比迭代方法、高斯-塞德尔方法、连续过松弛(SOR))

    朴素高斯求解 function x= oridinarygauss(a,b) n=length(b); for j=1:n-1for i=j+1:nmult=a(i,j)/a(j,j);for k=j ...

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

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

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

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

  9. 解线性方程组的迭代法(高斯-塞德尔迭代法)

    MATLAB函数文件 function x=Agui_GS(A,b) %方程Ax=b,x0为初始向量 %e为精度,N为最大迭代次数 n=length(b); N=100; e=1e-4; x0=zer ...

最新文章

  1. AVGCN:利用人类注意力引导的图卷积网络进行轨迹预测
  2. PMCAFF专访:搜狗effevo,这一次我们想连接“人”
  3. 【转载】数字签名是什么?
  4. js正则匹配闭合标签_正则匹配闭合HTML标签(支持嵌套)
  5. 鹰角网络全球海量数据,一键轻松统一存储与处理
  6. sql server 2005中的服务器角色[转]
  7. 计算机学office有必要吗,计算机二级office要学多久
  8. element-ui上传图片的使用upload
  9. Delphi2010新手学习(1)
  10. 快速地将SolidWorks模型导入Adams
  11. cad2016中选择全图字体怎么操作_一键完成CAD转PDF,CAD编辑,CAD打印,无奈没人知道这波骚操作!...
  12. “天鹅”类谜解大全!-
  13. SVG defs元素
  14. LINUX下简单实现ISP图像处理从RAW到RGB,BMP算法、RGB到JPEG库的使用(一)
  15. 【简易版】知网下载PDF硕博论文
  16. 修复XAMPP安装过程中 因端口80被占用 Apache无法启动的问题
  17. springboot项目之部署阿里云服务器--简版
  18. 微软说自己是互联网公司,我和我的小伙伴们都惊呆了
  19. iOS Main.string国际化不起作用
  20. STM32学习笔记01---使用仿真器下载程序

热门文章

  1. 基于OLT(实体、关系、标签)建模方法论的最佳实践 | StartDT Tech Lab 08
  2. 利达主机联网接线端子_利达主机怎么编辑中文 利达主机接线端子说明
  3. CSS样式内联选择器选择器优先级伪类顺序
  4. js之清除Cookie
  5. wps怎么把ppt里的字体一起保存_干货 | 如何快速导出PPT中的文字内容?
  6. 【设计模式】--解释器模式
  7. XXL-JOB原理--任务调度中心执行器注册(三)
  8. Ubuntu命令关机
  9. IT运维工作到底是做什么的?
  10. 2020京东春招笔试题目