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

  • 问题描述

高斯-赛德尔迭代算法(C++实现)_第1张图片

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

输出:解向量

  • 基本公式


  • 流程图

高斯-赛德尔迭代算法(C++实现)_第2张图片

  • 算法实现
#include 
#include 

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()
{
    //最大迭代次数N
    int N;
    //初始向量,误差限e
    double 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

  • 运行截图

高斯-赛德尔迭代算法(C++实现)_第3张图片

你可能感兴趣的:(线性方程迭代法,数值分析,计算方法,高斯-赛德尔,C++)