数学建模插值分析法(附完整代码)python实现(插值&拟合)

直白来说
插值:求过已知有限个数据点的近似函数。
拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最小。
插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。而面对一个实际问题,究竟应该用插值还是拟合,有时容易确定,有时则并不明显。

数学建模插值分析法(附完整代码)python实现(插值&拟合)
插值函数的作用就是用于函数的拟合. 通常插值函数的应用就是通过函数表来构造一个足够简单, 并且能够反映函数 的特征的函数。
数学建模插值分析法(附完整代码)python实现(插值&拟合)
并且插值函数具有唯一性
数学建模插值分析法(附完整代码)python实现(插值&拟合)
这样表示的话矩阵为
数学建模插值分析法(附完整代码)python实现(插值&拟合)
数学建模插值分析法(附完整代码)python实现(插值&拟合)
理论大概就是这些吧,CSDN我不会在上面打公式,所以在word里打好直接截图了,做建模的时候可能要费点劲了,那么说句最直白的,插值分析分为两种方法,一种是内插法和外插法,最大的区别就是处理方法不同、职责不同、工作内容不同,
核心区别就是:内插法在样本数据的范围内预测,比外插法要准。用回归方程预测范围以外的数值称为外插法,而内插法是对数据范围内的点进行预测。
内插比外插要准的多。下面用内插法实现。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.interpolate import UnivariateSpline
plt.rcParams['font.sans-serif'] = ['simhei']
plt.rcParams['axes.unicode_minus'] = False
data=pd.read_excel(open('data.xlsx', 'rb'), sheet_name='Sheet1')
x= data['自变量']
y= data['因变量']
print('光滑因子默认为0.1 如需修改请查看源码')
print('默认内插法分析')
print('请输入要插值自变量的起始值:')
input1=input(int())
print('请输入要插值自变量的中止值:')
input2=input(int())
print('请输入要插入点的个数:')
input3=input(int())
print('请输入图表标题:')
input4=input(str())
print('请输入自变量名称:')
input5=input(str())
print('请输入因变量名称:')
input6=input(str())

xnew = np.linspace(int(input1),int(input2),int(input3))
fSpl1 = UnivariateSpline(x, y, s=0)
y1 = fSpl1(xnew)
fSpl2 = UnivariateSpline(x, y)
y2 = fSpl2(xnew)
fSpl2.set_smoothing_factor(0.1)
y3 = fSpl2(xnew)
print("拟合后最终结果为:%s"%y3)

fig, ax = plt.subplots(figsize=(8,6))
plt.plot(x, y,'s',markersize=15,
         markerfacecolor="black",label="真实值")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.plot(xnew, y3, 'b--', label="插值结果",ms=10)
plt.xlabel(str(input5),size=14)
plt.ylabel(str(input6),size =14)
ax.set_title(str(input4))
plt.legend(loc="best")
with open('插值结果.txt',"w+",encoding='utf-8') as fp:
    fp.write(str(y3))
plt.show()

代码释义 fSpl2.set_smoothing_factor(0.1)意思是平滑因子为0.1 当然我认为平滑因子是0.1可以了不用过分追究。
使用时在根目录文件夹下放一个data.xlsx的文件如图所示

数学建模插值分析法(附完整代码)python实现(插值&拟合)
data.xlsx文件内设为两列 一列命名为自变量 另一列命名为因变量如图所示:
数学建模插值分析法(附完整代码)python实现(插值&拟合)
起始值随意 要看预测哪一路段,中止值同起始值。插入值50个点最好,下面就是设置图表格x轴y轴名字。
数学建模插值分析法(附完整代码)python实现(插值&拟合)
运行结果为:
数学建模插值分析法(附完整代码)python实现(插值&拟合)
上次没做好 仅拿了美赛H奖,唉 算是人生的一大遗憾。
数学建模插值分析法(附完整代码)python实现(插值&拟合)
GOOD LUCK for everybody
——from deyuLiang

Original: https://blog.csdn.net/weixin_46900108/article/details/126529405
Author: 学成七步
Title: 数学建模插值分析法(附完整代码)python实现(插值&拟合)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619195/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球