Interpolacja i zbiory danych w Pythonie

Interpolacja i zbiory danych w Pythonie
P0
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad rok
  • Postów:32
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:

Kopiuj
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.

cmd
  • Rejestracja:około 10 lat
  • Ostatnio:dzień
  • Lokalizacja:Warszawa
  • Postów:443
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

Kopiuj

y=[np.sin(1/i) for i in np.arange(-(np.pi),np.pi,0.4)]
edytowany 2x, ostatnio: cmd
P0
A zatem co można zrobić żeby był pełny zakres?
cmd
Szczerze na tą chwilę nie wiem, przy dowolnej innej liczbie coś by się wymyśliło, ale jak to ugryźć z np.pi to mam małą blokadę mentalną. Ogólnie ten krok wydaje mi się bardzo duży jak na te wartości i dokładność zakresu do Pi.
P0
Właśnie też się nad tym zastanawiam i nie mam pomysłu więc napisałem tutaj
cmd
Ogólnie ten kod jest z deka zbugowany, dopiero za 4 razem udało mi się go odalić, jesteś pewien że u Ciebie działa bez problemu? :D
cmd
  • Rejestracja:około 10 lat
  • Ostatnio:dzień
  • Lokalizacja:Warszawa
  • Postów:443
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.