C++基础(满秩矩阵的LU分解) |
|
www.nanhushi.com 佚名 不详 |
/** *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; }
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: C++基础(复合数据类型) 下一篇文章: C++技巧(warningC4786错误解决方法) |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|