我在想,如何找到与 "我 "有关的符号?
Functions
在一个同情的表情中。我意识到
.free_symbols
,
.atoms(Function)
以及
.atoms(AppliedUndef)
.下面是一些代码,说明为什么这些都不能满足我的需要。
f1 = Function(r'f_1')
f2 = Function(r'f_2')
c1, x = symbols(r'c_1, x')
expr = c1+f1(x)+f2(x)
print(expr)
# c_1 + f_1(x) + f_2(x)
print(expr.free_symbols)
# {x, c_1}
print(expr.atoms(Function))
# {f_1(x), f_2(x)}
from sympy.core.function import AppliedUndef
print(expr.atoms(AppliedUndef))
# {f_1(x), f_2(x)}
(注释是每个打印行的输出)。所以.free_symbols
很好,它给了我c_1
和x
。然而,它没有返回与函数f_1
和f_2
相关的符号(第一个问题:为什么? 它们不是以某种方式免费的吗?).atoms(Function)
也没有帮助。它找到了这些函数,但没有返回它们的相关符号(例如:f_1
),而是返回了整个函数调用(例如:f_1(x)
)。
主要问题。我如何在上述表达式中找到符号f_1
和f_2
?
背景。我之所以想要这个,是因为我想lambdify
以下列方式进行
expr_num = lambdify([c1, f1, f2, x], expr)
但我不想手动给出参数[c1, f1, f2, x]
,而是想在表达式中找到所有必要的符号。