python曲线拟合原理代码

上传人:m**** 文档编号:187680821 上传时间:2023-02-16 格式:DOCX 页数:7 大小:124.08KB
收藏 版权申诉 举报 下载
python曲线拟合原理代码_第1页
第1页 / 共7页
python曲线拟合原理代码_第2页
第2页 / 共7页
python曲线拟合原理代码_第3页
第3页 / 共7页
资源描述:

《python曲线拟合原理代码》由会员分享,可在线阅读,更多相关《python曲线拟合原理代码(7页珍藏版)》请在装配图网上搜索。

1、最小二乘法多项式曲线拟合,根据给定的m个点,并不要求这条曲线精确地经过这些点,而是曲 线y=f(x)的近似曲线y= (x)。原理原理部分由个人根据互联网上的资料进行总结,希望对大家能有用给定数据点pi(xi,yi),其中i=l,2,m。求近似曲线y= (x) 并且使得近似曲线 与y=f(x)的偏差最小。近似曲线在点pi处的偏差i= (xi)-y, i=l,2,.,m。常见的曲线拟合方法:1使偏差绝对值之和最小冊叫申t?m2使偏差绝对值最大的最小minmax|.|=|Xx)-y-l3使偏差平方和最小按偏差平方和最小的原则选取拟合曲线,并且采取二项式方程为拟合曲线的方法,称为最小二乘法。为了求得付

2、合条件的a值,对等式右边求ai偏导数,因而我们得到了:设拟合多项式为:各点到这条曲线的距离之和,即偏差平方和如下:5.把这些等式表示成矩阵的形式,就可以得到下面的矩阵:- st寸S!U-rJ yiAu=li41 = J -TJ-站宀kl眼r#曲一6.将这个范德蒙得矩阵化简后可得到:1岁23I -V, - xf 1 .2 - .1? :J :1斗蛙7.也就是说X*A=Y,那么A = (X*X)-1*X*Y,便得到了系数矩阵A,同时,我们也就得到了拟合曲线。实现运行前提:1. Python运行环境与编辑环境;2. Matplotlib.pyplot图形库,可用于快速绘制2D图表,与matlab中的

3、plot 命令类似,而且用法也基本相同。代码:pythonview plain copy1.2.# coding=utf-84. 作者Jairus Chan5. 程序:多项式曲线拟合算法6. 7. import matplotlib.pyplot as pit8. import math9. import numpy10. import random11.11. fig = pit.figure()12. ax = fig.add_subplot(111)14.13. #阶数为9阶14. order=917.15. #生成曲线上的各个点16. x = numpy.arange(-1,1,0.0

4、2)17. y = (a*a-1)*(a*a-1)*(a*a-1)+0.5)*numpy.sin(a*2) for a in x18. #ax.plot(x,y,color=r,linestyle=-,marker=)19. #,label=(a*a-1)*(a*a-1)*(a*a-1)+0.523.20. #生成的曲线上的各个点偏移一下,并放入到xa,ya中去21. i=022. xa=23. ya=24. for xx in x:25. yy=yi26. d=float(random.randint(60,140)/10027. #ax.plot(xx*d,yy*d,color=m,lin

5、estyle=,marker=.)28. i+=129. xa.append(xx*d)30. ya.append(yy*d)35.31. for i in range(0,5):32. xx=float(random.randint(-100,100)/10033. yy=float(random.randint(-60,60)/10034. xa.append(xx)35. ya.append(yy)41.36. ax.plot(xa,ya,color= m,linestyle= ,marker= .)43.44.37. #进行曲线拟合38. matA=39. for i in range

6、(0,order+1):48.matA1=49.50.51.52.53.for l in range(0,j+i):for j in range(0,order+1):tx=0.0for k in range(0,len(xa):dx=1.054.55.56.tx+=dxmatA1.append(tx)dx=dx*xak57. matA.append(matA1)58.58. #print(len(xa)59. #print(matA00)60. matA=numpy.array(matA)62.61. matB=62. for i in range(0,order+1):63. ty=0.0

7、64. for k in range(0,len(xa):65. dy=1.066. for l in range(0,i):67. dy=dy*xak68. ty+=yak*dy69. matB.append(ty)72.70. matB=numpy.array(matB)74.71. matAA=numpy.linalg.solve(matA,matB)76.72. #画出拟合后的曲线73. #print(matAA)74. xxa= numpy.arange(-1,1.06,0.01)75. yya=76. for i in range(0,len(xxa):77. yy=0.078. for j in range(0,order+1):79. dy=1.080. for k in range(0,j):81. dy*=xxai82. dy*=matAAj83. yy+=dy84. yya.append(yy)85. ax.plot(xxa,yya,color=g,linestyle=-,marker=)91.92. ax.legend()93. pit.show()运行效果:回O.S0.60.20.0l.Che-a 6i.-1.0-0.50.00.5-0 4浊

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!