1、曲线拟合的研究(时振宇, 刘禹, 彭波)1 综述(历史及应用)插值在数学发展史上是个老问题,它和拉格朗日,牛顿,高斯等著名的数学家的名字联系在一起的,它最初来源于天体计算由若干观测值计算任意时刻星球的位置(即插值点和插值)的需要。现在插值仍在诸如机械加工等工程技术和数据解决等科学研究中有许多直接应用.插值常用方法有拉格朗日多项式插值,分段线性插值,三次样条插值.拉格朗日插值是高次多项式插值(n1个节点上用不超过n次的多项式), 插值曲线光滑,误差估计有表达式,但有振荡现象,收敛性不能保证,这种插值重要用于理论分析,实际意义不大. 分段线性和三次样条插值石低次多项式插值,简朴实用,收敛性有保证,
2、但不光滑,三次样条插值的整体光滑性已大有提高,应用广泛,唯误差估计较困难.根据一组二维数据,即平面上的若干点,拟定一个一元函数,即曲线,使这些点与曲线总体来说尽量接近,这就是曲线拟合.线性最小二乘法是解决曲线拟合的最常用方法,基本思绪是, 令:其中rk(x)是事先选定的一组函数,ak是待定系数,拟合标准是使n个点(xi,yi) i=1,2,n与yf(xi)的距离的平方和最小,称最小二乘准则.本实验所用拟合方法使高次磨削法,原理在下面叙述.2 问题分析和算法3.1基本思绪我们一方面考虑等步长情况,不等步长可以在此基础上稍做改善而得。如图,(x1,y1) (x2,y2) (x3,y3) (x4,y
3、4) (x5,y5) 为所给原始数据点中的一部分,磨光过程中应对(x2,y2) (x3,y3) (x4,y4) 进行切削,图示第一次切削过程。然后还需对(p3,q3) (p4,q4)第二次磨削,如此反复。高次磨光后,最后一次切削所产生的(x2,y2)最右侧及(x3,y3)最左侧的折点均向(x2,y2) (x3,y3)中点(x23,y23)逼近,抱负情况下两点在(x23,y23)处重合,则磨削点(x2,y2)和(x3,y3)工作完毕。切削步长大小有规定,太小则无法对x23附近的点进行磨削,太大则在x23附近进行了多次磨削,设每次切削后步长变为原步长的1/n,第一次切削步长为h/a,m为切削次数,
4、则有:; 即;我们取a=2,n=2可符合规定,即每次的切削步长为h/2;图3-1 磨削算法示意图对点 (x j, y j) 进行一次切割将产生两个点(x j, y j), (x j+1,y j+1);由前面分析可知:假如现在由n个点,除去两个端点不需磨削,一次磨削后,将产生2*(n-2)+2个新的点,其坐标用行向量x,y表达;在求下一次磨削时,将x,y复制给行向量x,y,新的切削后的行纵坐标x,y可用上述方法得到。假如我们拟定了循环次数,则拟合完毕.3.2 初始点的移动为了使磨削后的点过原始点,需将原始点在磨削前移动一定距离,如图: x代表原始点坐标, x代表移动后的坐标.如此可得:y和x的计
5、算雷同, 故不再反复图3-2 计算y的示意图3.3 不等步长的推广和单侧点的解决当步长不等时,h不是一个常数,可以在每次使用h时计算出两点间的步长.如: 当(x1,y1)及(xk , yk)不重合时,曲线不闭合,两个端点都只有单侧信息,我们只能对其一半进行磨削解决,剩下的一部分由直线连接;而当(x1,y1)和(xk , yk)重合后,磨削最后形成一个闭合的曲线,两端点亦需移动,矩阵B如下。点的切削和前基本一致,唯一不同在于端点 (x1,y1),(x k, y k)应联系(x2,y2) (x k-1,y k-1)进行磨削.3 误差分析f(xi+h/2)=(I+D*h/2+D2*h2/8)*f(x
6、i)+o(h2/2)f(xi-/2)=(I-*h/2+D2*h2/8)*f(xi)+o(h2/2)S1(x) = f(xi+h/2)-(f(xi+h/2)-f(xi-h/2)/h*(-x+xi+h/2) = f(xi+h/2)-D*f(xi)(xi+h/2-x)f(x)=(I+D*(x-xi)+D2*(x-xi)2/2)*f(xi)+o(x-xi)2) |f(x)-S1(x)|=D2/2*(x-xi)2-h2/4)当x=xi时,|f(x)-S1(x)|=D2*f(xi)*h2/8;所以,若f(xi)的二次导数越小,点的连线越平和,误差越小4 软件使用说明4.1 界面功能介绍(curve.m)
7、文献操作按钮依次为打开文献、新建(刷新视图)、保存数据. 插值方式选择支持的插值算法: 磨削、拉格朗日、样条插值、三次插值和分段线性插值. 坐标轴控制功能依次为网格线、放大/缩小、编辑、重置, 另有两组预留按钮 线型和算法参数控制4.2 数据输入/输出方式本软件采用了外部文献和内置命令行两种输入方式: 外部文献方式目前支持的外部数据文献格式涉及文本文献(.txt, .dat), Microsoft Excel 电子表格(*.xls). 并可将曲线拟合后的数据存盘为文本格式. 命令行方式输入框指定变量 x, y 的取值, 不区分大小写.4.3 运营环境软件的开发环境为MatLab 6.1和Vis
8、ual Studio 6.0, 在Visual Studio RunTime 环境下将提供较为和谐的文献浏览界面.5 软件编写思想和原则本软件的编写宗旨是构造实用性的插值算法模块, 程序编制过程中我们格外注意模块接口的清楚和功能明确. 插值算法等底层模块除必要的错误捕获不再设任何输出, 所有数据通过参数表和返回值传递.界面力求和谐和方便, 提供文献功能以利于保存工作成果, 设立必要的错误检查. 并运用MatLab的ActiveX调用接口配合Visual Studio 提供的MSCommDlg.CommonDialog 标准控件实现文献浏览等.6 分工情况时振宇 & 彭波: 磨削算法和相应模块(mod_smooth.m)的编写, 论文的主体部分.刘 禹: 编写程序、撰写论文的软件介绍说明部分和排版工作.