gpt4 book ai didi

c++ - 如何使用 CHOLMOD 将元素添加到三元组矩阵?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:11:52 27 4
gpt4 key购买 nike

任何人都可以给我一个简单的例子,说明如何使用 CHOLMOD 将元素添加到三元组矩阵吗? .

我试过这样的:

cholmod_triplet *A;
int k;

void add_A_entry(int r, int c, double x)
{
((int*)A->i)[k] = r;
((int*)A->j)[k] = c;
((double*)A->x)[k] = x;
k++;
}

int main()
{
k = 0;
cholmod_common com;
cholmod_start(&com);

A = cholmod_allocate_triplet(202, 202, 202*202, -1, CHOLMOD_REAL, &com);
add_A_entry(2, 2, 1.);
add_A_entry(4, 1, 2.);
add_A_entry(2, 10, -1.);

cholmod_print_triplet(A, "A", &com);

cholmod_finish(&com);
return 0;
}

但是,这不会向矩阵添加任何元素。我只是得到输出:

CHOLMOD triplet: A:  202-by-202, nz 0, lower.  OK

当然,我尝试通过搜索和CHOLMOD documentation 中找到解决方案。 ,但我找不到任何帮助。

最佳答案

cholmod_allocate_triplet() 设置 A->nzmax,在您的例子中是 202*202。这只是定义了可用于添加三胞胎的空间。矩阵中三元组的实际数量是 A->nnz,它被 cholmod_allocate_triplet() 设置为零。

应该使用 A->nnz 代替您的变量 k

蒂姆·戴维斯(CHOLMOD 作者)

关于c++ - 如何使用 CHOLMOD 将元素添加到三元组矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12604142/

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