• 问题描述

输入:系数矩阵A,最大迭代次数N,初始向量,误差限e

输出:解向量

  • 基本公式

  • 流程图

  • 算法实现
#include <iostream>
#include <iomanip>using namespace std;//定义系数矩阵
double a[50][50] = {0};
//定义x1解的数组
double rootX1[100];
//定义x2解的数组
double rootX2[100];
//定义x3解的数组
double rootX3[100];
//定义x1的迭代公式
double x1Iteration(double x2,double x3);
//定义x2的迭代公式
double x2Iteration(double x1,double x3);
//定义x3的迭代公式
double x3Iteration(double x1,double x2);
//核心算法,Gauss - Seidel 迭代法
void GaussSeidel(double x1,double x2,double x3,double e,int N);
//格式输出
void formatPrint(int N);int main()
{//最大迭代次数Nint N;//初始向量,误差限edouble x1,x2,x3,e;cout << "请分别输入系数矩阵A,最大迭代次数N,初始向量,误差限e" << endl;for(int i=0;i<3;i++){for(int j=0;j<3;j++){cin>>a[i][j];}}cin>>N>>x1>>x2>>x3>>e;GaussSeidel(x1,x2,x3,e,N);formatPrint(N);return 0;
}
//定义x1的迭代公式
double x1Iteration(double x2,double x3)
{return 0.72 + 0.1*x2 + 0.2 * x3;
}
//定义x2的迭代公式
double x2Iteration(double x1,double x3)
{return 0.83 + 0.1*x1 + 0.2*x3;
}
//定义x3的迭代公式
double x3Iteration(double x1,double x2)
{return 0.84 + 0.2*x1 + 0.2*x2;
}
//核心算法,Gauss - Seidel 迭代法
void GaussSeidel(double x1,double x2,double x3,double e,int N)
{rootX1[0] = x1;rootX2[0] = x2;rootX3[0] = x3;for(int i=0;i<N;i++){rootX1[i+1] = x1Iteration(rootX2[i],rootX3[i]);rootX2[i+1] = x2Iteration(rootX1[i+1],rootX3[i]);rootX3[i+1] = x3Iteration(rootX1[i+1],rootX2[i+1]);}
}
//格式输出
void formatPrint(int N){cout<<"--------------------------------------------------------"<<endl;cout<<"k     "<<"x1    "<<"x2     "<<"x3    "<<endl;for(int i=0;i<=N;i++){cout<<setiosflags(ios::fixed);cout<<setprecision(5)<<i<<" "<<rootX1[i]<<" "<<rootX2[i]<<" "<<rootX3[i]<<endl;}
}
  • 运行截图

高斯-赛德尔迭代算法(C++实现)相关推荐

  1. 高斯赛尔德c语言算法,高斯-赛德尔迭代法的算法及程序设计.doc

    PAGE 题 目:高斯-赛德尔迭代法的算法及程序设计 摘要 本文通过理论与实例对线性方程组的解法.收敛性及误差分析进行了探讨.在对线性方程组数值解法的讨论下用到了高斯-赛德尔迭代法,进一步研究和总结了 ...

  2. 高斯-赛德尔迭代法简介

    高斯-赛德尔迭代法是解线性方程组的常用迭代法之一,设线性方程组为 高斯-赛德尔迭代法的迭代公式为 当然,此处假定 ,在很多情况下,它比简单迭代法收敛快,它和简单迭代法的不同点在于计算  时,利用了刚刚 ...

  3. 2021-01-07 matlab数值分析 线性方程组的迭代解法 高斯-赛德尔迭代法

    matlab数值分析 线性方程组的迭代解法 高斯-赛德尔迭代法 Function [x,iter]=gs(A,b,tol) D=diag(diag(A)); L=D-tril(A); U=D-triu ...

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

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

  5. 强化学习1 高斯赛德尔迭代

    开始看<深入浅出强化学习--原理入门>,由于时间有限,做个简要的笔记. "深度学习如图像识别和语音识别解决的是感知问题,强化学习解决的是决策问题,人工智能的终极目标就是经过感知进 ...

  6. 图像处理(十一)高斯差分算法(边缘检测)

    高斯差分算法作用于边缘检测,是利用卷积核实现,考虑了各方权重,代码如下: import numpy as np import cv2path = 'test.jpg' image = cv2.imre ...

  7. 雅可比迭代,高斯-赛德尔迭代

    #include <stdio.h> #include <math.h>#define max_error 0.000125double data[3][4] = {{8,-3 ...

  8. 线性联立方程的高斯赛德尔迭代(Gauss-Seidel iteration)(python,数值积分)

    第九课 线性联立方程的高斯赛德尔迭代 在雅可比迭代中,{x}k+1(在上一课中被称为xnew)的所有分量都是使用{x}k(在上一课中为x)的分量推出的.因此,新的向量值完全是根据旧的向量值获得的. 然 ...

  9. 雅可比迭代和高斯—赛德尔迭代法

    一.雅可比迭代法 对于线性方程组AX=b,我们首先将系数矩阵A分解为对角矩阵D.下三角矩阵L和上三角矩阵U: 1.1雅可比迭代法的matlab代码 在这里,我们求解下面的带状方程(以下程序均是以求解该 ...

最新文章

  1. Redeclared ‘list_b‘ defined above without usage
  2. 九妹带你了解oracle
  3. 基于android的条码识别技术,基于Android手机的条码识别系统研究
  4. 在apache访问日志中统计统计前十名pv
  5. 「我去,这也能行!」令人惊叹的8个深度学习应用
  6. 使用TensorFlow训练神经网络进行价格预测
  7. apache camel_在WildFly中将Apache Camel和Spring添加为jboss模块
  8. c语言画爱心附带解释,用C语言画一个“爱心”
  9. Android应用程序消息处理机制
  10. 错误提示:error LNK2001: unresolved external symbol public: static int person::weight (?weight@person@@
  11. oracle设置默认值为当前时间_把锁屏密码设置成当前时间,随时间永远变动!
  12. [洛谷P2370]yyy2015c01的U盘
  13. 面试没过的程序员都到哪去了?
  14. php生成流水号,生成唯一流水号
  15. android+反编译加广告,追书神器Android版,反编译去广告基本教程
  16. 萤石摄像头实现web端监控预览以及录像回放
  17. 苹果手机备份有必要吗_苹果手机备份最简单方式!原来大神都这样做
  18. 李维看 .net 和 DELPHI 6 (含李维照片) (转)
  19. 宋宝华: 僵尸进程的成因以及僵尸可以被“杀死”吗?
  20. Android/Linux Kernel 内存管理-入门笔记

热门文章

  1. Tableau图表 | 3、区域图/面积图/折线图
  2. Linux Ubuntu快捷键技巧
  3. nvm 管理 node 版本
  4. 想破解游戏协议?你知道客户端和服务器是怎么通信的?我来告诉你怎么定义的
  5. 计算机二级考试python+C语言通过记录
  6. 【Java攻城狮宝典】04-for循环
  7. Python高级编程——13.垃圾回收机制
  8. 产品运营人员常用的5款软件,解决远程办公问题
  9. [新] 入手树莓派后要做的一些事
  10. win10版本的共享网络,以及HP LaserJet 1020的共享打印机总结