【问题标题】:How to substitute multiple symbols in an expression in sympy?如何在 sympy 的表达式中替换多个符号?
【发布时间】:2016-01-01 00:40:56
【问题描述】:

直接分配变量不会修改追溯使用该变量的表达式。

>>> from sympy import Symbol
>>> x = Symbol('x')
>>> y = Symbol('y')
>>> f = x + y
>>> x = 0

>>> f
x + y

【问题讨论】:

标签: python sympy


【解决方案1】:

x = Symbol('x') 命令将 Sympy 的 Symbol('x') 存储到 Python 的变量 x 中。您之后创建的 Sympy 表达式 f 确实包含 Symbol('x'),而不是 Python 变量 x

当您重新分配x = 0 时,Python 变量x 将设置为零,并且不再与Symbol('x') 相关。这对仍然包含 Symbol('x') 的 Sympy 表达式没有影响。

这在 Sympy 文档的这个页面中得到了最好的解释: http://docs.sympy.org/latest/gotchas.html#variables

您想要做的是f.subs(x,0),如其他答案所述。

【讨论】:

  • 如果 f 是一个符号矩阵呢?如a = symarray('a', 3)?
【解决方案2】:

实际上 sympy 旨在不替换值,直到您真的想用 subs 替换它们(请参阅 http://docs.sympy.org/latest/tutorial/basic_operations.html

试试

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

而不是

x = 0

【讨论】:

  • 如果 f 是一个符号矩阵呢?如a = symarray('a', 3)?
【解决方案3】:

替换多个值:

>>> from sympy import Symbol
>>> x, y = Symbol('x y')
>>> f = x + y
>>> f.subs({x:10, y: 20})
>>> f
30

【讨论】:

  • 之前正在寻找这个问题的答案。我理解为什么我的代码不起作用,但我只需要一个快速参考来获取子值的语法。在我的第一次谷歌搜索中找不到任何东西,所以我想我会在我想出答案后分享答案,希望能在某个时候拯救下一个人。发布问答风格是 stackoverflow 的一个功能。 meta.stackoverflow.com/questions/290038/…
  • 如果 f 是一个符号矩阵呢?如a = symarray('a', 3)?
  • 这不起作用时会发生什么? Symbol 和 sympy.var 有区别吗?
猜你喜欢
  • 2015-01-28
  • 2019-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 2011-12-16
相关资源
最近更新 更多