数学建模--非多项式拟合法的Python实现

目录

  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()
#*************************************************************************************************************#

  4.算法效果展示

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温柔济沧海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值