scipy2.1最小二乘法拟合(示例2:拟合非线性函数)

时间:2025-02-24 07:04:30
''' scipy--optimize优化2.0:least_squares最小二乘法拟合 这次拟合一个非线性函数 2020.5.9 ''' import numpy as np import as plt from import least_squares, leastsq x = (-1,1,10) #生成间隔相同的10个数据 y = 3*x**2+x + (10) #产生y的数据,并加上一些噪声 #拟合 a*x**2+b*x+c def residuals(p,x,y): #计算误差函数 a,b,c,d = p wucha = y-(a*x**2+b*x+c*(x)+d) return wucha #做二乘法时需要变成最小值的误差:原函数值-预测函数值 c = least_squares(residuals,[1,1,0,1],args=(x,y)) #func是准备求最小值的函数,[a,b,c]把参数初始化为1,0,0 print(c) print('参数为:', ('x')) Q = sum((residuals(('x'),x,y))**2) print('误差平方和:',Q) #画出散点图 (x,y) #画出