简单迭代法求解线性方程组(附C++)

您所在的位置:网站首页 迭代循环公式程序 简单迭代法求解线性方程组(附C++)

简单迭代法求解线性方程组(附C++)

2024-07-05 15:05| 来源: 网络整理| 查看: 265

首先了解一下什么事简单迭代法:

        简单迭代法,也称为雅可比迭代法,是一种用于求解线性方程组的迭代方法。其基本思想是通过不断迭代更新一个初始解向量,直到解向量收敛到方程组的解。

在代码中,简单迭代法的实现步骤如下:

初始化解向量: 在迭代过程中,需要一个初始的解向量,通常可以初始化为全0向量。

进行迭代: 在每次迭代中,通过对每个方程进行计算,更新解向量的值。

计算误差: 在每次迭代中,计算当前解向量与上一次迭代得到的解向量之间的差,以判断迭代是否收敛。

判断收敛: 如果误差足够小,即解向量的变化小于设定的阈值(EPSILON),则认为迭代已经收敛,退出迭代。

简单迭代法的迭代公式如下:

[ x_i^{(k+1)} = \frac{b_i - \sum_{j \neq i} a_{ij} x_j^{(k)}}{a_{ii}} ]

其中,( x_i^{(k)} ) 表示第 ( k ) 次迭代中解向量的第 ( i ) 个分量的值,( a_{ij} ) 是系数矩阵 ( A ) 中第 ( i ) 行第 ( j ) 列的元素,( b_i ) 是右端向量 ( b ) 中的第 ( i ) 个分量的值。

在每次迭代中,通过这个公式可以计算出新的解向量中每个分量的值。不断迭代直到满足收敛条件。

下面是简单迭代法求解n元一次线性方程组的C++代码:

#include #include #include using namespace std; // 定义一个常量,表示迭代的最大次数 const int MAX_ITERATIONS = 100; // 定义一个较小的数,作为迭代收敛的判断标准 1乘以10的负6次方,即0.000001 const double EPSILON = 1e-6; // 简单迭代法求解n元一次线性方程组 vector solveLinearEquations(vector& A, vector& b) { int n = A.size(); vector x(n, 0); // 初始化解向量为全0 // 进行迭代 for (int iter = 0; iter < MAX_ITERATIONS; ++iter) { vector x_new(n, 0); // 保存迭代后的新解向量 double max_error = 0; // 保存本次迭代中的最大误差 // 对每个方程进行迭代 for (int i = 0; i < n; ++i) { double sum = 0; for (int j = 0; j < n; ++j) { if (i != j) { sum += A[i][j] * x[j]; } } // 计算新的解向量中第i个分量的值 x_new[i] = (b[i] - sum) / A[i][i]; // 计算本次迭代中的最大误差 max_error = max(max_error, abs(x_new[i] - x[i])); } // 更新解向量 x = x_new; // 每一轮迭代结果 cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3