Enostavne poti žal ne poznam (morda lahko tukaj kdo pomaga), sam pa bi razmišljal v tej smeri:
Za vaše pare točk x, y iščete interpolacijsko funkcijo y = f(x). Če želite pri interpolaciji v eni izmed poznanih točk x_i "vsiliti" ekstrem funkcije, boste morali v tej točki predpisati nično vrednost odvoda, torej f'(x_i) = 0.
EDIT: Očitno lahko funkciji KroghInterpolator podamo vrednost odvoda le v eni, izbrani točki. To je torej "enostavna" pot (podrobnosti o uporabi najdete v dokumentaciji):
scipy.interpolate.KroghInterpolator je Scipyjeva funkcija, ki omogoča predpis vrednosti odvodov v izbranih točkah. Če poskusim simulirati vaš primer:


Druga ideja je uporaba Scipyjeve funkcije scipy.interpolate.CubicSpline. Ta je namenjena interpolaciji s kubičnimi zlepki, in omogoča predpis vrednosti odvoda inteprolacijskega zlepka v robnih točkah. Da bi na ta način lahko določili vrednost odvoda v izbrani točki, je treba razdeliti vaše interpolacijsko območje na dva intervala - levo in desno od vašega željenega ekstrema. Na dobljenih območjih nato interpolirate z uporabo CubicSpline, pri čemer izberete opcijo bc_type='clamped', kar pomeni vrednosti f'(x) = 0 na robovih obeh območij. Ker je vaša točka x_i na robu obeh intervalov (končna točka prvega in začetna točka drugega), ste s tem dobili interpolacijski zlepek z ekstremom v izbrani točki. Težava je le v tem, da niste dobili ene same interpolacijske funkcije, temveč eno, ki velja levo od ekstrema (cs1 v primeru) in drugo, ki velja desno od ekstrema (cs2).
