一维差值拟合


import numpy as np
from matplotlib import pyplot as plt
from scipy.interpolate import interp1dy=[3,5,9,7,18,16,6,5,9,10]
x=np.linspace(0,9,num=10)
#x=[0,1,2,3,4,5,6,7,8,9]#画出原始的序列
plt.figure()
plt.plot(x,y,'ro')
plt.legend()
plt.show()#将原始序列分成多段,用一次函数拟合为函数f1和用三次函数拟合为函数f2
f1=interp1d(x,y,kind='linear')
f2=interp1d(x,y,kind='cubic')#在原区间内均匀选取30个点,因为要插值到长度30.
x_pred=np.linspace(0,9,num=30)#用函数f1求出插值的30个点对应的值
y1=f1(x_pred)
#在图中画出插值的30个点并连成曲线
plt.figure()
# 颜色字符:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’ 青绿色,’#008000’ RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。
# 线条样式:’‐’ 实线,’‐‐’ 破折线,’‐.’ 点划线,’:’ 虚线。
# 标记字符:’.’ 点标记,’,’ 像素标记(极小点),‘o’ 实心圈标记,‘v’ 倒三角标记,’^’ 上三角标记,’>’ 右三角标记,’<’ 左三角标记 等等。
plt.plot(x,y,'bo')
plt.plot(x_pred,y1,'-rx',label='linear')
plt.legend()
plt.show()#用函数f2求出插值的30个点对应的值
y2=f2(x_pred)
#在图中画出插值的30个点并连成曲线
plt.figure()
plt.plot(x,y,'bo')
#三次插值的点
plt.plot(x_pred,y2,'-rx',label='cubic')
plt.legend()
plt.show()

运行结果

二维差值拟合并画等高线

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import Rbf#引入径向基函数# data=pd.read_table(r'D:Desktop\新建文本文档.txt', #文件路径,前面的filepath_or_buffer符可以省略掉
#          sep=','#指定数据中变量之间的分隔符,注意这里是中文的逗号 ,
#          header=None , #不需要将原来的数据中的第一行读作表头
#          names=['id','name','gender','native place'] , #重新为各列起变量名称
#          converters={'id':str} ,#将ID转换为字符串,以免开头的00消失
#          skiprows=2 , #跳过开头的两行数据
#          skipfooter=2, #跳过末尾的两行数据
#          comment='!' #不读取“!”开头的数据行
#          )
filename=r'D:\FILEEEEEEEEEEE\0.txt'#数据文件地址,附件1df=pd.read_table(filename,sep=",",header=None ,engine='python')#读取文件
# print(df)
df1=df[0]#读取第一列数据df2=df[1]#读取第二列数据
df3=df[2]#读取第三列数据
odf1=np.linspace(600,1900,50)#设置网格经度
odf2=np.linspace(50,450,50)#设置网格纬度
odf1,odf2=np.meshgrid(odf1,odf2)#网格化
func=Rbf(df1,df2,df3,function='linear')#定义插值函数plt.cm.hot
odf3_new=func(odf1,odf2)#获得插值后的网格累计降水量
plt.contourf(odf1,odf2,odf3_new,levels=np.arange(odf3_new.min(),odf3_new.max(),(odf3_new.max()-odf3_new.min())/10),cmap='GnBu',extend='both')#画图
# 添加等高线
line = plt.contour(odf1,odf2,odf3_new,levels=np.arange(odf3_new.min(),odf3_new.max(),(odf3_new.max()-odf3_new.min())/10))
plt.clabel(line , inline=True, fontsize=12)
plt.show()
D:\FILEEEEEEEEEEE\python_math\pythonProject\Scripts\python.exe D:/FILEEEEEEEEEEE/python_math/差值拟合二维.py0    1     2
0   900   50   120
1   850   70   150
2   950  120    60
3  1000  400   500
4  1200  300  1200
5  1200  400   800
6   900  100   200
7  1500  200   600

关于拟合,低次拟合和指数拟合

#程序文件Pex15_1.py
import numpy as np
#plot画图的,rc是字体,legend是图例
from matplotlib.pyplot import plot,show,rc,legend,subplot
from scipy.optimize import curve_fit#字体15号,细黑
rc('font',size=15);rc('font',family='SimHei');
#arange生成数列,一个参数是终点前闭后开区间,两个参数起点终点,三个参数是步长
t0=np.arange(1,7)
x0=np.array([5.081, 4.611, 5.1177, 9.3775, 11.0574, 11.0524])
# polyfit是低阶拟合,(x坐标,y坐标,自变量最高阶数)xt返回多形式系数由高到低排列
# print(xt)#输出的是k(斜率)和b(截距)n=len(x0); jibi=x0[:-1]/x0[1:]  #求级比
bd1=[jibi.min(),jibi.max()]    #求级比范围
bd2=[np.exp(-2/(n+1)),np.exp(2/(n+1))]   #q求级比的容许范围
print("级比",bd1)
print("级比容许范围",bd2)
if bd1[0]<=bd2[0] :print("级比下限不合适,请修改级比")
if bd1[1]>=bd2[1]:print("级比上限不合适,请修改级比")xt=np.polyfit(t0,x0,1);
#xh1返回多项式的值,就是x依次取t0中每个元素的值时xh1的值(kx1+b、kx2+b、kx3+b.....
xh1=np.polyval(xt,t0)  #计算预测值
print("拟合的函数带入t0的各值的结果为",xh1)
xh2=np.poly1d(xt)
print("拟合函数为",xh2)
delta1=abs((xh1-x0))/x0   #计算相对误差#累加
x1=np.cumsum(x0)
#不用管lambda函数,xh2是个指数函数a*e^bt+c
xh2=lambda t,a,b,c: a*np.exp(b*t)+c
#curve_fit用于拟合指数函数,返回值para三个值依次是参数abc
para, cov=curve_fit(xh2, t0, x1)
xh21=xh2(t0,*para) #计算累加数列的预测值
#diff是求后一项与前一项的差值例:输入,[1,2,3,8,7]则,输出,[1,1,5,-1]np_r是合并两个元素,这里还原了累加的数据关系为原来的
xh22=np.r_[xh21[0],np.diff(xh21)]  #计算预测值
delta2=np.abs((xh22-x0)/x0)  #计算相对误差
print("拟合残差为",delta2)print("拟合的参数值为:", para); subplot(121)
plot(t0,x0,'s'); plot(t0,xh1,'*-')
legend(('原始数据点','线性拟合'),loc='upper left')
subplot(122); plot(t0,x1,'o'); plot(t0,xh21,'p-')
legend(('累加数据点','累加后拟合')); show()

运行结果为

级比 [0.5457424686750201, 1.1019301669919759]
级比容许范围 [0.751477293075286, 1.33071219744735]
级比下限不合适,请修改级比
拟合的函数带入t0的各值的结果为 [ 3.89788095  5.42519524  6.95250952  8.47982381 10.0071381  11.53445238]
拟合函数为
1.527 x + 2.371
拟合残差为 [0.08850618 0.09354655 0.24145114 0.14633114 0.08778848 0.14991049]
拟合的参数值为: [ 15.3914543    0.23111521 -14.76199989]
Can't find filter element
Can't find filter element进程已结束,退出代码0

备战数学建模六之差值拟合相关推荐

  1. 数学建模方法 —【06】拟合方法之curve_fit

    拟合方法--curve_fit 今天来说说curve_fit拟合方法,在前面的博文中,我也介绍了其他两种拟合方法以及拟合优度的计算,有兴趣的读者可以看看: 数学建模方法-[03]拟合优度的计算(pyt ...

  2. 备战数学建模(Python)

    备战数学建模(Python) Python之建模规划篇 Python之建模数值逼近篇 Python之建模微分方程篇 由于美国大学生数学建模大赛很快就要开赛了,所以我就打算在这几天内,好好的看看< ...

  3. 数学建模专栏 | 开篇:如何备战数学建模竞赛之 MATLAB 编程

    作 者 简 介 卓金武,MathWorks中国高级工程师,教育业务经理,在数据分析.数据挖掘.机器学习.数学建模.量化投资和优化等科学计算方面有多年工作经验,现主要负责MATLAB校园版业务.曾2次获 ...

  4. 备战数学建模国赛,快速搞定算法模型!

    全世界只有3.14 % 的人关注了 青少年数学之旅 说到数学建模,大家的第一反应就是国赛.美赛等数学建模比赛,但这只是冰山一角,不过这个反应却也很正常,因为很多小伙伴接触数学建模的契机,大部分还是因为 ...

  5. matlab实现查值,[数学建模(六)]使用MATLAB实现插值

    常用的插值:拉格朗日多项式插值.牛顿插值.分段线性插值.Hermite 插值和三次样条插值. 1.拉格朗日插值法 function y=lagrange(x0,y0,x); n=length(x0); ...

  6. 备战数学建模15-灰色关联分析与灰色预测模型

    目录 一.灰色系统理论与灰色关联分析 1-灰色预测的概念 2-灰色关联度与优势分析 3-灰色关联分析案例分析 4-灰色生成数列 二.灰色预测模型 1-灰色模型GM 2-灰色模型GM的建模步骤 3-灰色 ...

  7. 备战数学建模35-时间序列预测模型

    目录 一.时间序列概念与分解模型 1-时间序列数据与基本概念 2-时间序列分解 二.SPSS中七种指数平滑模型 1-七种指数平滑模型简介 2-七种指数平滑模型具体分析 三.ARIMA模型相关的知识点 ...

  8. 备战数学建模9-层次分析法模型

    层次分析法,简称AHP,是建模比赛中最基础的模型之一,其主要用于解决评价类问题,例如:哪中方案更好?哪位运动员或者员工表现得更优秀? 一.层次分析模型建立部分 下面我们看一道引出层次分析得例题,如下所 ...

  9. 备战数学建模1-MATLAB矩阵相关

    目录 一.数值数据 二.常用函数 三.变量及其操作 四.矩阵的基础应用 五.MATLAB基本运算 六.字符串处理 七.特殊矩阵 八.矩阵变换 九.矩阵求值 十.矩阵的特征值与特征向量 十一.稀疏矩阵 ...

最新文章

  1. Imec推出高性能芯片的低成本冷却解决方案
  2. linux笔记软件,Linux Ubuntu学习笔记_软件管理
  3. 基于注意力机制的lstm实现_一种基于注意力机制的自动标点引擎的测试体验
  4. python编程100例头条-python 简单爬取今日头条热点新闻(一)
  5. bat 指定jdk_微服务开发 bat 一键批量启动 jar(效率小技巧)
  6. Android自定义控件前导基础知识学习(一)——Canvas
  7. 关于类与对象操作的细节与注意事项(c++细节篇三)
  8. LeetCode 450. 删除二叉搜索树中的节点
  9. android 充电模式deamon_Android MarsDaemon实现进程及Service常驻
  10. 对Java中字符串的进一步理解
  11. arm poky linux,opencv移植在4412和imx6(yocto 3.14.28 arm-poky-linux-gnueabi )上
  12. java math.floordiv,Math类的常用方法--田小江
  13. 传奇修改map地图教程_传奇地图Objects.wil与map文件的对应关系
  14. 什么是压力测试,如何做压力测试?
  15. 解决Go服务GC时间过长
  16. 对偶式与反函数_.数字逻辑.对偶式与反函数.数字逻辑下,对偶式与反函数和原函数的关系是什么?...
  17. 我用3天时间,整理了几十个项目的Python资料
  18. 一个独到程序员的深刻见解(转)
  19. 雷电模拟器使用adb命令(采坑)
  20. 网络安全证书已过期或不可信怎么办

热门文章

  1. 固态硬盘(SSD)和机械硬盘(HDD)区别对比介绍
  2. 四种Linux硬盘分区方式,硬盘分区原理和Linux分区方式。
  3. 10003--敏捷方法和Scrum方法论
  4. 分解连续自然数的和_正整数分解为几个连续自然数之和-阿里云开发者社区
  5. WPS表格简单入门_我的笔记_公式使用和编辑名称_名称管理器
  6. NFT科普 | 浅谈NFT投资逻辑与生态布局
  7. linux磁盘乱序 UUID,【工程师笔记】第一期:小议Linux下磁盘乱序问题
  8. Windows 2000 Resource Kit 中文版帮助
  9. 疫情之下从招聘看复工:IT行业人才需求缺口最大!
  10. 零基础在家就可以做的副业,七个兼职项目推荐