请用c语言求解线性方程组,展示代码
时间: 2024-01-01 18:06:24 浏览: 28
以下是使用C语言求解线性方程组的示例代码:
```c
#include <stdio.h>
#define N 3 // 矩阵的维度
void GaussianElimination(double a[][N+1], double x[])
{
int i, j, k;
double max, temp;
for (i = 0; i < N; i++)
{
// 找出当前列中绝对值最大的元素
max = fabs(a[i][i]);
k = i;
for (j = i+1; j < N; j++)
{
if (fabs(a[j][i]) > max)
{
max = fabs(a[j][i]);
k = j;
}
}
// 如果该元素为0,则返回,表示无解
if (max < 1e-10)
{
printf("无解\n");
return;
}
// 交换第i行和第k行
if (k != i)
{
for (j = i; j < N+1; j++)
{
temp = a[i][j];
a[i][j] = a[k][j];
a[k][j] = temp;
}
}
// 消元
for (j = i+1; j < N; j++)
{
temp = a[j][i] / a[i][i];
for (k = i; k < N+1; k++)
{
a[j][k] -= temp * a[i][k];
}
}
}
// 回带求解
for (i = N-1; i >= 0; i--)
{
x[i] = a[i][N] / a[i][i];
for (j = i-1; j >= 0; j--)
{
a[j][N] -= a[j][i] * x[i];
}
}
}
void printSolution(double x[])
{
int i;
printf("方程的解为:\n");
for (i = 0; i < N; i++)
{
printf("x%d = %f\n", i+1, x[i]);
}
}
int main()
{
double a[N][N+1] = {{3, 2, -4, 3}, {2, 3, 3, 15}, {5, -3, 1, 14}};
double x[N];
int i, j;
printf("方程组的系数矩阵为:\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
printf("%f ", a[i][j]);
}
printf("| %f\n", a[i][N]);
}
GaussianElimination(a, x);
printSolution(x);
return 0;
}
```
该代码使用高斯消元法求解线性方程组,可以解决一般的线性方程组问题。