目录
1.算法异同区别
2.算法核心步骤
3.算法核心代码
4.算法效果展示
1.算法异同区别
#*************************************************************************************************************#
方法区别探究
1.对于多项式拟合你需要大致知道这些点的分布,有的时候点比较多就很难进行进一步的联想
2.如果我们采用非多项式拟合的话,我们可以采用最小二乘法的关系来进行进一步的逼近和拟合,最终获得比较合适
的函数的系数即可
#*************************************************************************************************************#
2.算法核心步骤
#继续研究非多项式拟合方法,我们采用的是scipy中的curve_fit函数来来进行拟合
#curve_fit的函数用法
#curve_fit(fun,x,y)
#其中fun是需要拟合而成的函数模板,x和y分别是拟合数据
#比如给出的点呈现于指数函数的变化方式,所以我们就设定指数函数
#具体的算法步骤如下所示:
#1.指数拟合的函数设模板
#2.导入需要拟合的数据
#3.利用curve_fit进行多项式的拟合的
#4.计算拟合函数的y值
#5.进行可视化绘图比较
3.算法核心代码
#*************************************************************************************************************#
#方法区别探究
#1.对于多项式拟合你需要大致知道这些点的分布,有的时候点比较多就很难进行进一步的联想
#2.如果我们采用非多项式拟合的话,我们可以采用最小二乘法的关系来进行进一步的逼近和拟合,最终获得比较合适的函数的系数即可
#继续研究非多项式拟合方法,我们采用的是scipy中的curve_fit函数来来进行拟合
#curve_fit的函数用法
#curve_fit(fun,x,y)
#其中fun是需要拟合而成的函数模板,x和y分别是拟合数据
#比如给出的点呈现于指数函数的变化方式,所以我们就设定一下函数
#*************************************************************************************************************#
#**********************************************#
#首先将需要的库和函数进行导入
import sys
import os
import numpy as np
import pylab as plb
import matplotlib as plt
from scipy.optimize import curve_fit
#**********************************************#
#**********************************************#
#curve_fit的函数用法
#curve_fit(fun,x,y)
#其中fun是需要拟合而成的函数模板,x和y分别是拟合数据
#**********************************************#
#*************************************************************************************************************#
#1.指数拟合的函数设模板
def fited_fun(x,a,b,c):
return np.power(a,x)*b+c
#2.导入需要拟合的数据
x = np.arange(1, 31, 1)
y = np.array([20, 23, 26, 29, 32, 35, 38, 45, 53, 62, 73, 86, 101, 118, 138, 161, 188, 220,
257, 300, 350, 409, 478, 558, 651, 760, 887, 1035, 1208, 1410])
#3.利用curve_fit进行多项式的拟合的
p_xishu,p1=curve_fit(fited_fun,x,y)#p_xishu表示拟合返回的list数组中a,b,c的值
#4.计算拟合函数的y值
y_new=[fited_fun(i,p_xishu[0],p_xishu[1],p_xishu[2])for i in x]
#5.进行可视化绘图比较
ax0=plb.plot(x,y,'o--',label='OLD VALUES')
ax1=plb.plot(x,y,'*--',label='FITED VALUES')
plb.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0.875))
plb.title('Non-Polynomial Fitting Curve',color='r')
plb.xlabel('x value range',color='r')
plb.ylabel('y value range',color='r')
plb.savefig('C:/Users/Zeng Zhong Yan/Desktop/Non-Polynomial Fitting Curve.png', dpi=200, bbox_inches='tight')
plb.show()
#*************************************************************************************************************#