아무도 CHOLMOD을 사용하여 삼중 항 행렬에 요소를 추가하는 방법에 대한 간단한 예제를 제공 할 수 있습니까?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 모두에서 해결책을 찾기 위해 노력했다,하지만 난 어떤 도움을 찾을 수 없습니다.
당신은 매트릭스 요소를 추가하지 않습니다 말은 무엇을 의미합니까? k는 어디에 초기화됩니까? 그것은 글로벌 변수입니까? I는 예컨대 cholmod_print_triplet (A하여 행렬 요소를 인쇄하는 경우 – angainor
는 "삼중"&com); 그것은 편의상 매트릭스. 제로의 행렬을 출력하고, 변수 k는 클래스의 범위에 정의되어 있지만, 예 글로벌 변수라고 가정 해 보겠습니다. – asny