具有可变长度参数的 lambdify sympy
lambdify sympy with Variable-Length Arguments
我有一个包含不同数量变量的 expr 列表,如下所示:
G = [[-x_1 + y_1], [-x_2 + y_1 + y_2], [y_1 + y_2] , [-y_3] , ....]
我想使用 sympy 和 lambdify 计算这些表达式。为此,我编写了以下说明:
def f(item):
return lamndify(list(tem.free_symbols), item)
for item in G:
f_ = f(item)
...
现在,我应该怎么调用f_,因为每个term都有不同的变量?
也获取相关的 free_symbols
。也许让你的功能 return 适合你,或者重新夺回它们:
def f(item):
return lambdify(list(item.free_symbols), item)
def f2(item):
args = list(item.free_symbols)
return args, lambdify(args, item)
for [gi] in G:
args = list(gi.free_symbols)
f_ = f(gi)
a, f2_ = f2(gi)
assert f_(*args) == f2_(*a)
如果您有一组想要使用的值,例如 vals = {x_1:1,x_2:2,y_1:3,y_2:4,y_3:5}
,那么可以使用类似这样的值:
>>> for [gi] in G:
... a, f2_ = f2(gi)
... v = [vals[i] for i in a]
... print(v, f2_(*v))
...
[3, 1] 2
[3, 2, 4] 5
[3, 4] 7
[5] -5
我有一个包含不同数量变量的 expr 列表,如下所示:
G = [[-x_1 + y_1], [-x_2 + y_1 + y_2], [y_1 + y_2] , [-y_3] , ....]
我想使用 sympy 和 lambdify 计算这些表达式。为此,我编写了以下说明:
def f(item):
return lamndify(list(tem.free_symbols), item)
for item in G:
f_ = f(item)
...
现在,我应该怎么调用f_,因为每个term都有不同的变量?
也获取相关的 free_symbols
。也许让你的功能 return 适合你,或者重新夺回它们:
def f(item):
return lambdify(list(item.free_symbols), item)
def f2(item):
args = list(item.free_symbols)
return args, lambdify(args, item)
for [gi] in G:
args = list(gi.free_symbols)
f_ = f(gi)
a, f2_ = f2(gi)
assert f_(*args) == f2_(*a)
如果您有一组想要使用的值,例如 vals = {x_1:1,x_2:2,y_1:3,y_2:4,y_3:5}
,那么可以使用类似这样的值:
>>> for [gi] in G:
... a, f2_ = f2(gi)
... v = [vals[i] for i in a]
... print(v, f2_(*v))
...
[3, 1] 2
[3, 2, 4] 5
[3, 4] 7
[5] -5