【发布时间】:2018-07-26 21:04:52
【问题描述】:
我正在尝试以f(g(x)) 的形式生成一些随机表达式。我希望能够将g 替换为sin(x) 或x**2 和f 之类的cos(x) 或log(x)。所以我会得到类似sin(cos(x)) 或log(x**2) 的东西(但随机)。
我遇到问题的部分任务是同时替换外部函数和内部函数。
这是我的代码:
import sympy
from sympy import abc
x = abc.x
f = sympy.Function('f')(x)
g = sympy.Function('g')(x)
full=f.subs(x, g)
newExpr = sympy.sin(x)
newExpr2 = sympy.cos(x)
print(full)
replaced_inner = full.subs(g, newExpr)
print(replaced_inner)
both = replaced_inner.subs(f, newExpr2)
print(both)
full 打印 f(g(x)) 以便工作replaced_inner 打印 f(sin(x)) 以便同样工作both 打印 f(sin(x)) 当我希望它打印 cos(sin(x)) 时
我尝试过使用args[0] 和f.func,但没有取得任何进展。
如何替换内部函数和外部函数(以及最终更复杂的内容,例如 f(g(h(x)))。
我可以简单地创建cos(sin(x)),但我想使用变量来创建它,这样我就可以随机化要替换的函数。
【问题讨论】: