【问题标题】:How do I use multivariable functions in sympy?如何在 sympy 中使用多变量函数?
【发布时间】:2021-09-16 09:34:39
【问题描述】:

我试图在几个输入上评估一个多变量函数,但由于某种奇怪的原因它吐出了一个错误


x = Symbol("x")
y = Symbol("y")

f = x*y
f = lambdify(x, y, f)
print(f(3, 3))

如果我尝试使用单个变量函数做同样的事情,它会正常工作,但是当我尝试使用多变量输入运行相同的代码时,我会收到这样的错误

TypeError: Argument must be a string, dict or module 但它是: x*y

我该如何解决这个问题?我对 SymPy 还是很陌生

【问题讨论】:

标签: python function sympy


【解决方案1】:

如文档所示:

https://docs.sympy.org/latest/modules/utilities/lambdify.html#sympy.utilities.lambdify.lambdify

To call a function like f(x, y) then [x, y] will
be the first argument of the lambdify:

>>> f = lambdify([x, y], x + y)
>>> f(1, 1)
2

【讨论】:

    【解决方案2】:

    函数既可以显式构造,也可以作为符号构造,但不能像你那样。这个f = x*y是一个数学表达式见代码:

    import  sympy as sp
    
    x, y = sp.symbols('x y')
    
    # function
    f = sp.symbols('f', cls=sp.Function)
    f_eval = f(x, y)
    print(f_eval.subs(x, 2))
    
    # expression
    expr = sp.Expr(x*y)
    print(expr.subs(x, 3))
    
    # lambdify
    f = sp.lambdify(args=[x, y], expr=x*y)
    print(f(2, 3))
    

    输出

    f(2, y)
    Expr(3*y)
    6
    

    【讨论】:

    • Error_m = a_ns2*m**2 - b_ns(n)*m + b_ns2(n) Error_prime = Error_m.diff(m) Error_m = lambdify(m, Error_m) Error_prime = lambdify(m, Error_prime) 在这里使用lambdify 不是像这样工作吗?
    • @Madhav Krishna 我不知道您为什么需要使用 lambdify... 以防此处的文档带有示例 docs.sympy.org/latest/modules/utilities/…
    • @Madhav Krishna 已更新。不管怎样,你的问题很模糊,函数或lambdify不一样
    猜你喜欢
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多