Можно ли определить абстрактные составные символы в sympy? - PullRequest
0 голосов
/ 04 января 2019

Я хотел бы использовать символы

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)

и вычислите его первую производную по фи. Возможно ли что-то подобное в симпати?

Композиция функций доступна для функций sympy и , похоже, она работает непосредственно в 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

1 Ответ

0 голосов
/ 05 января 2019

Определите R как функцию (R=Function('R') или R=symbols('R', cls=Function). Или, так как phi и R неразличимы в вашем примере, вы можете просто позволить символу R представлять то, что вы знаете, как функцию phi и использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...