三次样条插值在工程拟合中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三次样条插值在工程拟合中的应用
摘要: 介绍了工程实验、勘测、设计中常见的列表函数之数值插值方法、程序实现及工程应用, 应用此法可方便地将任何列表函数计算到工程设计、施工所需要的精确程度, 给
出了各参数随主要参数变化而变化的光滑曲线, 并将其应用推广到一般情况.
关键词: 列表函数; 数值拟合; 三次样条插值; MA TLAB 程序设计与应用
在实际工程中, 广泛存在这样的问题: 根据设计要求和具体的工程条件, 在初始设计阶段会勘测得到若干组该工程的控制参数, 但这些参数之间彼此离散、不够密集, 利用它们来施工则不能满足施工的精度要求. 为了解决这一问题, 需要对已知的参数数据进行分析处理, 进行必要的插值、拟合, 以达到施工所需要的数据精度.本文以工程实例为基础, 对实际工程中插值方法的选取、插值的实现和插值曲线的拟合加以讨论, 提出能得到较合乎实际的插值方法, 给出一般工程人员就能实现的计算方法以及能得到光滑曲线的拟合方法.
1 工程应用实例
表1 所示的为某双曲拱坝体形原始参数[ 1
对于这一类工程列表参数有一个显著的特点:尽管不同工程的参数多寡不同, 但都是由n 行k
列的离散的列表数据给出, 虽然同一行代表某工程特定位置的几个参数(或高程参数, 或上游
半径参数⋯) , 但相邻两行由于位置距离太大, 两行各参数之间究竟存在什么数值关系, 对工
程设计、施工有何影响, 这是工程技术人员需要弄清楚的[ 2 ].以双曲拱坝为例, 它沿整个高程的变化是一个连续光滑的空间曲面. 从施工需要来看, 这些数据太稀疏, 难以满足设计、施工放样与钢筋配置等要求, 如果照此施工, 则有可能达不到工程精度、降低工程效率; 从计算机图形模拟来看, 要生成这个曲面仅由这一列表函数是得不到光滑曲面的, 是不可取的. 所以, 为使计算精确, 满足工程施工过程中任何断面位置、任意水平位置、任意高程位置所必需的施工数据与设计图纸, 保证工程施工的高品质,就要求作精确的数据处理.进一步分析可知, 在这
些参数表中, 各行的参数都随某一主要参数的变化而变化, 如上游半径参数随高程的变化而变化⋯, 它们的这种函数关系,在数值分析中有许多的方法可以求得. 但是哪种方法能更好、更合
乎实际地给出平滑曲线呢? 下面所选的插值方法能够较好地满足这一要求.
2 插值方法的选择
在数值分析中, 这种插值过程可具体使用线性( 1inear ) 插值、三次样条( sp line ) 插值、立方(cub ic) 插值等方法, 在曲线插值法中最常用的是线性插值法, 它是估计两个主干点之间数值的最简单、最易实现的方法, 但采用线性插值法会有以下缺点:
一是使得曲线不能显示连接主干点间的凸状弧线;
二是使得从曲线导出远期曲线时会形成人为的“尖头”(sp ikes) [ 2 ].
因此, 通常采用样条法来构造曲线. 样条法是用一平滑曲线来对各主干点进行拟合的方法. 它是通过构造多项式(一个或一组不同阶多项式) 来形成一条把所有主干点连接起来的平滑曲线. 一般常常选择三次曲线(根据三次插值样条函数所得的曲线) 进行拟合.通常, 在[a, b ]上的以x i ( i=0, 1, 2, ⋯, n) 为节点的三次插值样条函数[ 3 ] 定义如下: 给定区间[a, b ]的一个划分$: a= x 0< x 1< x 2< ⋯< x n = b和区间[a, b ]上的一个函数f (x ) , 若函数S (x ) 满足下列条件:
(1) 一致通过n+ 1 个插值点(x i, y i) , 即
S (x i) = f (x i) = y i ( i= 0, 1, 2, ⋯, n) ;
(2) 二阶连续, 即S (x ) ∈C2 [a, b ];
(3) 三次分段, 即在每一个小区间[ x i- 1, x i ]
( i= 1, 2, ⋯, n) 上均为三次多项式.则称S (x ) 为函数f (x ) 的三次插值样条函数. 在构造三次插值样条函数时, 为确定S (x ) 应根据n+ 1个插值条件, 3n- 3 个连续条件以及给定的边界条件, 再利用节点处的一阶导数或二阶导数就可构造出三次插值样条函数. 在构造曲线过程中, 关键是估计三次多项式函数和确定样条函数形式.从以上理论分析可知, 三次活动曲线具有优良的数学特征, 而且用三次曲线去拟合时, 其结果要比线性插值估计更接近于工程实际情况[ 4 ]. 三次曲线法又可分为三次样条插值法和立方插值法. 在数值分析中有许多的方法, 限于篇幅, 本文仅以工程上用得较多的、具有优良效果的三次样条插值为例介绍插值方法.
3 插值计算原理
三次样条函数的数学原理及其子程序, 可见于多种数学著作[ 5 ]与算法手册. 这里作简单介绍.由于拱坝或其他工程曲面都是连续而光滑的空间曲面, 它的断面高程自坝底至坝顶均满足
a= j 1< j 2< ⋯< j n= b,且每一位置(高程) 都对应有一组几何参数: y 1, y 2,⋯, y n. 如上游半径、下游半径、拱厚等(见表1 所列) , 因此对于一组高程插值点j 1= t1< t2< t3< ⋯< tm ≤j n ,可用三次自然样条函数S (x ) 求解它们在各插值点的函数值及其一阶导数S ′(x ) 和二阶导数S ″(x ).三次样条函数S (x ) 是用分段三次多项式逼近函数y = f (x ) , 且满足S (x ) 为区间[a, b ]上曲线y= f (x ) 的三次样条插值函数的三个条件.
经两次积分, 可得三次样条插值函数S (x ) 的表达式为
利用函数S (x ) 在样点x i 处具有连续二阶导数的条件, 再根据三次自然样条插值法, 增加自然边界条件
得到如下方程组:
解上述方程组, 求得M i ( i= 0, 1, 2, ⋯, n) 代入S (x ) 公式, 即可得每个子区间[ x i- 1, x i ] ( i= 1, 2,⋯, n) 上的三次样条函数.根据上述原理, 对工程原始列表数进行插值计算, 即可满足多种施工要
4 插值方法的实现
由以上可以看出, 三次样条插值的关键是寻找插值函数, 但插值函数寻找相当复杂, 对于一般的工程人员很难完成, 那么怎样才能使三次样条插值这一优秀的插值方法被人们所掌握呢?M athworks公司推出了功能强大的数学计算软件MA T2LAB[ 6 ] , 它不但使源程序编写简单、源程序代码简短(因为现成的三次样条插值函数可供使用) , 而且可以利用其强大的作图功能方便地拟合出光滑曲线. 因此, 本文选用MA TLAB 语言作为计算语言
MA TLAB 程序设计原理:
在以上参数表中, 各行的各参数都随高程这一主要参数的变化而变化, 根据它们变化的这种函数关系, 以高程为插值的已知节点(其中已知节点个数n = 6) , 为使插值结果一致通过这些节点, 以1. 36为步长调用插值函数进行插值.
MA TLAB 程序设计算法:
( 1) 写入原始参数矩阵, 以同一组参数为行,以同一种参数为列;
(2) 产生插值的精度矩阵, 在最小值与最大值之间以1. 36 为步长, 产生矩阵;
(3) 调用MA TLAB 中的三次样条插值函数,产生插值结果矩阵, 以对每一种参数的插值结果为行产生矩阵, 再转置.
MA TLAB 程序设计: