[计算机数值分析]高斯-塞德尔迭代公式解线性方程组
在雅可比迭代公式的基础上,对于收敛的迭代过程,所求出的“新值”常比“老值”更准确些,因此可以用它替代老值作进一步的计算,这样的思想就是著名的高斯-塞德尔迭代公式。
如下图叙述:
- 运行示例:
- 源码:
#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;} }
}
[计算机数值分析]高斯-塞德尔迭代公式解线性方程组相关推荐
- MATLAB实现雅可比与高斯塞德尔迭代
概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,无返回值,解得x向量直接显示在命令行窗口,同时绘制出x向量的收敛曲线. A = [ 2 − 1 1 1 1 1 1 1 − 2 ] b = ...
- 雅可比(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 ...
- 基于高斯塞德尔方法的超松弛迭代法MATLAB实现
概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,与松弛因子 ω \omega ω,无返回值.设置精度要求 ε = 1 0 − 4 \varepsilon=10^{-4} ε=10−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 ...
- 计算方法:列主元消去法,LU分解法, 雅可比迭代法,高斯塞德尔迭代法 解线性方程(C++)
Matrix.h包括矩阵类Matrix的定义,Matrix.cpp包括该类成员函数的实现,LinearEqu.h包括线性方程类LinearEqu的定义,继承自Matrix类,其中solve()方法为列 ...
- 分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组(转载)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yyywww666/article/details/42805071 算法介绍(迭代法介绍): 代码C ...
- 分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组
算法介绍(迭代法介绍): 代码C语言实现; # include<stdio.h> # include<math.h> # define N 6 /* *使用雅可比迭代法和高斯- ...
- 运用雅可比(Jacobi)和高斯-赛德尔(GS公式)求解方程组
实验名称: 运用雅克比和高斯赛德尔公式求解方程组 实验目的: a. 比较两种方法的收敛速度 b. 验证收敛条件的正确性 实验内容 1.比较两种方法的收敛速度 Jacobi公式原理 xi(k+1)=1a ...
- 高斯--塞德尔迭代法求方程组的解(Python实现)
数值分析题目 求方程组 {5x1+2x2+x3=−12−x1+4x2+2x3=202x1+−3x2+10x3=2\left\{ \begin{array}{c} 5x_1+2x_2 + x_3 = - ...
最新文章
- python的gui库哪个好_常用的13 个Python开发者必备的Python GUI库
- GoAhead2.5源代码分析之6-访问验证(security.c)
- tensorflow量化策略详解
- js调用php和php调用js的方法举例
- 高性能、高并发、高扩展性和可读性的网络服务器架构:StateThreads
- Mybatis Generator生成工具使用
- Jupyter notebook中怎么添加Pytorch运行环境
- VBScript基础教程之一什么是 VBScript
- CUDA学习笔记(三)
- 你知道吗?世界上绝美神奇的25条路
- fetch_lfw_people相关
- 猿大师VLC播放程序播放RTSP实时视频提示“系统找不到指定文件”
- 赢富、超赢TopView SuperView TotalView 数据网站
- 吕 思 伟 ---- 潘 爱 民 :: ATL 介 绍( 二 )
- windows平台基础工作软件整理【持续更新】
- 【STM32】IO引脚复用器和映射原理与配置
- c语言中chat的使用方法图解,Mechat
- 功耗大好还是小好_热设计功耗高好还是低好 - 卡饭网
- 广东迅视资管 中国移动物联网连接数超10.8亿
- 字符编码转换类(支持多国语言)
热门文章
- Xcode官方直接下载地址(离线下载)
- 王者转号仅显示可转移的服务器,王者可以跨系统转移账号了,需要花99,大家怎么看?...
- 树莓派linux怎么连接wifi,树莓派Zero W 设置wifi网络和ssh
- Opencv_10 图像的透视变换
- SpringCloud第11讲:用Nacos远程管理配置
- linux 修改文件明,linux修改文件名你肯定不知道可以这样操作
- tars C++ docker 环境配置
- 企业哪些地方需要计算机等级证,计算机二级证书的含金量高吗 有哪些地方用得到...
- Python画图如何显示各点横纵坐标(x, y)?
- 在PyCharm中集成Vue开发