2014-03-05 1 views
2

У меня есть файл с именем test1.sage:Скалярное умножение в мудреце?

test1.sage:  
     M = Matrix([[1,2,3],[4,5,6]]) 
     R = 1/2*M 
     print R 
     print M 

%run test1.sage 
[1 2 3] 
[4 5 6] 

[0 0 0] 
[0 0 0] 

Когда я запустить .sage файл его дает мне эту случайную нулевую матрицу. Но, по очереди, в оболочке шалфея, он отлично работает, любые идеи?

ответ

2

Ваша проблема в том, что в Python (2.x) 1/2 дает нуль. Это (был) длинный стандарт и, конечно, не единственный язык, который это делает.

Если вы запустите файл с Sage, все должно быть хорошо.

$ sage test1.sage 
[1 2 3] 
[4 5 6] 
[1/2 1 3/2] 
[ 2 5/2 3] 

Комментарии показывают, что %run должна быть функция IPython «магия». Я думаю, что она не изменяется в Sage, чтобы сделать его функцию волшебной Sage и следующее подтверждает:

Создайте файл, содержащий только print 1/2. Сделайте sage test1.sage, чтобы получить файл test1.py в вашем каталоге. Затем запустите Sage и сделать это:

sage: %run test1.sage 
0 
sage: %run test1.py 
1/2 

Я открыл Trac 15891 для этого, спасибо!

+0

Я имел в виду R и M. Исправлено это сейчас. % run используется в оболочке шалфея для запуска файлов. Но я до сих пор не знаю, почему она превращает матрицу во все 0s. Я думаю, что это может быть ошибкой. –

+0

Также почему мой Python 2.6 займет 1/2 как ноль? –

+0

Разделение целых чисел определяется таким образом. Получите доступ к остатку%. Кажется, вы запускаете IPython, и это использует python2. –

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

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