esclarecer algumas coisas sobre culasparse
Pergunta
Verificando esse exemplo (exemplo de API no final), quero fazer algumas perguntas.
1) No exemplo, estamos fornecendo a matriz a com elementos diferentes de zero. Qual é o tamanho real da matriz? E esses são os elementos da matriz ou as posições que contêm elementos diferentes de zero?
2) Posso usar nos cálculos (usar em uma função como culaSparseSetDcooData) uma matriz A que conterá elementos zero e diferentes de zero?Se eu quiser criar uma matriz de amostra apenas para testar, devo criar uma matriz com zero elementos, depois preenchê-la com alguns elementos e depois?
Solução
Em relação a 1) Curiosamente, o tamanho da matriz no formato COO não é especificado explicitamente:Consiste em coordenadas dos elementos diferentes de zero da matriz.Se você tiver uma matriz COO com 1 elemento diferente de zero, então isso poderia ser
double a[1] = { 1.0 };
int colInd[1] = { 10 };
int rowInd[1] = { 20 };
e (como você pode ver pelos índices de linha/coluna) descrevem elementos de uma matriz que tem pelo menos tamanho 11*21, ou pode ser
double a[1] = { 1.0 };
int colInd[1] = { 1000 };
int rowInd[1] = { 2000 };
e descrever elementos de uma matriz que tem pelo menos tamanho 1001*2001
No entanto, neste exemplo, parece que esta é uma matriz quadrática, e n=8
parece ser o tamanho.(Infelizmente, parece não haver documentação detalhada do culaSparseSetDcooData
função...)
Em relação a 2) Isso não está totalmente claro.Se sua dúvida é se os valores "diferentes de zero" poderia (na realidade) têm um valor de 0.0
, então posso dizer:Sim, isso deveria ser permitido.Porém, o exemplo que você mencionou já mostra como criar uma matriz de teste simples.