加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 12:33:27 所属栏目:Python 来源:网络整理
导读:我希望能够定义一个表达式,该表达式获取定义它的变量的所有值,并在未定义时将表达式计算为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)) re
我希望能够定义一个表达式,该表达式获取定义它的变量的所有值,并在未定义时将表达式计算为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}))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读