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

  • 运行示例:

  • 源码:
#include<iostream>
#include<iomanip>
#define MAX 10
using namespace std;int main(void)
{double a[MAX][MAX];   //二维数组存储原始方程组的增广矩阵int row, col;cout << "请输入增广矩阵行数:";   //行数,即方程个数cin >> row;cout << "请输入增广矩阵列数:";   //列数,包含常数项cin >> col;cout << endl;//增广矩阵输入提示,按行输入for (int i = 1; i <= row; i++){cout << "请输入增广矩阵第" << i << "行的元素:";for (int j = 1; j <= col; j++){cin >> a[i][j];}cout << endl;}//对元素进行处理for (int i = 1; i <= row; i++){for (int j = 1; j <= col; j++){if (i != j && j != col){a[i][j] /= -a[i][i];   //非行列坐标相等的元素除以负行列坐标相等的元素}if (j == col){a[i][j] /= a[i][i];   //常数项除以行列相等的元素}}}//对a[1][1]、a[2][2]......赋值为0for (int i = 1; i <= row; i++){a[i][i] = 0;}double b[MAX]; //记录每次迭代后的值//迭代初值cout << "请输入迭代初值:";for (int i = 1; i < col; i++)   //用数组b记录每次迭代后的x的值,用于下次迭代{cin >> b[i];}int N;   //允许的最大迭代次数cout << "请输入最大迭代次数:";cin >> N;double accuracy;   //精度double error = 0;   //相邻两次迭代结果的误差cout << "请输入精度:";cin >> accuracy;for (int i = 1; i <= N; i++)   //最多允许迭代N次{cout << "第" << i << "次迭代:";int count = 1;   //用count控制迭代值按每行col-1个输出,即自变量个数输出for (int j = 1; j <= row; j++)   //每一次迭代(i),求取每一行的行列坐标相等的值即a[j][j]{double item;   //中间变量for (int k = 1; k <= col; k++)   //j循环一次,j循环col次,求得a[j][j]{if (j == k)   //如果j=k,继续{continue;}if (k != col)   //如果j不等于k且不等于常数项的下标{item = a[j][k] * b[k];   //则每一项等于系数与对应迭代初值的乘积}else{item = a[j][col];   //j=col即常数项下标时,直接加上常数项,不对常数项处理}a[j][j] += item;   //累加item,求的a[1][1],a[2][2]......}cout << "\t\t" << a[j][j] << "\t\t";  //输出a[1][1],a[2][2]......error = abs(a[count][count] - b[count]);  //相邻两次迭代结果的偏差b[count] = a[count][count];  //更新b[]里的值为本次迭代结束的值a[count][count] = 0;   //赋a[1][1],a[2][2]......值为0,避免拥有初值影响下一次迭代结果if (count % (col - 1) == 0)   //控制元素输出个数cout << endl;count++;}if (error <= accuracy)   //解符合精度要求,直接结束迭代过程{break;}if (error > accuracy && i <= N)     //解不符合精度要求但未超过最大迭代次数,继续迭代{ continue;}else   //超过最大迭代次数,输出提示{cout << "达到允许的最大迭代次数,未找到符合精度要求的根!" << endl;}        }
}

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

  1. MATLAB实现雅可比与高斯塞德尔迭代

    概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,无返回值,解得x向量直接显示在命令行窗口,同时绘制出x向量的收敛曲线. A = [ 2 − 1 1 1 1 1 1 1 − 2 ] b = ...

  2. 雅可比(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 ...

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

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

  4. 方程组求解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 ...

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

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

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

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

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

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

  8. 运用雅可比(Jacobi)和高斯-赛德尔(GS公式)求解方程组

    实验名称: 运用雅克比和高斯赛德尔公式求解方程组 实验目的: a. 比较两种方法的收敛速度 b. 验证收敛条件的正确性 实验内容 1.比较两种方法的收敛速度 Jacobi公式原理 xi(k+1)=1a ...

  9. 高斯--塞德尔迭代法求方程组的解(Python实现)

    数值分析题目 求方程组 {5x1+2x2+x3=−12−x1+4x2+2x3=202x1+−3x2+10x3=2\left\{ \begin{array}{c} 5x_1+2x_2 + x_3 = - ...

最新文章

  1. python的gui库哪个好_常用的13 个Python开发者必备的Python GUI库
  2. GoAhead2.5源代码分析之6-访问验证(security.c)
  3. tensorflow量化策略详解
  4. js调用php和php调用js的方法举例
  5. 高性能、高并发、高扩展性和可读性的网络服务器架构:StateThreads
  6. Mybatis Generator生成工具使用
  7. Jupyter notebook中怎么添加Pytorch运行环境
  8. VBScript基础教程之一什么是 VBScript
  9. CUDA学习笔记(三)
  10. 你知道吗?世界上绝美神奇的25条路
  11. fetch_lfw_people相关
  12. 猿大师VLC播放程序播放RTSP实时视频提示“系统找不到指定文件”
  13. 赢富、超赢TopView SuperView TotalView 数据网站
  14. 吕 思 伟 ---- 潘 爱 民 :: ATL 介 绍( 二 )
  15. windows平台基础工作软件整理【持续更新】
  16. 【STM32】IO引脚复用器和映射原理与配置
  17. c语言中chat的使用方法图解,Mechat
  18. 功耗大好还是小好_热设计功耗高好还是低好 - 卡饭网
  19. 广东迅视资管 中国移动物联网连接数超10.8亿
  20. 字符编码转换类(支持多国语言)

热门文章

  1. Xcode官方直接下载地址(离线下载)
  2. 王者转号仅显示可转移的服务器,王者可以跨系统转移账号了,需要花99,大家怎么看?...
  3. 树莓派linux怎么连接wifi,树莓派Zero W 设置wifi网络和ssh
  4. Opencv_10 图像的透视变换
  5. SpringCloud第11讲:用Nacos远程管理配置
  6. linux 修改文件明,linux修改文件名你肯定不知道可以这样操作
  7. tars C++ docker 环境配置
  8. 企业哪些地方需要计算机等级证,计算机二级证书的含金量高吗 有哪些地方用得到...
  9. Python画图如何显示各点横纵坐标(x, y)?
  10. 在PyCharm中集成Vue开发