高斯-赛德尔迭代算法(C++实现) - Go语言中文社区

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


  • 问题描述

输入:系数矩阵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()
{
    //最大迭代次数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<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;
    }
}

  • 运行截图


版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_39559641/article/details/81051863
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-27 12:23:45
  • 阅读 ( 1261 )
  • 分类:算法

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢