Sympy中如何定义符号与其他函数组合的自定义函数以完成表达式替换
问题原因
你调用sp.Function('h')得到的是未绑定参数的未定义函数类,属于UndefinedFunction类型,无法直接和符号运算结果(Mul类型)执行乘法操作,必须先给函数传入自变量,将其转为可参与运算的函数实例后才能正常计算。
正确实现步骤
1. 明确定义所有依赖项
你需要先指定函数对应的自变量,假设f和h都是单变量函数(自变量为t),示例定义如下:
import sympy as sp # 定义基础符号 t = sp.Symbol('t') x, y = sp.symbols('x y') # 定义原函数f并绑定自变量 f = sp.Function('f')(t) # 定义h函数并绑定自变量 h = sp.Function('h')(t)
如果你的f是多变量函数,给它传入对应的参数列表即可,h的参数列表需要和f保持一致。
2. 定义g表达式并执行替换
此时h已经是可参与运算的函数实例,可以直接构造g的表达式,再调用subs完成替换:
# 构造g的表达式 g = x + y * h # 示例原表达式 expr = 2*f + f**2 # 执行替换 result = expr.subs(f, g)
打印result可以得到替换后的结果:2*(x + y*h(t)) + (x + y*h(t))**2
内容的提问来源于stack exchange,提问作者Wapiti
相关产品推荐
相关产品推荐

