微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 如何使用sympy定义条件函数?

我希望能够定义一个表达式,该表达式获取定义它的变量的所有值,并在未定义时将表达式计算为0.
与此类似: –

import numpy as np
    import sympy as sp

    def expr(k1,k2):
        x,y =sp.symbols('x y')
        if x == k1 :
            fn = 0
        else:
            fn = np.divide(1,(x-k1)*(y-k2))
        return fn,x,y

    f,y = expr(1,2)
    print(f)
    fx = f.subs({x:1,y:4})
    print(fx)

那么,一旦定义了函数,如何检查相等或条件?

fn = 1 /(x-1)(y-2);如何将x = 1或y = 2设置为0?

解决方法

您应该在函数内定义一个函数,然后返回它.像这样:

import numpy as np
import sympy as sp

def expr(k1,k2):
    x,y =sp.symbols('x y')
    def fn(x,y):
        if x==k1:
            return 0
        else:
            return np.divide(1,(x-k1)*(y-k2))
    return fn,y


f,2)
print(f(x,y))
print(f(1,4))

编辑:

以下是在评论中使用sp.lambdify的一种方法

x_dot = 1 / ((x - 1) * (y - 2))
f = lambda a,b : 0 if a==1 or b==2 else sp.lambdify((x,y),xdot,"numpy")(a,b)

另一种选择是使用sp.subs

f = lambda a,b: 0 if a==1 or b==2 else float(x_dot.subs({x:a,y:b}))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐