2016-08-31 4 views
7

nullspace(A) находит основание для нулевого пространства матрицы A. Возвращенные векторы имеют координаты с плавающей запятой. Если матрица A является целочисленной матрицей, базис можно найти в целых координатах.Точное целочисленное нулевое пространство целочисленной матрицы?

Например, в Mathematica,

NullSpace[RandomInteger[{-10, 10}, {3, 4}]] 

всегда возвращает целое число векторов.

Есть ли способ вычислить целочисленный базис для целочисленной матрицы в Юлии?

Обновление: Я получаю ошибки сборки с Nemo.jl (см. Комментарии к ответу Дэна Гетца). Между тем, есть ли альтернатива?

+0

Не могли бы вы помочь мне понять эту магию? Я запускал 'NullSpace [RandomInteger [{- 10, 10}, {3, 4}]]' на WolframAlpha. Он говорит о нулевом пространстве '[-9 5 3 -9; 0 5 -10 8; -3 -10 7 5] 'is' [-56; 440; 639; 310] ', но матрично-векторное произведение этих двух отличных от нуля? (В частности, это '[1831; -1710; 1791]'.) –

+0

@AhmedFasih Попробуйте транспонирование – becko

+0

Это матрица 3x4, поэтому я не уверен, что транспонировать ... –

ответ

7

Nemo.jl - это пакет для алгебры в Джулии. Он имеет множество функций, а также позволяет вычислять нулевое пространство. Один из способов идти об этом было бы:

using Nemo # install with Pkg.add("Nemo") 

S = MatrixSpace(ZZ, 3, 4) 
mm = rand(-10:10,3,4) 
m = S(mm) 
(bmat,d) = nullspace(m) 

После чего d является размерность нуль-пространства и bmat имеет основу в своих колонках.

Надеюсь, что это поможет (я был бы рад увидеть альтернативные решения, возможно, используя другие пакеты алгебр).

+0

Я получаю эту ошибку с 'Nemo': ERROR: LoadError: компиляция ошибок __init__: невозможно загрузить библиотеку/opt/julia/v0. 4/Nemo/local/lib/libpari " – becko

+0

Можете ли вы напечатать вывод' nullspace' (в частности, нулевые векторы)? Являются ли они целыми числами? – becko

+1

@becko работает для меня: 'm = S ([- 9 5 3 -9; 0 5 -10 8; -3 -10 7 5]); (bmat, d) = nullspace (m) 'prints out '([65] [288] [300] [195], 1)'. Итак, да, векторы nullspace являются ints, и я подтвердил, что 'm * bmat' - это нулевой вектор. –

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

  • Нет связанных вопросов^_^