- /**
- *LU分解函数(V2非递归法)
- *@param A (in)输入矩阵
- *@param L (out)输出L阵
- *@param U (out)输出U阵
- *@param size (in)矩阵的大小
- *@return 分解成功返回非零值,失败返回零
- */
- int LUDecomposition(double **A, double **L, double **U, int size)
- {
- int i, j, k;
- double **Ax;
- Ax = (double**)malloc(sizeof(double*)*size);
- for (i = 0; i < size; i++)
- Ax[i] = (double*)malloc(sizeof(double)*size);
- for (i = 0; i < size; i++)
- for (j = 0; j < size; j++)
- Ax[i][j] = A[i][j];
- for (i = 1; i < size; i++)
- for (j = 0; j < i; j++)
- U[i][j] = 0;
- for (i = 0; i < size; i++)
- {
- L[i][i] = 1;
- for (j = i+1; j < size; j++)
- L[i][j] = 0;
- }
- for (k = 0; k < size; k++)
- {
- U[k][k] = Ax[k][k];
- for (i = k+1; i < size; i++)
- {
- L[i][k] = Ax[i][k] / U[k][k];
- U[k][i] = Ax[k][i];
- }
- for (i = k+1; i < size; i++)
- for (j = k+1; j < size; j++)
- Ax[i][j] = Ax[i][j] - L[i][k] * U[k][j];
- }
- for (i = 0; i < size; i++)
- free(Ax[i]);
- free(Ax);
- return 1;
- }
满秩矩阵的LU分解-非递归法(Chapter 28)
最新推荐文章于 2022-10-03 10:30:19 发布