全选主元的高斯-若当消去法求逆矩阵的数学依据如下:
列选主元其实就不用恢复这一步骤。
全选主元代码
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
bool gjinv(double *a, int n) {
//d用于全选主元过程
//t用于存储各种临时数据
double d, t;
//i用于遍历时的行号
//j用于遍历时的列号
//p,q用于存储标号
//js用于存储全选主元元素的行号
//k用于表示第几次操作
int i, j, p, q, k, *js, *is;
js = new int[n];
is = new int[n];
double *c = new double[2 * n*n];
//构造增广矩阵
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
c[i * 2 * n + j] = a[i*n + j];
}
for (j = n; j < 2 * n; j++) {
if (j - n == i) {
c[i * 2 * n + j] = 1;
}
else c[i * 2 * n + j] = 0;
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < 2 * n; j++) {
cout <<setw(6)<<fixed<<left<<setprecision(2)<< c[i * 2 * n + j] << " ";
}
cout << endl;
}
//消元过程
for (k = 0; k < n; k++) {
//全选主元
{
d = 0.0;
for (i = k; i < n; i++) {
for (j =