Не могу подобрать функцию для метода curve_fit from scipy.optimize. График - какие-то периодические зубцы

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy.stats import sem
x=[-10.0, -9.5, -9.0, -8.5, -8.0, -7.5, -7.0, -6.5, -6.0, -5.5, -5.0, -4.5, -4.0, -3.5, -3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10.0]
y=[4.996854391689014, -0.713243975985774, -30.473888954803158, 3.021990518858332, -2.1160294979416223, 26.149319454578535, 1.653713086250491, -4.187019548831688, 9.067581458880232, 0.4925880438266922, -8.42064910890554, 5.0772495173441765, -0.6745343001021835, -28.450431796385793, 3.071434382639753, -2.0654486418429165, 27.726840488874945, 1.6920194335324266, -4.10329046140488, 9.268154121039505, 0.52799466799343, -8.212164785052646, 5.159279797391741, -0.6360300975455665, -26.670851152888087, 3.121437977829776, -2.0154450466528933, 29.50642113237265, 1.7305236360890437, -4.021260181357317, 9.476638444892398, 0.5634012921601678, -8.011592122893372, 5.243008884818549, -0.597723750263631, -25.093330118591673, 3.1720188339284823, -1.9660011828714719, 31.52987829079002, 1.7692333119726338, -3.940865055702153]
err=[0.07766093980139127, 0.07766093980139128, 0.07766093980139095, 0.07766093980139126, 0.07766093980139126, 0.07766093980139095, 0.07766093980139128, 0.07766093980139124, 0.07766093980139127, 0.07766093980139128, 0.07766093980139127, 0.07766093980139127, 0.07766093980139128, 0.07766093980139095, 0.07766093980139133, 0.07766093980139126, 0.07766093980139095, 0.07766093980139128, 0.07766093980139124, 0.07766093980139127, 0.07766093980139128, 0.07766093980139127, 0.07766093980139124, 0.07766093980139128, 0.07766093980139095, 0.07766093980139126, 0.07766093980139133, 0.07766093980139095, 0.07766093980139128, 0.07766093980139126, 0.07766093980139127, 0.07766093980139127, 0.07766093980139127, 0.07766093980139124, 0.07766093980139128, 0.07766093980139095, 0.07766093980139126, 0.07766093980139126, 0.07766093980139095, 0.07766093980139126, 0.07766093980139126]
x= np.asarray(x)
y=np.asarray(y)
err=np.asarray(err)
plt.errorbar(x, y, yerr=err, color='red',label='эксперементальные данные',capsize=0.01,ms=2)


def f_line(i,a,aa,b,bb,de,e):
    return a * np.sin(aa*np.pi*i) + b * np.cos(bb*np.pi*i)+ de*i + e
args, covar = curve_fit(f_line, x, y,maxfev=10000) 

y1=[f_line(i,args[0],args[1],args[2],args[3],args[4],args[5]) for i in x]
plt.plot(x,y1, color='black',label='curva');
plt.grid()
plt.legend()
def error(y, y1):
    return np.sum((y-y1)**2)
print((error(y, y1))/len(x))
x=list(x)
y=list(y)
print(y)
print()
print(y1)

'''


Ответы (0 шт):