我想使用符号
from sympy import *
phi,p,R,n,x1,k,f = symbols('phi,p,R,n,x1,k,f')
编写抽象函数
f = R(phi) - p * n * R(phi)**2 * x1 - k * cos(R(phi)) (1)
并根据phi计算其一阶导数。在sympy中有可能出现这种情况吗?
sympy functions和it seems to work的功能组合可直接在diff
中作为参数使用,但第(1)行会导致
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-17-0771d7cb2d7b> in <module>
----> 1 f = R(phi) - p * n * R(phi)**2 * x1 - l * cos(R(phi))
TypeError: 'Symbol' object is not callable
答案 0 :(得分:2)
将R定义为函数(R=Function('R')
或R=symbols('R', cls=Function)
。或者,由于phi和R在您的示例中是无法区分的,因此只需让符号R代表您知道的phi和R的函数)即可。使用idiff
:
>>> idiff(f - (R - p * n * R**2 * x1 - k * cos(R)),(R, f),phi) # dR/dphi
Derivative(f, phi)/(-2*R*n*p*x1 + k*sin(R) + 1)
>>> idiff(f - (R - p * n * R**2 * x1 - k * cos(R)),(f,R),phi) # df/dphi
(-2*R*n*p*x1 + k*sin(R) + 1)*Derivative(R, phi)