Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C++;_C++_Matrix - Fatal编程技术网

C++ 在C++;

C++ 在C++;,c++,matrix,C++,Matrix,我试图遵循Guassian消除算法来实现LU分解,并最终将其与openmp并行。以下算法是否正确,其中l是乘数,m是矩阵 void decompose2(double **m) { begin =clock(); int i=0, j=0, k=0; for(k = 1; k < size - 1; k++) { for(i = k + 1; i < size; i++) { l[i][k] = m[i][k]

我试图遵循Guassian消除算法来实现LU分解,并最终将其与openmp并行。以下算法是否正确,其中
l
是乘数,m是矩阵

void decompose2(double **m) {
    begin =clock();
    int i=0, j=0, k=0;

    for(k = 1; k < size - 1; k++)
    {
      for(i = k + 1; i < size; i++)
      {
        l[i][k] = m[i][k]/m[k][k];
      }

      for(j = k + 1; j < size; j++)
      {
        for(i = k + 1; k < size; k++)
        {
          m[i][j] = m[i][j] - (l[i][k]*m[k][j]);
        }
      }

    }
    end = clock();
}
void decomposition2(双**m){
开始=时钟();
int i=0,j=0,k=0;
对于(k=1;k
我不认为这是正确的,因为根据另一篇论文,我在相同数量的处理器上进行并行化后得到的时间完全不同。

“以下算法看起来正确吗,…”——不,因为

    数组是C++中的0索引,
  • double[size][size]
    (您可能正在使用)不能转换为
    double**
  • int
    不是迭代器的好类型(请改用
    size\t
  • 当您可能需要交换行时,您不会检查
    m[k][k]
    是否(接近)为零
请注意,我只查看了明显的实现错误,而没有查看使代码更好的可能实例,例如增加计算的稳定性