gpt4 book ai didi

c++ - 无法使用一维数组 (c++) 计算上三角矩阵的乘积

转载 作者:行者123 更新时间:2023-11-30 04:00:22 25 4
gpt4 key购买 nike

我正在尝试将两个上三角矩阵相乘。通过省略对角线下方的零(以节省空间),矩阵存储在一维数组中而不是通常的二维数组中。我已经弄清楚如何将给定一对索引的元素映射到单个数组的索引。但我在实际计算时遇到了问题(计算适用于较小的 n x n 方阵,但出于某种原因,对于较大的 n x n 矩阵给出了不正确的结果)。我相信我可能将不正确的参数传递给 getValue() 函数,但考虑到矩阵乘法的一般公式,我认为它们应该是正确的。任何帮助将不胜感激!

这是我的相关代码:

// mat is an array containing the upper triangle data for a square matrix of size n
// returns element at (i,j), or 0 for the lower triangle
int val(int *mat, int n, int i, int j)
{
if (i > j) {
return 0; // lower triangle
} else {
return mat[j + (i*n) - i*(i+1)/2];
}
}

最佳答案

user101263,

为了简化,您可能不想将二维数组映射到一维数组,因为在现实中,它只会使简单的 matrix-multiplication algorithm 复杂化。 .

这是 MM 算法的一个实现:

   int main()
{
int[5][5] result;
/* omitted: create your 2 2D arrays a & b */
matrixMulitplcation(a,b, result)
}

int** matrixMultiplcation(int a[5][5], int b[5][5], result[5][5])
{
for(int R=0;R<5;R++)
{
for(int C=0;C<5;C++)
{
result[R][C]=0;
for(int T=0;T<5;T++)
result[R][C]+=a[R][T]*b[T][C];
}
}
return result;
}

如有任何问题,请告诉我!

关于c++ - 无法使用一维数组 (c++) 计算上三角矩阵的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26349942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com