在C 中实现顺序LU分解
Implementation of sequential LU decomposition in C++
我正在尝试遵循https://courses.engr.illinois.edu/cs554/fa2015/notes/06_lu_8up.pdf,以实现LU分解并实现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();
}
我认为这是不正确的,因为根据我在相同数量的处理器上并行化的不同论文,完全不同。
"以下算法看起来正确,…" - 不,因为
- 数组是C 中的0个索引,
-
double[size][size]
(您可能使用的)不可转换为double**
, -
int
不是迭代器的好类型(而不是使用size_t
), - 您不检查
m[k][k]
是否可能(接近)零,何时您可能需要交换行。
请注意,我只查看了明显的实现错误,在可能使代码更好的情况下,例如提高计算的稳定性。
相关文章:
- 通过递归进行因子分解
- 有人能分解一下这个c++模板的语法吗
- C++ 乔列斯基因式分解
- 如何加快本征C++中的LU分解?
- 如何将整数分解为不同的变量?
- 减少本征的 QR 分解
- Xcode 中的加速框架以获得 A 的 QR 分解,但找不到 zgeqrf
- 将无向连接图分解为两个组件
- 在 C++ 中分解数字
- 如何修复 LU 分解?
- 在C 中实现顺序LU分解
- 如何将特征库用于LU分解C
- LU 使用 openmp 分解
- C ++中的LU分解不适用于大矩阵
- 包含 LU 分解的基质
- 使用相同的内存在armadillo中进行LU分解
- 需要一个使用gsl-LU分解获得平方矩阵逆的示例代码
- 我在带有 cuSolver 的设备上找不到 LU 分解
- 如何在本征中使用不完全LU分解
- Cublas矩阵LU分解