首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

哪位高手能帮小弟我把这一段改成VB代码啊多谢

2012-07-31 
谁能帮我把这一段改成VB代码啊?谢谢C#版本public void cholfree(MAT A, out MAT L, out VEC D){/*--------

谁能帮我把这一段改成VB代码啊?谢谢
C# 版本
  public void cholfree(MAT A, out MAT L, out VEC D)
  {
  /*------------------------------------------ comment
  Author : syz 
  Date : 2011-07-01 11:07:09  
  ---------------------------------------------------
  Desciption : 不开平方的CHOLESKY分解
  * LDL'分解
  Post Script :
  *
  paramtegers :
  * A----------对称正定矩阵
  * L----------L矩阵
  * D----------对角矩阵-(这里实际用N维向量存储)
  * 
  -------------------------------------------------*/
  int N = A.dim1;
  L = new MAT(N, N);
  D = new VEC(N);

  MAT G = new MAT(N, N);

  int i, j, k;

  //设置初值
  for (i = 0; i < N; i++)
  for (j = 0; j < N; j++)
  {
  L.ele[i, j] = 0.0;
  G.ele[i, j] = 0.0;
  }


  D.ele[0] = A.ele[0, 0];

  double tmp1;
  for (i = 1; i < N; i++)
  {
  for (j = 0; j <= i - 1; j++)
  //此层循环计算g(i,j)
  {
  tmp1 = 0.0;

  for (k = 0; k <= j - 1; k++)
  tmp1 = tmp1 + G.ele[i, k] * L.ele[j, k];

  G.ele[i, j] = A.ele[i, j] - tmp1;

  }

  //此循环计算L(i,j)
  for (j = 0; j <= i - 1; j++)
  L.ele[i, j] = G.ele[i, j] / D.ele[j];

  //以下计算D(i)
  tmp1 = 0.0;
  for (k = 0; k <= i - 1; k++)
  tmp1 = tmp1 + G.ele[i, k] * L.ele[i, k];

  D.ele[i] = A.ele[i, i] - tmp1;


  }

  //设置对角元素
  for (i = 0; i < N; i++)
  L.ele[i, i] = 1.0;
  }

  大意是这样的:将对称正定矩阵A分解为LDL^T(转置)的形式, L为下三角矩阵,对角线元素为1.D为对角阵
  代码是求L D中的元素的。


[解决办法]
怎么没人回答啊?

热点排行