矩阵LU分解C语言实现
时间: 2023-11-22 20:07:31 浏览: 191
矩阵LU分解是一种常用的数值分析方法,可以将一个方阵分解成一个下三角矩阵和一个上三角矩阵的乘积。以下是一个简单的C语言实现:
```c
#include <stdio.h>
void lu_decomposition(double a[][3], int n) {
int i, j, k;
double l[n][n], u[n][n], sum;
// 初始化L和U矩阵
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (i == j)
l[i][j] = 1;
else
l[i][j] = 0;
u[i][j] = 0;
}
}
// 进行LU分解
for (i = 0; i < n; i++) {
for (j = i; j < n; j++) {
sum = 0;
for (k = 0; k < i; k++)
sum += l[i][k] * u[k][j];
u[i][j] = a[i][j] - sum;
}
for (j = i + 1; j < n; j++) {
sum = 0;
for (k = 0; k < i; k++)
sum += l[j][k] * u[k][i];
l[j][i] = (a[j][i] - sum) / u[i][i];
}
}
// 输出L和U矩阵
printf("L matrix:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
printf("%lf ", l[i][j]);
printf("\n");
}
printf("U matrix:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
printf("%lf ", u[i][j]);
printf("\n");
}
}
int main() {
double a[3][3] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
lu_decomposition(a, 3);
return 0;
}
```
在上述代码中,我们使用了两个n×n的矩阵L和U,分别表示下三角矩阵和上三角矩阵。我们首先初始化这两个矩阵,然后进行循环,计算L和U矩阵的每个元素。最后输出L和U矩阵。
阅读全文