1
azalmaya bittiği yerde böyle bir dizi tanımlamak verilere sahip bulun: Ben noktalarını güçlü azalan başlar ve biter hesaplanırken ilgileniyorumbir işlev başlar ve
.
Yani benim fonksiyonunun ikinci türevi calcuted ve negatif minimum orada (azalan başlayın) puan ve pozitif maksimum olsun: İşte öyle.Ama vakaların çoğunda elde neyi benzerdir:
Burada yanlış? Yanlış bir şey yapmıyoruz
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import InterpolatedUnivariateSpline
# set x and y
y = data_series
x = range(len(data_series))
# interpolation
f = InterpolatedUnivariateSpline(x, y)
# gen function points
new_x = np.linspace(min(x), max(x), num=1000, endpoint=True)
new_y = f(new_x)
# calculate second derivative
y_df1 = np.insert(np.diff(y), 0, 0)
y_df2 = np.insert(np.diff(y_df1), 0, 0)
# points where the decrease starts and ends
# (where the second derivative is minimum and maximum)
x_dec = np.where(y_df2 == min(y_df2))[0][0]
x_inc = np.where(y_df2 == max(y_df2))[0][0]
# plot
plt.plot(new_x, new_y, 'b', lw=3, alpha=0.7)
plt.plot(x_dec, f(x_dec), 'ro', ms= 8)
plt.plot(x_inc, f(x_inc),'ro', ms=8)
plt.show()
Grafikteki ilk nokta, ikinci türevin sıfıra en yakın olmadığı, ancak asgari (ve negatif bir değer) olduğu yerdir. Bununla birlikte, düşüşün başladığı noktada eğri üzerindeki noktayı yakalamak için herhangi bir yol var mı (50 civarında x olmalıdır)? – Ewybe
Np.where (y_df1 <0) [0] [0] 'gibi bir şey mi kastediyorsunuz? Bu size, 'y' in ilk türevinin negatif olduğu ilk endeksi verir. (Keyfi bir sınır almak için
acdr