我正在编写代码,我需要用多个函数替换一个函数的变量。
例如,我有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}}
如何同时执行此替换?
答案 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)