在sympy中定义符号和其他函数的函数

Defining functions of symbols and other functions in sympy

我有一个函数 f = sp.Function('f') 并且我有一个包含 f 的表达式,类似于 expr = 2*f + ... + f^2.

我想expr.subs(f, g)。换句话说,我想用另一个函数g替换f。我想定义 g = x + y*h,其中 xy 是类型 sp.Symbolh 是类型 sp.Function

然而,我什至不能定义这样的函数g:

import sympy as sp
x, y = sp.symbols('x, y')
g = x * y*sp.Function('h')

----> g = x * y*sp.Function('h')
TypeError: unsupported operand type(s) for *: 'Mul' and 'UndefinedFunction'

我不清楚你到底想要什么。你不能在 SymPy 中直接使用未定义的函数作为代数对象,但如果你在一个符号处计算函数,你可以做基本上相同的事情。也许这有助于解决您的问题:

In [5]: f = Function('f')

In [6]: x = Symbol('x')

In [7]: expr = 1 + f(x)

In [8]: expr
Out[8]: f(x) + 1

In [9]: g = Lambda(x, sin(x)-1)

In [11]: g
Out[11]: x ↦ sin(x) - 1

In [10]: expr.subs(f, g)
Out[10]: sin(x)