Есть ли какой-нибудь способ обеспечить соблюдение этих граничных условий при подгонке сплайна?
Есть ли способ обеспечить соблюдение этих граничных условий при подгонке сплайна?
p>
Вот изображение, на котором видно, что сплайн хорошо вписывается, но аппроксимация плохая около 0, где он принимает значение около 0,08:
Я знаю bc_type для различных сплайнов, но, насколько я могу судить, это позволяет только указать 1-ю и 2-ю производную, а не фиксировать граничные значения.
(Возможно, этот вопрос выдает мое незнание того, как устанавливаются сплайны, и что то, о чем я прошу, невозможно. Я просто хочу убедитесь, что я не упустил что-то очевидное.)
Вот игрушечный пример:
Код: Выделить всё
import numpy as np
from scipy.interpolate import UnivariateSpline
import matplotlib.pyplot as plt
## Generate noisy evaluations of the square root function.
## (In my exmaple, I don't have a closed form expression for my function)
x = np.linspace(0,1,1000)
y = np.sqrt(x) + (np.random.random(1000)-0.5)*0.05
## Fit spline
spline = UnivariateSpline(x,y)
plt.figure(figsize=(7,7))
plt.scatter(x,y,s=1,label="Monte Carlo samples")
plt.plot(x,spline(x),color='red',label="spline")
plt.legend()
plt.title("Noisy evaluations of sqrt")
plt.grid()
plt.show()

Подробнее здесь: https://stackoverflow.com/questions/784 ... n-a-spline