Kiedy próbuję dopasować moje dane, wyniki są nieco dziwne, a ja nie rozumiem dlaczego? Uzyskane dopasowanie jest płaskie, a pierwsze wejście e = 0. wydaje się gdzieś podnosić błąd podziału. Sprawa jest tylko pracuje kiedy modyfikować e [0] = 1.0e-9scipy dziwne wyniki z dopasowania krzywej
Wynik jest następujący:
Od przykład here wydaje się, że mój przykład nie jest tak daleko od tego co czytałem , ale utknąłem, więc czy możesz mi pomóc, proszę, co się dzieje w moim przypadku?
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
src_s = np.array((45.59,50.66664,59.74871,65.71018,72.76012,79.06256,84.13755,90.39944,
96.33653,101.65667,106.27968,110.76301,114.41808,117.21922,120.51836))
src_e = np.array((0.0,0.00126,0.00503,0.00804,0.01228,0.01685,0.02127,0.02846,0.03666,
0.04581,0.05620,0.06882,0.08005,0.09031,0.10327))
# plot source data
plt.plot(src_e, src_s, 'o')
# fitting function
def sigma(e, k ,n): return k*(e**n)
# find parameters curve fitting
param, var = curve_fit(sigma, src_e, src_s)
new_e = np.linspace(src_e.min(), src_e.max(), 50)
plt.plot(new_e, sigma(new_e, *param))
# modify first input
src_e[0]=1.0e-9
# relaunch parameters curve fitting
param, var = curve_fit(sigma, src_e, src_s)
new_e = np.linspace(src_e.min(), src_e.max(), 50)
plt.plot(new_e, sigma(new_e, *param))
plt.show()
Z góry dziękuję za pomoc.
Proszę wyjaśnić „Wyniki są nieco dziwne, a ja nie rozumiem, dlaczego” –
dodałem zdjęcie dla Ciebie. Witamy w SO! ;) –
Dziękuję przyjacielu;) Weź piwo! – Jyb