栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

使用迭代法(雅可比Jacobi与高斯-赛德尔Gausss-Seidel迭代法)和直接求解法(消元法)求解线性方程组(C++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用迭代法(雅可比Jacobi与高斯-赛德尔Gausss-Seidel迭代法)和直接求解法(消元法)求解线性方程组(C++)

分别使用迭代法(Jacobi与Gausss-Seidel迭代法)和直接求解法(消元法)求解线性方程组:

要求:使误差不超过。

目录

一、雅可比迭代(Jacobi)

二、高斯-赛德尔(Gausss-Seidel)迭代

三、高斯消去法(顺序高斯消去法)

一、雅可比迭代(Jacobi)
  • 迭代公式:

  • 代码:
#include
#include
#include
using namespace std;
int n=4;
double A[4][4]={7.2,2.3,-4.4,0.5,
				1.3,6.3,-3.5,2.8,
				5.6,0.9,8.1,-1.3,
				1.5,0.4,3.7,5.9};//定义系数矩阵 
double B[4]={15.1,1.8,16.6,36.9};//定义行数列矩阵 
double X0[4]={0};//定义迭代初值 
double e=pow(10,-8);//定义精度 
double C[4][5];//定义迭代公式中的各项系数矩阵 
double X[4];//定义结果数组 
void Jacobi();//定义雅可比函数 
void Matrix();//定义求迭代公式中的各项系数矩阵的函数 
bool Accuracy(double x1,double x2,double x3,double x4);//定义判断是否满足精度的函数 
void output();//定义输出函数 
int main()
{
	Matrix();//求迭代公式中的各项系数矩阵的函数
	cout<<"雅可比迭代:"< 

二、高斯-赛德尔(Gausss-Seidel)迭代
  • 迭代公式:

  • 代码:
#include
#include
#include
using namespace std;
int n=4;
double A[4][4]={7.2,2.3,-4.4,0.5,
				1.3,6.3,-3.5,2.8,
				5.6,0.9,8.1,-1.3,
				1.5,0.4,3.7,5.9};//定义系数矩阵 
double B[4]={15.1,1.8,16.6,36.9};//定义行数列矩阵 
double X0[4]={0};//定义迭代初值 
double e=pow(10,-8);//定义精度 
double C[4][5];//定义迭代公式中的各项系数矩阵 
double X[4];//定义结果数组 
void Gauss();//定义高斯-赛德尔函数 
void Matrix();//定义求迭代公式中的各项系数矩阵的函数 
bool Accuracy(double x1,double x2,double x3,double x4);//定义判断是否满足精度的函数 
void output();//定义输出函数 
int main()
{
	Matrix();//求迭代公式中的各项系数矩阵的函数
	cout<<"高斯-赛德尔迭代:"< 

三、高斯消去法(顺序高斯消去法)
  • 计算步骤:

1)消元过程:

设,对计算

2)回代过程:

代码:

#include
#include
#include
using namespace std;
int n=4;
double A[4][5]={7.2,2.3,-4.4,0.5,15.1, 
				1.3,6.3,-3.5,2.8,1.8,
				5.6,0.9,8.1,-1.3,16.6,
				1.5,0.4,3.7,5.9,36.9};//定义矩阵数组 
double Ans[4]={0}; //定义答案数组 
void Elimination();//消元法 
void output();//定义输出函数 
int main()
{
	cout<<"消元法:"<=0;j--)
	A[i][j]+=-A[i][k]/A[k][k]*A[k][j];//消元过程 
	for(i=n-1;i>=0;i--)//回代过程 
	{
		Ans[i]=A[i][n]/A[i][i];
		for(j=n-1;j>=0;j--)
		if(i!=j)
		Ans[i]+=-A[i][j]/A[i][i]*Ans[j];
	}
}

void output()//输出函数
{
	int i;
	cout<<"结果为:"< 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号