#include <bits/stdc++.h>
#define MAXSIZE 100
using namespace std;
int main() {
double A[MAXSIZE][MAXSIZE], x[MAXSIZE], b[MAXSIZE];
int n;
double e;
cout << "请输入原方程组的阶数: ";
cin >> n;
cout << "请输入原方程组的增广矩阵: ";
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> A[i][j];
}
cin >> b[i];
}
cout << "请输入初始迭代向量: ";
for (int i = 0; i < n; i++) {
cin >> x[i];
}
cout << "请输入误差上限: ";
cin >> e;
while (true){
int flag = 0;
for (int i = 0; i < n; i++) {
double temp = x[i];
x[i]=0;
for (int j = 0; j < n; j++) {
if (j!=i)
x[i]+= -A[i][j]*x[j];
}
x[i] = (x[i]+b[i])/A[i][i];
if (fabs(x[i]-temp) < e)
flag++;
}
if (flag==n)
break;
}
for (int i = 0; i < n; i++) {
cout << x[i] << " ";
}
}
c/c++|解线性方程组的迭代法(高斯-赛德尔迭代法)
最新推荐文章于 2023-05-14 17:00:59 发布