Производная управляемого шлица

Я использую функцию InterpolatedUnivariateSpline из библиотеки scipy.interpolate. Я знаю, что существует функция, оценивающая производную полученного сплайна. Что меня интересует, так это производная журнала сплайна. Есть ли способ рассчитать это напрямую?

Можно ли было бы написать его самостоятельно, используя цепное правило?

FlyingTeller 21.03.2018 13:25

Да. Не знаю, почему я так не думал. Во всяком случае, остается вопрос, можно ли определить функцию, зависящую от сплайна, которую можно дифференцировать с помощью python (аналитически)? Я думаю, что это относится к сплайнам, поскольку полиномиальные функции легко дифференцируются аналитически.

Daniel 21.03.2018 13:30

Можно взять сплайн журнала ваших данных. Тогда производная доступна напрямую.

Jon Custer 21.03.2018 20:05

Да, но это не то же самое, поскольку он должен использовать правило цепочки, как указано выше.

Daniel 22.03.2018 09:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
217
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предложение FlyingTeller, вероятно, оптимален: производная log (f) - это f'/f, который достаточно легко реализовать:

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import InterpolatedUnivariateSpline
x = np.arange(1, 9)
y = np.sqrt(x)                                  # something to use as y-values
spl = InterpolatedUnivariateSpline(x, y)

logder = lambda x: spl.derivative()(x)/spl(x)   # derivative of log of spline

t = np.linspace(x.min(), x.max())
plt.plot(t, logder(t))
plt.show()

plot

Построение сплайна на основе логарифма данных также является разумным подходом, но это не то же самое, что логарифм исходного сплайна.

if you can define a function, depending on a spline, which can be differentiated by python (analytically)

Аналитическая дифференциация произвольной функции выходит за рамки SciPy. В приведенном выше примере я должен был знать, что производным log(x) является 1/x; SciPy этого не знает. SymPy - это библиотека для символьных математических операций, таких как производные.

Можно использовать SymPy, чтобы найти производную функции символически, а затем превратить ее с помощью lambdify в вызываемую функцию, которую могут использовать SciPy, matplotlib и т. д.

Также можно работать со сплайнами в полностью символический путь с помощью SymPy, но это медленно.

Другие вопросы по теме