2017-10-19 98 views
2

我有两个功能与sympy的lamdify创建sympy lambdify增加两个功能

a = sympy.lambdify((x, y), K/(2 * math.pi) * sympy.cos(theta)/r) 
b = sympy.lambdify((x, y), -G/(2 * math.pi) * theta) 

如何创建一个新的功能是增加了这两个功能?

我试图c = a + b但我得到了

TypeError: unsupported operand type(s) for +: 'function' and 'function' 

回答

3
c = lambda x, y: a(x, y) + b(x,y) 

会工作。这不是SymPy特有的;只是将两个Python函数合并为第三个。

但在转换为lambda之前添加表达式更合乎逻辑。例如:

var('x y') 
expr1 = x + y 
a = lambdify((x, y), expr1) 
expr2 = x/y 
b = lambdify((x, y), expr2) 
c = lambdify((x, y), expr1 + expr2) 

侧面一句话:我会通过sympy.pi取代math.pi在你的函数,因为math.pi只是一个浮点数,而sympy.pi是公认的数学常数pi一个SymPy对象。