How to substitute multiple symbols in an expression in sympy?

后端 未结 3 1593
我寻月下人不归
我寻月下人不归 2020-12-11 00:38

Assigning a variable directly does not modify expressions that used the variable retroactively.

>>> from sympy import Symbol
>>> x = Symbol         


        
相关标签:
3条回答
  • 2020-12-11 01:11

    To substitute several values:

    >>> from sympy import Symbol
    >>> x, y = Symbol('x y')
    >>> f = x + y
    >>> f.subs({x:10, y: 20})
    >>> f
    30
    
    0 讨论(0)
  • 2020-12-11 01:13

    Actually sympy is designed not to substitute values until you really want to substitute them with subs (see http://docs.sympy.org/latest/tutorial/basic_operations.html)

    Try

    f.subs({x:0})
    f.subs(x, 0) # as alternative
    

    instead of

    x = 0
    
    0 讨论(0)
  • 2020-12-11 01:31

    The command x = Symbol('x') stores Sympy's Symbol('x') into Python's variable x. The Sympy expression f that you create afterwards does contain Symbol('x'), not the Python variable x.

    When you reassign x = 0, the Python variable x is set to zero, and is no longer related to Symbol('x'). This has no effect on the Sympy expression, which still contains Symbol('x').

    This is best explained in this page of the Sympy documentation: http://docs.sympy.org/latest/gotchas.html#variables

    What you want to do is f.subs(x,0), as said in other answers.

    0 讨论(0)
提交回复
热议问题