Python:用功能SymPy代替变量

时间:2018-10-26 10:45:16

标签: python sympy

我正在编写代码,我需要用多个函数替换一个函数的变量。

例如,我有B=x1**2+x2**2+x3**2,我需要在其中替换x1=cos(x1+x2)x2=sin(x2+x3)x3=x1,以获得以下值:cos(x1+x2)**2+sin(x2+x3)**2+x1**2

但是,当我像这样反复进行操作时:

for j in range(nvar):
        B=expand(B.subs(x[j],f[j]))

其中nvar=3和x被定义为符号列表,而f被定义为符号函数列表,在每次迭代中,替换先前替换的x[j]并给出错误的答案:{{ 1}}

如何同时执行此替换?

1 个答案:

答案 0 :(得分:0)

对于这种情况,您可以将simultaneous关键字用于潜艇:

>>> (x1**2+x2**2+x3**2).subs(dict(x1=cos(x1+x2), x2=sin(x2+x3), x3=x1), simultaneous=True)
x1**2 + sin(x2 + x3)**2 + cos(x1 + x2)**2

或者,如果x和f包含您感兴趣的所有替换实例,

>>> reps = dict(zip(x, f))
>>> B = expand(B.subs(reps, simultaneous=True)
相关问题