正态分布误差
def gaussion(x):truncated normal distribution
a=0.5
b=-4500
c=50000
return (a*x*x+b*x+c)
#产生模拟数据
def simulate_data(x):
return 100+gaussion(x)
#要求参数
def leastsq_parameter(x,y):
#根据给出的X,Y值,构建最小二乘函式
def leastsq_error(para):
err=para[0]*x*x+para[1]*x+para[2]-y
return err
#构建最小二乘采用的参数,3个参数
para=[1,1,1]
#求解参数值
result=leastsq(leastsq_error,para)
return result[0]
#分布一组模拟数据
x_range=[x for x in range(1,21)]
y_list=[simulate_data(x) for x in x_range]
parameter=leastsq_parameter(x_range,y_list)
print('a=%f,b=%f,c=%f'%(parameter[0],parameter[1],parameter[2]))
#画图
y=[parameter[0]*x*x+parameter[1]*x+parameter[2] for x in x_range]
plt.figure()
plt.plot(x_range,y_list,'go',x_range,y,'-b',lw=2)
plt.show()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论