高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现

  • 代码
  • 运行
  • 手算例题

迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的计算规则得到不同的迭代法。

迭代法:求解大型稀疏线性方程组的常用方法,保持矩阵的稀疏性。

本文是常用的迭代法之一:Gauss-Seidel 迭代法解线性方程组的matlab实现。

关于Jacobi迭代法的具体内容和算法见《数值计算方法》—丁丽娟,P67-68

书中算法如下:


代码编写同上图

代码

//  输入量:
A: 线性方程组的系数矩阵(n*n,非奇异)
b: 方程组右边的常数项列向量
n: 方程组维数
x0: 初始值
tol: 精度上限值
N:  最大迭代次数//迭代终止标准
已达精度上限值或者到达最大迭代次数//输出量:
x:线性方程组的解
// 程序
function x=Gauss_Seidel_fun(A,b,n,x0,tol,N)
x=zeros(n,1);  % 给x赋值
k=1;
while k<Nfor i=1:nif i==1x(1)=(b(1)-A(1,2:n)*x0(2:n))/A(1,1);elseif i==nx(n)=(b(n)-A(n,1:n-1)*x(1:n-1))/A(n,n);elsex(i)=(b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x0(i+1:n))/A(i,i)       end  endif norm(x-x0)<tolbreak;endx0=x;k=k+1;disp(['when k=',num2str(k)])disp('x=');disp(x);                       %输出中间结果
endif k==Ndisp('迭代次数已到达上限!');
end
disp(['迭代次数 k=',num2str(k)])end

代码可以看出G-S迭代法和Jacobi迭代法区别只在于G-S迭代时用旧分量代替新分量,计算时须按顺序进行

运行

运行示例的线性方程组:《数值计算方法》—丁丽娟 P-66 例一

//  Command Window 中输入
>> A=[10 -1 -2;-1 10 -2;-1 -1 5];
>> b=[72;83;42];
>> n=3;
>> x0=[0;0;0];
>> tol=1e-4;
>> N=500;// 输入后,调用函数
>>x=jacobi_fun(A,b,n,x0,tol,N)

运行结果如下:

迭代的中间过程其中一小部分见下图:

注:选取tol精度上限值不同,迭代次数略有变化。

手算例题

维数低,迭代次数少时,可以直接手算,如下:

G-S:减少了存储量,但要求顺序计算

高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现相关推荐

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

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

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

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

  3. 数值计算方法 线性方程组的数值解法(4)---向量和矩阵范数(norm) 高斯-赛德尔(Gauss-Seidel)迭代、共轭梯度(Conjugate Gradient)迭代

    (范数部分matlab有现成函数,若有需要直接参照matlab_norm) 向量范数 设x∈Rn\boldsymbol x\in \boldsymbol R^nx∈Rn则范数||x||满足:∣∣x∣∣ ...

  4. 高斯—赛德尔求解线性方程+C代码

    高斯-赛德尔迭代求矩阵特征值公式如下: 举例: 实现代码: #include "stdio.h" #include "stdlib.h" #include &q ...

  5. matlab约当消去法,Gauss消去法解线性方程组(Matlab)

    clear;clc; % Gauss消去法解线性方程组 A=[3 -5 6 4 -2 -3 8; 1 1 -9 15 1 -9 2; 2 -1 7 5 -1 6 11; -1 1 3 2 7 -1 - ...

  6. 三种迭代法解方程组(雅可比Jacobi、高斯-赛德尔Gaisi_saideer、逐次超松弛SOR)

    分析用下列迭代法解线性方程组 4 -1 0 -1 0 0       0 -1 4 -1 0 -1 0        5 0 -1 4 -1 0 -1        -2 -1 0 -1 4 -1 0 ...

  7. matlab中用高斯-赛德尔(Gauss-Seidel)迭代法解线性方程组

    原理 矩阵形式: %GS迭代法矩阵形式 clear; clc; a=[4,-1,0,-1,0,0;-1,4,-1,0,-1,0;0,-1,4,-1,0,-1;-1,0,-1,4,-1,0;0,-1,0 ...

  8. 高斯-赛德尔(Gauss-Seidel)迭代法求解线性方程组matlab程序设计

    算法步骤 例题 程序代码 function x=GaussSeidel(A,b,x0,eps,N) n=length(b); if nargin<5N=500; end if nargin< ...

  9. 【深入浅出强化学习原理入门】高斯-赛德尔(Gauss-Seidel)迭代法

    基于模型的动态规划方法中,使用高斯-赛德尔迭代算法求解值函数. 这种迭代算法到底是怎么求解线性方程组的,文章迭代法求解线性方程组给出了非常详细的解释. 但理解该文还需要了解相关的基础知识: 1.范数 ...

最新文章

  1. React Native——react-navigation的使用
  2. javascript删除元素节点
  3. ubuntu开启端口_RChain节点运行无门槛教程(二)--Windows-Ubuntu
  4. mqtt 传文件断开连接的原因_MQTT PythonClient断开连接不当
  5. 在床上玩手机,千万不能把手机放下!
  6. 一篇文章彻底搞懂“分布式事务”
  7. JavaScript Tip之:用和||来模拟if-else
  8. ANSI X9.8标准 PIN xor PAN获取PIN BlOCK
  9. 喜庆:上周阅读量5W,超过了99%的C友
  10. Centos下安装Scrapy
  11. java voip 的sip服务器搭建_用ASTERISK搭建自己的免费VOIP服务器
  12. 数据处理(二):wgs84坐标的UTM投影
  13. 蓝宝石rx580怎么超频_【蓝宝石 RX580 8G D5 超白金 OC 显卡使用总结】游戏|界面|按钮|频率_摘要频道_什么值得买...
  14. php 图片抠图,php抠图教程(混合模式+剪切蒙版)
  15. php 用户控件,一个使用用户控件(包括组件)的演示-.NET教程,组件控件开发
  16. 使用gsds绘制基因结构图_基因结构图的绘制
  17. CentOS6.5启动MariaDB错误
  18. xp系统显示无打印机服务器,XP共享打印机时提示“工作站服务没有启动”的原因和解决方案...
  19. 找众数的算法代码c语言,寻找众数算法
  20. “AI颜狗”来啦!第一眼看到照片,就能预测人们对你的第一印象

热门文章

  1. MYSQL主从部署(Censo:6)
  2. uniapp中picker及默认组件改国际化
  3. 【实验报告】微处理器原理与应用 CPUHomework1.2 上篇【掌握DEBUG基本命令及其功能 查看CPU和内存 用机器指令和汇编指令编程】
  4. 心情手札——光头日记
  5. 第一章 计算机系统基础知识(1)
  6. 为什么低代码治好了CIO们的 “精神内耗” ?
  7. java面试题-需要背的内容
  8. 私链多节点的创建部署
  9. 国内外FPGA主要厂商和其主要芯片代表汇总
  10. Swift上写百度地图记录