在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
,其中 x
和 y
是类型 sp.Symbol
,h
是类型 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)
我有一个函数 f = sp.Function('f')
并且我有一个包含 f
的表达式,类似于 expr = 2*f + ... + f^2
.
我想expr.subs(f, g)
。换句话说,我想用另一个函数g
替换f
。我想定义 g = x + y*h
,其中 x
和 y
是类型 sp.Symbol
,h
是类型 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)