我希望能够定义一个表达式,它接受定义变量的所有值,并在未定义时将表达式求值为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
如果以后要对数值计算此表达式,则应使用
^{pr2}$lambdify
将其转换为数值函数我不建议尝试混合使用NumPy和SymPy函数,因为这通常行不通。NumPy函数不知道如何使用SymPy表达式,SymPy函数也不知道如何使用NumPy数组。更好的方法是用SymPy创建符号表达式,根据需要对其进行操作,然后使用
lambdify
将其转换为NumPy函数。在您应该在函数内部定义一个函数,然后返回它。像这样:
编辑:
下面是一种使用
^{pr2}$sp.lambdify
的方法,如评论中所述:另一个选择是使用
sp.subs
相关问题 更多 >
编程相关推荐