Interpolacja i zbiory danych w Pythonie

0

Witam, mam problem z generacją odpowiednich zbiorów do interpolacji. Otóż muszę wykonać interpolacje dla funkcji sin(1/x) w zakresie -pi do pi jednak już zbiór danych wejściowych nie generuje pełnego zakresu ponieważ kończy się na ~2.8 a nie 3.14... Oto kod:

from scipy.interpolate import interp1d
import numpy as np
import matplotlib.pyplot as plt
 
x=[i for i in np.arange(-(np.pi),np.pi+0.4,0.4)]
y=[np.sin(1/i) for i in np.arange(-(np.pi),np.pi,0.4)]
 
xinterp=[i for i in np.arange(-(np.pi),np.pi+0.1,0.08)]
opcje=['linear','nearest','zero','slinear','quadratic','cubic',10]
 
for o in opcje:
    finterp=interp1d(x,y,kind=o)
    plt.plot(xinterp,finterp(xinterp), label=o)   
    
plt.plot(x,y,'or')
plt.legend()
plt.show()

Dodam dla uściślenia że dane wejściowe mają być generowane z krokiem 0.4 natomiast interpolowane z krokiem 0.08.

0

nie generuje pełnego zakresu ponieważ kończy się na ~2.8 a nie 3.14...

nie generuje pełnego zakresu ponieważ wartość 2.8 z krokiem 0.4 jest ostatnią możliwą do wykonania, kolejny krok nie jest możliwy bo by była to wartość 3.2 a ona jest poza zakresem


y=[np.sin(1/i) for i in np.arange(-(np.pi),np.pi,0.4)]
0

Takie coś mi wyskoczyło ale chyba to nie ma sensu :D
title

1 użytkowników online, w tym zalogowanych: 0, gości: 1