c语言编写平方根求解线性方程组的程序
时间: 2024-05-05 22:19:43 浏览: 103
对于求解线性方程组,平方根法是其中的一种常用方法。下面是一个用C语言编写的平方根法求解线性方程组的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 3 // 线性方程组的未知数个数
int main()
{
double a[N][N] = { {2, -1, 0}, {-1, 2, -1}, {0, -1, 2} }; // 系数矩阵
double b[N] = {1, 0, 1}; // 常数矩阵
double x[N]; // 解向量
double L[N][N] = {0}; // 下三角矩阵
double Lt[N][N] = {0}; // 上三角矩阵的转置矩阵
double y[N] = {0}; // 辅助向量
// 用平方根法求解
for(int i = 0; i < N; i++)
{
// 计算L的第i行
for(int j = 0; j < i; j++)
{
double sum = 0;
for(int k = 0; k < j; k++)
sum += L[i][k] * Lt[k][j];
L[i][j] = (a[i][j] - sum) / Lt[j][j];
}
// 计算L的第i个对角线元素和Lt的第i行
double sum = 0;
for(int k = 0; k < i; k++)
sum += L[i][k] * Lt[k][i];
L[i][i] = sqrt(a[i][i] - sum);
Lt[i][i] = L[i][i];
// 计算y的第i个分量
sum = 0;
for(int k = 0; k < i; k++)
sum += L[i][k] * y[k];
y[i] = (b[i] - sum) / L[i][i];
}
// 回代求解x
for(int i = N - 1; i >= 0; i--)
{
double sum = 0;
for(int k = i + 1; k < N; k++)
sum += Lt[i][k] * x[k];
x[i] = (y[i] - sum) / Lt[i][i];
}
// 输出结果
printf("The solution is:\n");
for(int i = 0; i < N; i++)
printf("x[%d] = %f\n", i, x[i]);
return 0;
}
```
在该程序中,我们先定义了线性方程组的系数矩阵a、常数矩阵b、解向量x,并且定义了一些辅助变量。接着用平方根法求解线性方程组,其中L为下三角矩阵,Lt为上三角矩阵的转置矩阵,y为辅助向量。最后回代求解x,并输出结果。
阅读全文