我试图估计一个由不同数量的参数组成的大符号表达式的数值估计(例如21,但假设其他表达式的变量数量未知)。因此,我使用sym.lambdify()
将符号表达式(expression_sym
)转换为python函数(fn_expression
),我可以使用它来查找其相应符号表达式的数值估计值({{1 }})。
expression_sym
现在,我在名为import sympy as sym
symbols_tuple = tuple(expression_sym.free_symbols)
fn_expression = sym.lambdify(symbols_tuple, expression_sym)
的变量中为symbols_tuple
中的所有符号提供常量数值。但是,free_symbols_val
还包含free_symbols_val
中不存在的一些其他变量名称。
symbols_tuple
现在我拥有free_symbols_val = foo() # numerical values for all symbols from some function foo()
中所有符号/变量的所有数值,我可以简单地传递已知属于fn_expression
的变量名称。我无法直接使用expression_sym
作为输入,因为它包含的变量多于free_symbols_val
中的变量。
fn_expression
但是,直接使用fn_num = fn_expression(symbols_tuple)
作为symbols_tuple
的参数会产生如下TypeError:
fn_expression()
我知道python中的TypeError: <lambda>() takes exactly 21 arguments (1 given)
可用于分配未知数量的参数,但这不起作用,即如果我使用*args
它不起作用和抛出以下错误:
fn_expression(*symbols_tuple)