我想知道如何在一个sympy表达式中找到与Functions相连的符号。我知道^{
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
?你知道吗
背景:我之所以要这样做,是因为我想用以下方式^{
expr_num = lambdify([c1, f1, f2, x], expr)
但是我不想手动给出参数[c1, f1, f2, x]
,而是希望在表达式中找到所有必要的符号。你知道吗
以下是AppliedUndef函数的免费符号和名称:
基于公认的solution by @smichr,下面是一段可以直接附加到问题代码中的代码(为了方便起见,没有添加任何有趣的内容):
相关问题 更多 >
编程相关推荐