Переопределить символ SymPy глобально (глобальные подпрограммы) - PullRequest
0 голосов
/ 04 октября 2018

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

Что-то вроде этого:

from sympy import *

x, y = symbols("x y")

expr1 = 2*x + y
expr2 = x**2 + 2*y

x.redefine("foo")
print(expr1, expr2)

x.redefine(2)
print(expr1, expr2)

Вывод:

2*foo + y, foo**2 + 2*y
4 + y, 4 + 2*y

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

выражения SymPy неизменны : они никогда не меняются.Следовательно, не может быть глобального переключателя, который неявно изменяет все существующие выражения.

Для обработки подстановки в нескольких выражениях можно использовать циклы, списки или применить subs к матрице.Примеры:

expressions = [2*x + y, x**2 + 2*y, x - y/2]
print([expr.subs(x, 3) for expr in expressions])
mat = Matrix(expressions)
print(mat.subs(x, 3))

Печать:

[y + 6, 2*y + 9, -y/2 + 3]
Matrix([[y + 6], [2*y + 9], [-y/2 + 3]])
0 голосов
/ 04 октября 2018

Sympy разработан таким образом, что его нельзя переопределить навсегда.Однако вы можете использовать приведенную ниже команду для замены вашего символа в выражении. Здесь - документация для него.

expr1.subs({x:"foo"}) #for changing only one symbol.
expr2.subs({x:10, y:20}) #for changing both the symbols.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...