2015-05-12 2 views
2

Я бегу SymPy на внешнем компьютере, но когда я делаю простой командуSymPy «не все аргументы преобразуются во строке форматирования» при использовании нулей ((п, п))

M=sympy.zeros((2,2)) 

Я получаю ошибку

Traceback (most recent call last): 
    File "test.py", line 8, in <module> 
    M=sp.zeros((2,2)) 
    File "/apps/brussel/magnycours/software/sympy/0.7.6-intel-2015a-Python-2.7.9/lib/python2.7/site-packages/sympy/matrices/dense.py", line 1229, in zeros 
    return cls.zeros(r, c) 
    File "/apps/brussel/magnycours/software/sympy/0.7.6-intel-2015a-Python-2.7.9/lib/python2.7/site-packages/sympy/matrices/dense.py", line 513, in zeros 
    r = as_int(r) 
    File "/apps/brussel/magnycours/software/sympy/0.7.6-intel-2015a-Python-2.7.9/lib/python2.7/site-packages/sympy/core/compatibility.py", line 389, in as_int 
    raise ValueError('%s is not an integer' % n) 
TypeError: not all arguments converted during string formatting 

Однако, когда я запускаю его на своем компьютере, проблем нет. Как я могу это исправить?

Версия на моем компьютере - 0.7.1.rc1, а одна на кластере - 0.7.6. Должен ли я попросить их установить (более старую?) Версию или есть более легкое решение?

+2

небось 'функция sympy.zeros' имеет различные аргументы в версии на кластере. Я бы посмотрел документы API для '0.7.6', чтобы посмотреть, что он должен делать. –

+0

Ваша фактическая ошибка - это значение «ValueError», отображаемое в трассировке стека. Во время построения сообщения об ошибке «TypeError» поднимается. Предположительно, потому что n является кортежем, но ожидается, что он будет целым числом. – swenzel

+0

Спасибо, это было очень простое решение, теперь оно работает без проблем. Синтаксис действительно отличается между двумя версиями (что imo довольно заторможено, новая версия должна, по крайней мере, иметь возможность распознавать и уведомлять, когда вы пытаетесь использовать старый синтаксис вместо того, чтобы бросать критические сообщения об ошибках). –

ответ

0

Если вы хотите матрицу 2х2 с нулями, попробуйте следующее:

In [6]: zeros(2,2) 
Out[6]: 
Matrix([ 
[0, 0], 
[0, 0]]) 

или

In [7]: zeros(2) 
Out[7]: 
Matrix([ 
[0, 0], 
[0, 0]]) 
Смежные вопросы