Создание разреженной матрицы или матрицы черного ящика в Sage - PullRequest
1 голос
/ 10 января 2012

Мне кажется, что в Sage единственная разница между созданием плотной матрицы и разреженной матрицы заключается в флаге, передаваемом конструктору ("sparse = True"). В частности, это означает, что если я хочу создать разреженную матрицу размером 200 000 x 200 000, но только 500 000 ненулевых записей, мне сначала нужно создать список размером 40 000 000 000, что абсурдно. Есть ли лучший способ?

Кроме того, поскольку меня интересует только решение системы линейных уравнений, определяемой матрицей, я могу быть удовлетворен использованием представления «черного ящика» (т. Е. Дать функцию g такую, что g (v) = Av с будучи матрицей). Это поддерживается в базовой библиотеке LinBox, но я понятия не имею, что такое соответствующий интерфейс Sage.

Ответы [ 2 ]

3 голосов
/ 12 февраля 2012

Используйте словарь для указания разреженных матриц

matrix(5000,5000,{(1,2): 1})
1 голос
/ 17 мая 2012

И см. Справочное руководство Sage , где приведено множество примеров конструкторов матриц.

...