Прояснить кое-что о неосторожности

Проверяя этот пример (пример API в конце), я хочу задать несколько вопросов.

1) В примере мы поставляем матрицу a с ненулевыми элементами. Каков же реальный размер матрицы? И это элементы матрицы или позиции, которые содержат ненулевые элементы?

2) Могу ли я использовать при расчетах (использовать в функции, подобной culaSparseSetDcooData) матрицу A, которая будет содержать ноль и ненулевые элементы? Если я хочу создать образец матрицы просто для тестирования, должен ли я создать матрицу с нулевыми элементами, затем заполнить ее некоторыми элементами, а затем?

1 ответ

Решение

Относительно 1) Интересно, что размер матрицы в формате COO явно не указан: он состоит из координат ненулевых элементов матрицы. Если у вас есть матрица COO с 1 ненулевым элементом, то это может быть

double a[1] =  { 1.0 };
int colInd[1] = { 10 };
int rowInd[1] = { 20 };

и (как вы можете судить по индексам строки / столбца) описать элементы матрицы, которая имеет размер не менее 11*21, или это может быть

double a[1] =  { 1.0 };
int colInd[1] = { 1000 };
int rowInd[1] = { 2000 };

и опишите элементы матрицы размером не менее 1001*2001

Однако в этом примере кажется, что это квадратичная матрица, и n=8 похоже на размер. (К сожалению, нет подробной документации culaSparseSetDcooData функция...)

Относительно 2) Это не совсем понятно. Если ваш вопрос заключается в том, могут ли "ненулевые" значения (в действительности) иметь значение 0.0 Тогда я могу сказать: да, это должно быть разрешено. Однако приведенный вами пример уже показывает, как создать простую тестовую матрицу.

Другие вопросы по тегам