Sympy: укажите производную для функции - PullRequest
1 голос
/ 31 марта 2020

Я хотел бы указать производную функции, которая также является функцией. Есть ли способ, как сделать это в Sympy?

Пример, как это может выглядеть:

import sympy as sp
x, y = sp.symbols('x, y')
fun = sp.Function("myfun")(x, y)

fun.derivative = sp.Function("myfun_derivative")(x,y)

Мой пример использования, что я хочу использовать впоследствии Sygeny Codegen и указать для «myfun» и для «myfun_derivative» стандартных методов, которые используют numpy, потому что они сложны и требуют много времени для обработки sympy.

ОБНОВЛЕНИЕ Решение:

import sympy as sp
x, y = sp.symbols('x, y')

class myfun(sp.Function):
   def fdiff(self, argindex = 1):
      return sp.Function("myfun_derivative")(x, y, argindex)

1 Ответ

1 голос
/ 31 марта 2020

Функция и производная - это просто выражения, поэтому вы можете определять их по мере того, как вы будете sh:

>>> from sympy.abc import x
>>> f = x**2
>>> df = 2*x

Так что теперь f и df представляют вашу функцию и производную.

Вы также можете определить объект, который возвращает эти значения при инициации и дифференциации:

In [10]: class myf(Function):
    ...:     def fdiff(self, i):
    ...:         assert i == 1
    ...:         return 2*x
    ...:     def __new__(self):
    ...:         return  x**2
    ...:

In [11]: myf()
Out[11]:
 2
x

In [12]: myf().diff()
Out[12]: 2·x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...