辅导:C++基础(满秩矩阵的LU分解)
来源:优易学  2011-10-31 13:02:36   【优易学:中国教育考试门户网】   资料下载   IT书店
  /**
  *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;
  }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训