ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:507.59KB ,
资源ID:9197434      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9197434.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验大数据与曲线拟合.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

实验大数据与曲线拟合.docx

1、实验大数据与曲线拟合实验数据与曲线拟合1. 曲线拟合1. 曲线拟合的定义2. 简单线性数据拟合的例子2. 最小二乘法曲线拟合1. 最小二乘法原理2. 高斯消元法求解方程组3. 最小二乘法解决速度与加速度实验3. 三次样条曲线拟合1. 插值函数2. 样条函数的定义3. 边界条件4. 推导三次样条函数5. 追赶法求解方程组6. 三次样条曲线拟合算法实现7. 三次样条曲线拟合的效果4. 12.1曲线拟合5. 12.1.1曲线拟合的定义6. 曲线拟合(Curve Fitting)的数学定义是指用连续曲线近似地刻画或比拟平面上一组离散点所表示的坐标之间的函数关系,是一种用解析表达式逼近离散数据的方法。曲

2、线拟合通俗的说法就是“拉曲线”,也就是将现有数据透过数学方法来代入一条数学方程式的表示方法。科学和工程遇到的很多问题,往往只能通过诸如采样、实验等方法获得若干离散的数据,根据这些数据,如果能够找到一个连续的函数(也就是曲线)或者更加密集的离散方程,使得实验数据与方程的曲线能够在最大程度上近似吻合,就可以根据曲线方程对数据进行数学计算,对实验结果进行理论分析,甚至对某些不具备测量条件的位置的结果进行估算。7. 12.1.2简单线性数据拟合的例子8. 回想一下中学物理课的“速度与加速度”实验:假设某物体正在做加速运动,加速度未知,某实验人员从时间t0 = 3秒时刻开始,以1秒时间间隔对这个物体连续

3、进行了12次测速,得到一组速度和时间的离散数据,请根据实验结果推算该物体的加速度。时间(秒)345678910速度(米/秒)8.419.9411.5813.0214.3315.9217.5419.22时间(秒)11121314速度(米/秒)20.4922.0123.5324.479. 表12 1物体速度和时间的测量关系表10. 在选择了合适的坐标刻度之后,我们就可以在坐标纸上画出这些点。如图121所示,排除偏差明显偏大的测量值后,可以看出测量结果呈现典型的线性特征。沿着该线性特征画一条直线,使尽量多的测量点能够位于直线上,或与直线的偏差尽量小,这条直线就是我们根据测量结果拟合的速度与时间的函数

4、关系。最后在坐标纸上测量出直线的斜率K,K就是被测物体的加速度,经过测量,我们实验测到的物体加速度值是1.48米/秒2。11. 12. 图12 1实验法测量加速度的过程13. 14. 12.2最小二乘法曲线拟合15. 使用数学分析进行曲线拟合有很多常用的方法,这一节我们先介绍一下最简单的最小二乘法,并给出使用最小二乘法解决上一节给出的速度与加速度实验问题。16. 17. 12.2.1最小二乘法原理18. 最小二乘法(又称最小平方法)通过最小化误差的平方和寻找数据的最佳函数匹配,利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小,当然,做为一种插值方法使

5、用时,最小二乘法也可以用于曲线拟合。使用最小二乘法进行曲线拟合是曲线拟合种早期的一种常用方法,不过,最小二乘法理论简单,计算量小,即便是在使用三次样条曲线或RBF(Radial Basis Function)进行曲线拟合大行其道的今天,最小二乘法在多项式曲线或直线的拟合问题上,仍然得到广泛地应用。使用最小二乘法,选取的匹配函数的模式非常重要,如果离散数据呈现的是指数变化规律,则应该选择指数形式的匹配函数模式,如果是多项式变化规律,则应该选择多项式匹配模式,如果选择的模式不对,拟合的效果就会很差,这也是使用最小二乘法进行曲线拟合时需要特别注意的一个地方。19. 下面以多项式模式为例,介绍一下使用

6、最小二乘法进行曲线拟合的完整步骤。假设选择的拟合多项式模式是:20. 21. 这m个等式相当于m个方程,a0,a1,am是m个未知量,因此这m个方程组成的方程组是可解的,最小二乘法的第二步处理就是将其整理为针对a0,a1,am的正规方程组。最终整理的方程组如下:22. 23. 最小二乘法的第三步处理就是求解这个多元一次方程组,得到多项式的系数a0,a1,am,就可以得到曲线的拟合多项式函数。求解多元一次方程组的方法很多,高斯消元法是最常用的一种方法,下一节就简单介绍一下最小二乘算法实现所用的高斯消元法算法。24. 12.2.2高斯消元法求解方程组25. 在数学上,高斯消元法是线性代数中的一个算

7、法,可用来求解多元一次线性方程组,也可以用来求矩阵的秩,以及求可逆方阵的逆矩阵。高斯消元法虽然以数学家高斯的名字命名,但是最早出现在文献资料中应该是中国的九章算术。26. 高斯消元法的主要思想是通过对系数矩阵进行行变换,将方程组的系数矩阵由对称矩阵变为三角矩阵,从而达到消元的目的,最后通过回代逐个获得方程组的解。在消元的过程中,如果某一行的对角线元素的值太小,在计算过程中就会出现很大的数除以很小的数的情况,有除法溢出的可能,因此在消元的过程中,通常都会增加一个主元选择的步骤,通过行交换操作,将当前列绝对值最大的行交换到当前行位置,避免了除法溢出问题,增加了算法的稳定性。27. 高斯消元法算法实

8、现简单,主要有两个步骤组成,第一个步骤就是通过选择主元,逐行消元,最终行程方程组系数矩阵的三角矩阵形式,第二个步骤就是逐步回代的过程,最终矩阵的对角线上的元素就是方程组的解。下面就给出高斯消元法的一个算法实现:76/*带列主元的高斯消去法解方程组,最后的解在matrixA的对角线上*/77boolGuassEquation:Resolve(std:vector&xValue)7879 assert(xValue.size()=m_DIM);8081/*消元,得到上三角阵*/82for(inti=0;im_DIM-1;i+)8384 /*按列选主元*/85 intpivotRow=SelectP

9、ivotalElement(i);86 if(pivotRow!=i)/*如果有必要,交换行*/87 88 SwapRow(i,pivotRow);89 90 if(IsPrecisionZero(m_matrixAi*m_DIM+i)/*主元是0? 不存在唯一解*/91 92 returnfalse;93 94 /*对系数归一化处理,使行第一个系数是1.0*/95 SimplePivotalRow(i,i);96 /*逐行进行消元*/97 for(intj=i+1;j=0;i-)105106 doubletotalCof=0.0;107 for(intj=i+1;jm_DIM;j+)108

10、109 totalCof+=m_matrixAi*m_DIM+j*m_matrixAj*m_DIM+j;110 111 m_matrixAi*m_DIM+i=(m_bVali-totalCof)/m_matrixAi*m_DIM+i;112113114/*将对角线元素的解逐个存入解向量*/115for(inti=0;im_DIM;i+)116117 xValuei=m_matrixAi*m_DIM+i;118119120returntrue;12128. 29. GuassEquation:Resolve()函数中m_matrixA是以一维数组形式存放的系数矩阵,m_DIM是矩阵的维数,Sel

11、ectPivotalElement()函数从系数矩阵的第i列中选择绝对值最大的那个值所在的行,并返回行号,SwapRow()函数负责交换系数矩阵两个行的所有值,SimplePivotalRow()函数是归一化处理函数,通过除法操作将指定的行的对角线元素变换为1.0,以便简化随后的消元操作。30. 12.2.3最小二乘法解决“速度与加速度”实验31. 根据12.2.1节对最小二乘法原理的分析,用程序实现最小二乘法曲线拟合的算法主要由两个步骤组成,第一个步骤就是根据给出的测量值生成关于拟合多项式系数的方程组,第二个步骤就是解这个方程组,求出拟合多项式的各个系数。根据对上文最终整理的正规方程组的分析

12、,可以看出其系数有一定的关系,就是每一个方程式都比前一个方程式多乘了一个xi。因此,只需要完整计算出第一个方程式的系数,其他方程式的系数只是将前一个方程式的系数依次左移一位,然后单独计算出最后一个系数就可以了,此方法可以减少很多无谓的计算。求解多元一次方程组的方法就使用12.2.2节介绍的高斯消元法,其算法上一节已经给出。32. 这里给出一个最小二乘算法的完整实现,以12.1.2节的数据为例,因为数据结果明显呈现线性方程的特征,因此选择拟合多项式为v = v0+ at,v0和a就是要求解的拟合多项式系数。99boolLeastSquare(conststd:vector&x_value,con

13、ststd:vector&y_value,100 intM,std:vector&a_value)101102 assert(x_value.size()=y_value.size();103 assert(a_value.size()=M);104105double*matrix=newdoubleM*M;106double*b=newdoubleM;107108 std:vectorx_m(x_value.size(),1.0);109 std:vectory_i(y_value.size(),0.0);110for(inti=0;iM;i+)111112 matrixARR_INDEX(

14、0,i,M)=std:accumulate(x_m.begin(),x_m.end(),0.0);113 for(intj=0;jstatic_cast(y_value.size();j+)114 115 y_ij=x_mj*y_valuej;116 117 bi=std:accumulate(y_i.begin(),y_i.end(),0.0);118 for(intk=0;kstatic_cast(x_m.size();k+)119 120 x_mk*=x_valuek;121 122123for(introw=1;rowM;row+)124125 for(inti=0;iM-1;i+)1

15、26 127 matrixARR_INDEX(row,i,M)=matrixARR_INDEX(row-1,i+1,M);128 129 matrixARR_INDEX(row,M-1,M)=std:accumulate(x_m.begin(),x_m.end(),0.0);130 for(intk=0;kstatic_cast(x_m.size();k+)131 132 x_mk*=x_valuek;133 134135136 GuassEquation equation(M,matrix,b);137deletematrix;138deleteb;139140returnequation.

16、Resolve(a_value);14133. 将表121的数据带入算法,计算得到v0= 4.05545455,a = 1.48818182,比作图法得到的结果更精确。以上算法是根据最小二乘法的理论推导系数方程,并求解系数方程得到拟合多项式的系数的一种实现方法,除此之外,还可以利用预先计算好的最小二乘解析理论直接求得拟合多项式的系数,读者可自行学习相关的实现算法。34. 35. 12.3三次样条曲线拟合36. 曲线拟合基本上就是一个插值计算的过程,除了最小二乘法,其他插值方法也可以被用于曲线拟合。常用的曲线拟合方法还有基于RBF(Radial Basis Function)的曲线拟合和三次样条

17、曲线拟合。最小二乘法方法简单,便于实现,但是如果拟合模式选择不当,会产生较大的偏差,特别是对于复杂曲线的拟合,如果选错了模式,拟合的效果就很差。基于RBF(Radial Basis Function)的曲线拟合方法需要高深的数学基础,涉及多维空间理论,将低维的模式输入数据转换到高维空间中,使得低维空间内的线性不可分问题在高维空间内变得线性可分,这种数学分析方法非常强大,但是这种方法不宜得到拟合函数,因此在需要求解拟合函数的情况下使用起来不是很方便。37. 样条插值是一种工业设计中常用的、得到平滑曲线的一种插值方法,三次样条又是其中用的较为广泛的一种。使用三次样条曲线进行曲线拟合可以得到非常高精

18、度的拟合结果,并且很容易得到拟合函数,本节的内容将重点介绍三次样条曲线拟合的原理和算法实现,并通过一个具体的例子将三次样条函数拟合的曲线与原始曲线对比显示,体会一下三次样条曲线拟合的惊人效果。38. 39. 12.3.1插值函数40. 前文提到过,曲线拟合的实质就是各种插值计算,因此,插值函数的选择决定了曲线拟合的效果。那么插值函数的数学定义是什么呢?若在a, b上给出n + 1个点a x0 x1 xn b,f(x) 是a, b上的实值函数, 要求一个具有n + 1个参量的函数s(x; a0,.,an) 使它满足41. s(xi; a0,., an) = f(xi) , i = 0, 1, ,

19、 n (3.5)42. 则称s(x)为f(x) 在a, b上的插值函数. 若s(x) 关于参量a0, a1,.,an是线性关系, 即:43. s(x) = a0s0(x) + a1s1(x) + + ansn(x) (3.6)44. s(x)就是多项式插值函数,如果si(x)是三角函数,则s(x)就是三角插值函数。45. 比较常用的多项式插值函数是牛顿插值多项式和拉格朗日插值多项式,但是在多项式的次数比较高的情况下,插值点数n过多会导致多项式插值在收敛性和稳定性上失去保证,因此,当插值点数n较大的情况下,一般不使用多项式插值,而采用样条插值或次数较低的最小二乘法插值。46. 12.3.2样条函

20、数的定义47. 在所有能够保证收敛性和稳定性的插值函数中,最常用的,也是最重要的插值函数就是样条插值函数。采用样条函数计算出的插值曲线和曲面在飞机、轮船和汽车等精密机械设计中都得到了广泛的应用。样条插值函数的数学定义是这样的:48. 设区间a, b上选取n - 1个节点(包括区间端点a和b共n + 1个节点),将其划分为n个子区间 a = x0 x1 xn= b, 如果存在函数s(x),使得s(x)满足以下两个条件:49. (1) s(x) 在整个区间a, b上具有m - 1阶连续导数;50. (2) s(x)在每个子区间xi-1, xi, i= 1, 2, , n 上是m 次代数多项式(最高

21、次数为m次);51. 则称s(x)是区间a, b上的m 次样条函数。假如区间a, b上存在实值函数f(x),使得每个节点处的值f(xi)与s(xi)相等,即52. s(xi) = f(xi), i = 0, 1, , n (3.7)53. 则称s(x)是实值函数f(x)的m 次样条插值函数。54. 当m = 1时,样条插值函数就是分段线性插值, 此时虽然s(x)是属于区间a, b上的函数, 但它不光滑(连一阶连续导数性质都不具备),不能满足工程设计要求。工程设计通常使用较多的是m = 3时的三次样条插值函数,此时样条函数具有二阶连续导数性质。55. 根据三次样条函数的定义,s(x)在每个子区间

22、上的样条函数si(x)都是一个三次多项式,也就是说,三次样条函数s(x)由n个区间上的n个三次多项式组成,每个三次多项式可描述为以下形式:56. si(x) = aix3+ bix2+ cix + di i = 1, 2, , n (3.8)57. 因此,要确定完整的样条函数s(x)需要确定ai、bi、ci和di公4n个系数。根据样条函数的定义,s(x)在区间内的n - 1个节点处都是连续的,并且其一阶导数si(x)和二阶导数si“(x)都是连续的,根据连续函数的性质(xi的左右导数相等),我们可以得到3(n - 1)个条件:58. si(xi- 0) = si+1(xi+ 0) i = 1,

23、 2, , n-159. si(xi- 0) = si+1(xi+ 0) i = 1, 2, , n-160. si“(xi- 0) = si+1“(xi+ 0) i = 1, 2, , n-1 (3.9)61. 再加上插值函数在包括区间端点a(就是x0),b(就是xn)在内的n + 1个节点处满足s(xi) = f(xi),又可以得到n + 1个条件,这样就具备了4n 2个条件。62. 12.3.3边界条件63. 为了解决4n个系数组成的方程组,最终确定的s(x),需要再补充两个边界条件使之满足4n个条件。常用的边界条件有以下几种:64. 第一类边界条件,即满足s(x0) = f(x0),s

24、(xn) = f(xn)两个条件,其中f(x)是实值函数。65. 第二类边界条件,即满足s”(x0) = f”(x0),s”(xn) = f”(xn)两个条件,其中f(x)是实值函数。特别情况下,当f”(x0) = f”(xn) = 0的时候,也就是s”(x0) = s”(xn) = 0的情况下,第二类边界条件又被称为自然边界条件。66. 当样条函数的实值函数f(x)是以a, b为周期的周期函数时,三次样条函数s(x)在两个端点处满足s(x0- 0) = s(xn+ 0)和s”(x0- 0) = s”(xn+ 0),这种情况又被成为第三类边界条件。67. 工程技术中常用的是第一类边界条件和第二

25、类边界条件,以及第二类边界条件的特殊情况自然边界条件。理想情况下,也就是实值函数已知的情况下,可以通过实值函数直接计算出边界条件的值,否则的话,就只能通过测量和计算得到边界条件的值,有时候甚至只能给出经验估计值,工程技术中通常根据实际情况灵活使用各类边界条件。68. 12.3.4推导三次样条函数69. 求三次样条插值函数s(x)的方法很多,其基本原理都是首先求出由待定系数组成的s(x),以及其一阶导数s(x)和二阶导数s”(x),然后将其带入到12.3.2和12.3.3节列举的4n个条件中,得到关于待定系数的方程组,最后求解方程组得到待定系数,并最终确定插值函数s(x)。70. 求三次样条插值

26、函数s(x)常用的方法是“三转角法”和“三弯矩法”。根据三次样条函数的性质,s(x)的一阶导数s(x)是二次多项式, 二阶导数s”(x)是一次多项式(线性函数), “三转角法”和“三弯矩法”的主要区别是利用这两个特性推导插值函数s(x)、s(x)和s”(x)的方式不同。“三转角法”利用s(x)的一阶导数s(x)是二次多项式这个特性,对于子区间xi, xi+1,利用抛物线插值公式获得一个通过xi和xi+1两个点的二次多项式做为s(x),然后对s(x)进行积分和微分(求导)运算,分别得到s(x),和s”(x),最后将它们带入4n个条件中求解系数方程组。“三弯矩法”则是利用s(x)的二阶导数s”(x)是一次多项式(线性函数)这个特性,对于子区间xi, xi+1,首先假设一个通过xi和xi+

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2