正态分布误差
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小时内删除。