用C语言进行高斯列主元消元法求解方程组例题
时间: 2024-10-12 12:09:29 浏览: 70
在C语言中,我们可以使用高斯-约旦消元法(也称为主元消元法)来求解线性方程组。这是一种将增广矩阵(系数矩阵和常数向量合并而成)转化为阶梯形矩阵的过程,最后通过回代求出未知数的值。下面是一个简单的例子:
```c
#include <stdio.h>
#define ROWS 3 // 方程组的行数
#define COLS 2 // 方程组的列数
// 高斯消元函数
void gauss_elimination(float matrix[ROWS][COLS], float result[ROWS]) {
int i, j, k;
for (i = 0; i < ROWS - 1; i++) { // 主循环,处理每一行
for (j = i + 1; j < ROWS; j++) { // 比当前行大的行交换
if (matrix[j][i] > matrix[i][i]) {
float temp = matrix[j][i];
matrix[j][i] = matrix[i][i];
matrix[i][i] = temp;
}
}
// 对当前行做消除操作
float factor = matrix[i][i]; // 除数
for (j = i; j <= COLS; j++) {
matrix[i][j] /= factor; // 纵坐标除以主元
if (i != j) { // 非对角线元素相减
for (k = i + 1; k < ROWS; k++) {
matrix[k][j] -= matrix[i][j] * matrix[k][i];
}
}
}
}
// 回代求解最终结果
for (i = ROWS - 1; i >= 0; i--) {
result[i] = matrix[i][COLS] / matrix[i][i];
for (j = i - 1; j >= 0; j--) {
matrix[j][COLS] -= matrix[j][i] * result[i];
}
}
}
int main() {
float matrix[ROWS][COLS] = {{4, 2}, {6, 3}, {8, 5}};
float result[ROWS] = {0};
gauss_elimination(matrix, result);
printf("解得:\n");
for (int i = 0; i < ROWS; i++) {
printf("x%d = %.2f\n", i+1, result[i]);
}
return 0;
}
```
在这个示例中,我们首先初始化一个3x2的方程组矩阵,然后调用`gauss_elimination`函数进行消元,最后打印出解。注意,这个例子假设方程组有唯一解。
阅读全文