似乎当方程中存在 Function
或者是要解决的目标时,sympy的 solve
函数无法求解某些方程 .
为了解决这个问题,我想创建一个通用函数,它将使用同名的 Symbol
自动替换表达式中的 Function
.
例如,如果 Function('myfunc')(Symbol('t'))
出现在表达式中,我想用 Symbol('myfunc')
替换它 .
subs
函数无法执行此操作,因为必须事先明确知道名称 .
replace
函数看起来很有前景,特别是它的func - > func风格,但我无法弄清楚如何从对象中获取函数对象的名称 .
1 回答
这是我的建议:
收益率:
想法是循环遍历表达式的preorder_traversal,检查每个项是否是AppliedUndefined的实例(即F(_),其中F是未定义的函数),如果是,则将其替换为相应名称的符号 .
假设参数在此步骤中被删除,我使用字符串拆分来单独获取"myfunc"部分;否则只能用
str(item)
取代 .我还假设只有未取代的功能被替换,否则就必须相应增加...