0

我有一个 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_ 因为每个术语中有不同的变量?

4

1 回答 1

1

得到相关的free_symbols,也是。也许让你的函数为你返回那些或者重新捕获它们:

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
于 2022-02-01T13:57:14.963 回答