C语言高斯主元素消元法
时间: 2023-10-01 18:02:44 浏览: 87
高斯主元素消元法是一种线性方程组求解的方法,可以用来求解形如Ax=b的线性方程组,其中A是一个n×n的矩阵,b是一个n×1的向量。
高斯主元素消元法的基本思想是先通过消元操作将A化为上三角矩阵,然后通过回代操作求解出x。消元操作的过程中,每次选取一个主元素,将其所在列的元素消成0,以使得下一次选取的主元素更大,从而减小误差。具体的消元操作可以分为以下三个步骤:
1. 选取主元素。在第i次消元操作中,选取A[i][i]所在的行作为主元素行。
2. 消元。将A[i+1:n][i]所在的元素消成0,即将A[j][i](j=i+1到n)所在的行减去A[j][i]/A[i][i]乘以A[i][k](k=i到n)所在的行。
3. 回代。从最后一行开始,依次求解出x的值,即x[i]=(b[i]-ΣA[i][j]x[j])/A[i][i](j=i+1到n)。
下面是一个使用高斯主元素消元法求解线性方程组的C语言代码:
#include <stdio.h>
#define N 3
int main()
{
double A[N][N] = {{2, 1, -1}, {-3, -1, 2}, {-2, 1, 2}};
double b[N] = {8, -11, -3};
double x[N];
int i, j, k, p;
double max, temp, t;
// 高斯主元素消元
for (i = 0; i < N; i++) {
max = 0;
p = i;
for (j = i; j < N; j++) {
if (A[j][i] > max) {
max = A[j][i];
p = j;
}
}
if (p != i) {
for (j = i; j < N; j++) {
temp = A[i][j];
A[i][j] = A[p][j];
A[p][j] = temp;
}
temp = b[i];
b[i] = b[p];
b[p] = temp;
}
for (j = i+1; j < N; j++) {
t = A[j][i] / A[i][i];
for (k = i; k < N; k++) {
A[j][k] -= t * A[i][k];
}
b[j] -= t * b[i];
}
}
// 回代求解
for (i = N-1; i >= 0; i--) {
x[i] = b[i];
for (j = i+1; j < N; j++) {
x[i] -= A[i][j] * x[j];
}
x[i] /= A[i][i];
}
// 输出结果
for (i = 0; i < N; i++) {
printf("x[%d] = %f\n", i, x[i]);
}
return 0;
}
阅读全文