Как математически работает экстраполяция scipy.interpolate.CubicSpline? - PullRequest
0 голосов
/ 25 июня 2018

я пытаюсь понять, как scipy.interpolate.CubicSpline (..., extrapolate = True) работает внутренне: как именно Сципи осуществляет математическую экстраполяцию точки x за пределами [a, b]?

Я ищу формулу, такую ​​как: Score (x) = exp (-x + b), если x> b (что НЕ похоже на то, как они это реализуют!).

Пробовал смотреть на исходный код, не смог выяснить, как он реализован. Документация также не дает никаких подробностей.

1 Ответ

0 голосов
/ 25 июня 2018

Сплайн является кусочно-полиномиальным, то есть есть несколько подинтервалов интервала данных [a, b], на каждом из которых это просто полином. При extrapolate=True полином от самого левого интервала используется для x < a, а полином от самого правого интервала используется для x > b. Это то, что документация описывает как

экстраполировать на запредельные точки на основе первого и последнего интервалов,

Очень просто и очень бесполезно. Вот иллюстрация.

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import CubicSpline
f = CubicSpline([-2, -1, 0, 1, 2], [1, 1, 0, 2, 2], extrapolate=True)
t = np.linspace(-4, 4)
plt.plot(t, f(t))
plt.show()

Все заданные значения y находятся между 0 и 2, но кубические полиномы делают паршивую экстраполяцию.

plot

...