此时我们只讨论当m==n时的情况,即n阶线性方程组,它的系数矩阵为n+1列为b。
note:
代码假设输入格式为n,代表n阶行列式,随后紧跟着n行,每行n+1个数,代表系数矩阵。
- 求精确解的方法:
1.1 高斯消元法:
//Gauss消元
#include <iostream>
using namespace std;
double matrix[20][21], x[20];
int n;
void print_matrix() {
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n+1; j++)
cout << matrix[i][j] << " ";
cout << endl;
}
cout << endl;
}
int main() {
//输入
cin >> n;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n+1; j++)
cin >> matrix[i][j];
print_matrix();
//消元过程
for(int i = 1; i <= n-1; i++) {
for(int j = i+1; j <= n; j++) {
//第j行
double l = matrix[j][i] / matrix[i][i];
cout << "l[" << j << "][" << i << "] = " << l << endl;
for(int k = i; k <= n+1; k++)//j行的每一个元素
matrix[j][k] = matrix[j][k] - l*matrix[i][k];
print_matrix();
}
}
//回代过程
for(int i = n; i >= 1; i--) {
double sum = 0;
for(int j = i+1; j <= n; j++)//求累加和
sum += matrix[i][j] * x[j];
x[i] = (matrix[i][n+1] - sum) / matrix[i][i];
}
for(int i = 1; i <= n; i++)
cout <<