数值分析-线性方程迭代解法
雅可比、高斯迭代
#include<iostream>
using namespace std;
void Gause(int square, float linear[3][3],float b[3]) {
float x[3] = { 0,0,0 };
cout << "k";
for (int j = 0; j < square; j++) {
cout << "\t" << "x[" << j << "]";
}
cout << endl;
for (int loop = 0; loop < 10; loop++) {
cout << loop;
for (int i =0; i < square; i++) {
float sum = 0;
for (int j = 0; j <square; j++) {
if(i!=j)
sum += linear[i][j]*x[j];
}
x[i] = (b[i] - sum) / linear[i][i];
cout << "\t" << x[i];
}
cout << endl;
}
return;
}
void Jacobi(int square, float linear[3][3], float b[3]) {
float x[3] = { 0,0,0 };
float sum[3] = { 0,0,0 };
cout << "k";
for (int j = 0; j < square; j++) {
cout << "\t" << "x[" << j << "]";
}
cout << endl;
for (int loop = 0; loop < 10; loop++) {
cout << loop;
for (int i = 0; i < square; i++) {
sum[i] = 0;
for (int j = 0; j < square; j++) {
if (i != j)
sum[i] += linear[i][j] * x[j];
}
}
for (int i = 0; i < 3; i++) {
x[i] = (b[i] - sum[i]) / linear[i][i];
cout << "\t" << x[i];
}
cout << endl;
}
return;
}
void gauseaccelerate(int square, float linear[3][3], float b[3],float w) {
float x[3] = { 0,0,0 };
cout << "k";
for (int j = 0; j < square; j++) {
cout << "\t" << "x[" << j << "]";
}
cout << endl;
for (int loop = 0; loop < 10; loop++) {
cout << loop;
for (int i = 0; i < square; i++) {
float sum = 0;
for (int j = 0; j < square; j++) {
if (i != j)
sum += linear[i][j] * x[j];
}
x[i] = w*x[i]+(1-w)*(b[i] - sum) / linear[i][i];
cout << "\t" << x[i];
}
cout << endl;
}
return;
}

浙公网安备 33010602011771号