определить численную оценку производной симплексной функции

Как определить численное оценивание производной функции в sympy? У меня есть некоторые функции, которые я могу описать с помощью сплайнов для функции и ее производной, используя scipy.interpolate. Я хочу манипулировать некоторыми выражениями с помощью этой функции, а затем оценивать выражения с помощью сплайнов.

Я могу использовать lambdify, чтобы функция sympy оценивалась численно как сплайн. Но как я могу определить производную от симплексной функции для численного вычисления сплайна?

Например

import sympy as sp import numpy as np from scipy.interpolate import InterpolatedUnivariateSpline from sympy.ultilitis.lambdify import implemented_function, lambdify r = sp.symbols('r') B = sp.symbols('B', cls=sp.Function) B_spline = InterpolatedUnivariateSpline([1,2,3,4],[1,4,9,16]) B_der_spline = InterpolatedUnivariateSpline([1,2,3,4],[2,4,6,8]) B = implemented_function(B, lambda r: B_spline(r)) class A(sp.Function): nargs = 2 @classfunction def eval(cls, r, B): return r**2*B(r) A_eval = lambdify(r, A(r,B)) A_eval(3) >>> 81.0 A_diff_eval = lambdify(r, sp.diff(A(r,B))) A_diff_eval(3) >>> NameError: global name 'Derivative' is not defined 

  • Sympy - Сравнение выражений
  • Как создать случайную переменную Rician?
  • проблема с отображением sympy rendered svg в python
  • Преобразование выражений sympy в функции массивов numpy
  • Установка версии github пакета с Anaconda
  • Выражение факторного симпсипа для матричных коэффициентов?
  • Оценить выражение sympy из массива значений
  • sympy компиляция с большими матрицами
  • One Solution collect form web for “определить численную оценку производной симплексной функции”

    SymPy не знает, как взять производную от функции сплайна, так как она имеет только числовую версию из scipy.

    Кроме того, A здесь может быть просто функцией Python, так как вы никогда ее не оцениваете. Это также имеет большее значение в том, что передача функции в качестве аргумента функции SymPy немного нечетна.

    Все implemented_function : symfunc._imp_ = staticmethod(implementation) (здесь symfunc = B и implementation = lambda r: B_spline(r) ). Вам также нужно будет добавить fdiff чтобы он возвращал новую функцию Sympy для B_der_spline . Что-то вроде

     class B_spline_sym(Function): _imp_ = staticmethod(B_spline) def fdiff(self, argindex=1): return B_der_spline_sym(self.args[0]) class B_der_spline_sym(Function): _imp_ = staticmethod(B_der_spline) def A(r, B): return r**2*B(r) 

    дающий

     In [87]: B = B_spline_sym In [88]: A_eval = lambdify(r, A(r,B)) In [89]: A_eval(3) Out[89]: 81.0 In [91]: A_diff_eval = lambdify(r, sp.diff(A(r,B))) In [92]: A_diff_eval(3) Out[92]: 108.0 
    Interesting Posts

    Как отправить электронное письмо с вложением .csv с помощью Python

    Портирование Python во встроенную систему

    «Невозможно запустить новую ошибку потока» в Python

    Как установить pyobbc 64-bit?

    Учитывая матрицу типа `scipy.sparse.coo_matrix`, как определить индекс и значение максимума каждой строки?

    Odoo / OpenERP: скрытие кнопки создания из дерева

    Экспорт в алфавитном порядке в Python ConfigParser

    Что означает значение $ при выполнении команд?

    Solr: лучшие документированные, простые в использовании, стабильные API-интерфейсы Python

    Многопроцессорность Python: как я могу делиться между несколькими процессами?

    Перевод многобайтовых символов в 7-разрядный ASCII в Python

    Python печатает "…" на очень большом выходе

    Как я могу захватить параметр API в представлении Django?

    не может изменить шрифт на Helvetica в Matplotlib в Python на Mac OS X 10.6

    «Соединение было сброшено» в веб-браузерах при попытке подключения к серверу сокетов localhost

    Python - лучший язык программирования в мире.