2015-08-10 3 views
1

Я пытаюсь расслоить выражение SymPy на функцию вычисления NumPy, но сохраняя некоторые символы исходного выражения. Это работает для некоторых простых выраженийLamdify функция, сохраняющая некоторые символы

>>> x,y,z=sympy.symbols('x y z') 
>>> expr1=(x+y)*z 
>>> func1=sympy.lambdify((x,y),expr1,modules='numpy') 
>>> func1(1.,1.) 
2.0*z 

, но когда я пытаюсь некоторые другие более сложные, как:

>>> expr2=sympy.exp((x+y)*z) 
>>> func2=sympy.lambdify((x,y),expr2,modules='numpy') 
>>> func2(1.,1.) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "<string>", line 1, in <lambda> 
AttributeError: 'Mul' object has no attribute 'exp' 

я получаю эту ошибку. Любое предложение приветствуется!

+1

Почему вы хотите, чтобы это была функция «numpy»? –

+0

Существует сто операций для выполнения внутри символического выражения при выполнении замены. Выполнение этого с помощью sympy.subs занимает много времени. – mavillan

+0

Пожалуйста, сообщите об этом здесь. https://github.com/sympy/sympy/issues –

ответ

0

Вы проверили, будет ли использование «sympy» в модулях выполнять работу? Кажется, это работает на вашем маленьком примере. Нам просто нужно знать, даст ли он вам то, что вы ожидаете от опции «numpy».

У меня был этот вопрос, прежде чем работать со сложными числами в полярной форме. Использование «sympy» просто решает проблему, и до сих пор я смог работать с ними без проблем.

import sympy as sp 

x, y, z = sp.symbols("x y z") 
expr2 = sp.exp((x + y) * z) 
func2 = sp.lambdify((x, y), expr2, modules="sympy") 
func2(1., 1) 
Смежные вопросы