2016-11-19 2 views
2

У меня есть матрица m измерения 3329×3329 с большим количеством нулевых полей, и я хочу рассчитать m^9. После того, как вы попробовали это с пакетом matrix (Data.Matrix прост в использовании), я понял, что разреженная матрица будет лучше представлять это с точки зрения использования памяти и, возможно, также скорости вычислений. Поэтому я пытаюсь выяснить, как использовать пакет hmatrix. Я уже удалось создать разреженную матрицу:Как размножать разреженные матрицы с использованием hmatrix

module Example where 

import Numeric.LinearAlgebra as LA 

assocExample :: AssocMatrix 
assocExample = [((0,0), 1),((3329,5),1)] 

sparseExample :: GMatrix 
sparseExample = LA.mkSparse assocExample 

Моя проблема в данный момент, кажется, что у меня есть GMatrix, но для оператора умножения (<>) мне нужно Matrix t вместо этого. Просматривая документацию по hackage hmatrix Мне не удалось выяснить, как получить Matrix t здесь.

У меня также был быстрый взгляд на introduction to hmatrix, но термин sparse в нем даже не упоминается.

Моя догадка заключается в том, что этого должно быть достаточно легко сделать, но мне не хватает чего-то простого.

ответ

1

Редкие матрицы, насколько мне известно, довольно молоды в hmatrix. Просматривая документы, кажется, что нет продукта разреженных матриц. Вы должны реализовать это самостоятельно.

Edit: И если вы сделали это, комментарий: https://github.com/albertoruiz/hmatrix/issues/162 (также обосновывает мое заявление выше)

+0

Эй спасибо - я буду расследовать это немного, и чем скорее принять ваш ответ. Эта возможность мне даже не приходила ^^ –

Смежные вопросы