匿名的Sympy表达式

3

我有这样的代码,其中将sympy函数传递到一个列表中:

    if name == "sqrt":
        func.append(sympy.sqrt)
    elif name == "abs":
        funcs.append(sympy.Abs)
    elif name == "sin":
        funcs.append(sympy.sin)
    elif name == "cos":
        funcs.append(sympy.cos)
    elif name == "tan":
        funcs.append(sympy.tan)
    elif name == "exp":
        funcs.append(sympy.exp)

等等。我需要用sympy.Min(1, sympy.exp(x))替换(我知道这不是正确的语法)sympy.exp(x)。我该如何做到参数隐含并将其添加到列表中,就像内置函数一样?


所有name与函数相同的情况都可以通过funcs.append(getattr(sympy, name))来覆盖。 - Nick Matteo
1个回答

0
使用lambda表达式:funcs.append(lambda x: sympy.Min(1, sympy.exp(x)))

1
这正是我所想的,但这不会破坏符号相关的东西吗?比如打印和其他操作。 - Elliot Gorokhovsky
嗯,type((lambda x: sympy.Min(1, sympy.exp(x)))(1))<class 'sympy.core.numbers.One'> - 这不好吗?我对sympy不太熟悉。 - zw324
1
你可以使用 sympy.Lambda(x, sympy.Min(1, sympy.exp(x)) 来创建一个符号 Lambda。 - asmeurer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接