lu分解c语言源程序,[C语言]矩阵的LU分解
时间: 2023-10-25 15:10:14 浏览: 203
以下是用C语言实现矩阵的LU分解的代码:
```c
#include <stdio.h>
#define N 3
void printMatrix(double A[N][N]) {
printf("Matrix:\n");
for(int i=0;i<N;i++) {
for(int j=0;j<N;j++) {
printf("%f ",A[i][j]);
}
printf("\n");
}
}
void LUdecomposition(double A[N][N], double L[N][N], double U[N][N]) {
for(int i=0;i<N;i++) {
L[i][i] = 1; //将L矩阵的对角线元素赋值为1
}
for(int k=0;k<N;k++) {
U[k][k] = A[k][k];
for(int i=k+1;i<N;i++) {
L[i][k] = A[i][k] / U[k][k];
U[k][i] = A[k][i];
}
for(int i=k+1;i<N;i++) {
for(int j=k+1;j<N;j++) {
A[i][j] -= L[i][k] * U[k][j];
}
}
}
}
int main() {
double A[N][N] = {{2.0,-1.0,0.0},{-1.0,2.0,-1.0},{0.0,-1.0,2.0}};
double L[N][N], U[N][N];
LUdecomposition(A, L, U);
printMatrix(A);
printf("\n");
printMatrix(L);
printf("\n");
printMatrix(U);
return 0;
}
```
其中,LUdecomposition函数是实现LU分解的主要函数,使用了两个N*N的数组L和U分别表示分解出的下三角矩阵和上三角矩阵,A表示原始的N*N矩阵。在该函数中,先将L的对角线元素赋值为1,然后按照LU分解的公式,将U矩阵的对角线元素赋值为A矩阵对应元素,将L矩阵的非对角线元素赋值为A矩阵对应元素与U矩阵对角线元素的商,最后用A矩阵减去L、U的乘积,得到新的A矩阵。最终输出A、L、U三个矩阵。
阅读全文