我希望能够定义一个表达式,该表达式获取定义变量的所有值并将表达式计算为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,x, 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?
如果您想要符号函数,请使用Piecewise
expr = Piecewise((0, Eq(x, k1)), (1/(x - k1)/(y - k2), True))
如果您稍后想要根据数值计算此表达式,则应将其转换为数值函数lambdify
f = lambdify((x, y, k1, k2), expr, 'numpy')
我不建议尝试混合 NumPy 和 SymPy 函数,因为这通常不起作用。 NumPy 函数不知道如何使用 SymPy 表达式,SymPy 函数不知道如何使用 NumPy 数组。更好的方法是使用 SymPy 创建符号表达式,根据需要对其进行操作,然后使用lambdify
将其转换为 NumPy 函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)