您现在的位置: 晨光科技 >> 文章 >> 技术理论 >> 数学 >> 正文  
  侃侃样条、小波与细分         
侃侃样条、小波与细分
[ 作者:佚名    转贴自:http://lsec.cc.ac.cn/~xuzq/disc.htm    点击数:109    更新时间:2010/7/16    文章录入:admin ]
[注:本站登载的某些文章并不代表本站支持或反对其观点或肯定其真实性]

临近毕业前,曾在此版由感而写文 侃侃计算数学。时光飞逝,转眼已有一年半有余,我的研究领域也发生了较大的变化。每每翻看杂志,看到以前熟悉领域的论文、看到一个个熟悉的作者,便产生莫名奇妙的亲切感。亲切归亲切,却也没有再返回的想法。一人独坐进餐时,却突然想起研究这个领域多年的感受与认识。不妨写下,更多的是希望写三者之间的关联,而不是单纯详细介绍其中一个,一来是为了纪念一个陪伴我多年的领域,二来希望能给后来者一些借鉴。也希望能和同行交流、切磋。

先侃样条(spline)。大凡对数学的美感兴趣的人,也许对样条的兴趣不是很大。因为它给人的感觉过于人为化。然而,对其接触多之后,我感觉事情并不是这样的,spline函数有着很美的一面。

也许人们会想起泛函分析里面对样条函数的一个解释:一个变分方程的极小解。这也许就是样条函数名称的由来。这个解释固然重要,但却不够美。因为这个解是近似下得到的。“近似”两个字将美的感觉破坏无疑。

我们看另外一个解释。试想,给你一个立方体,你能从里边看出什么来?我们初中的时候就知道,立方体6个面、8个顶点,12条边。其它呢?似乎没有。但事情并不是这样的,我们可以从里面看出一个2次B样条函数。为说明这个事情,我们不妨简化,看能否从一个正方形中看出一个1次B样条函数。我们想象,直线沿着与正方形的一条对角线平行的方向运动,那么,它落在正方形内的线段长度如何变化呢?很容易看到,先为0,后线性增加,当与对角线重合时最大,随后下降,逐渐变为0。这个线段长度的变化函数就是一个1次B样条函数。如果我们将正方形换为正立方体,将直线换为平面,那么我们就得到2次B样条函数。如此,就能得到任意次B样条函数。单位立方体蕴含B样条函数!这是一个非常奇特的事情,可惜,能了解并可欣赏这件事情的人并不是很多。一般的书里面,对这件事情是绝口不提的。但我却认为,这是样条函数最美的解释。上世纪四十年代,Schoenberg 提出样条函数非常重要的四种观点,却唯独没有单位立方体投影的观点。而这种观点也没有很好的发展,很多时候只是当作一个向入门的人演示的东西。这是很遗憾的。

做博士论文时,在纯粹数学美的召唤下,曾经用B样条函数对组合、数论中的线性丢番图方程组做了一些研究。后来,发现与人交流时,对方总是不解地问:样条函数与组合怎么会有关系?于是,我想到了一个解释:样条函数可以看作凸多面体的投影,而凸多面体可以看作线性方程组的解空间,因此,这种关联是自然的。听者似乎马上明白。我对这个解释也自鸣得意了一阵。而后来逐渐发现,这个解释,对于样条与组合关联而言,也许真的是本质的。

如今,样条函数在CAGD、小波及其它领域中均有了很好的应用。我想,一个非常重要的原因就是因为它有了一个很好的基底:B样条基底。

样条函数始于40年代,到70年代与80年代初期,其研究达到高潮。而随之取代的可能是小波(wavelet)。一般工科研究人员,他可能没听说过上同调、切从甚至同胚。但大多数却听说过小波,并试图接近它。小波在短短十几年时间发展到如此地步,确实令人吃惊。而从事相关研究的人员,却往往为数学领域里面被引用次数最高的人员。单纯从数学角度而言,小波对数学最重要的一个贡献也许就是给出了L_2空间局部正交基底。但真正把小波炒热的却是工程人员,人们疯狂的试图将其用到各自的领域。
小波与样条有着天然的血缘关系,这种天然的纽带是在何处建立的呢?我觉得,恰好是双尺度方程。小波基底的建立,需要一个满足双尺度方程的函数。而B样条函数恰好满足这种双尺度方程。于是,二者的联姻便在情理之中。如今,关于样条与小波的论文浩如烟海。我想,把握住了这根线,想掌握这个方向就容易多了。当然满足双尺度方程的函数并不是B样条函数一个,我们可以构造出很多。不幸的是,除了B样条函数,其它的似乎均不能写出解析表达形式,虽然它们有各种各样的级数定义方式。如今,小波的研究给人感觉到了强弩之末,但余劲似乎仍然悠长..........

细分(subdivision)作为CAGD中独立的领域,时间并不是很久。其最初引起人的注意,应该是在小波中。我们说过,一般满足双尺度方程的函数是写不出解析表达形式的,细分便成了建构这些函数的有力工具,如著名的Daubechies 正交小波基底也可以说是通过细分方式得到的。在几何造型中,细分也是一种很重要的方法。但其细分格式的建立往往依赖于Box样条函数(B样条函数的高维推广),因为Box样条满足双尺度方程,而双尺度方程的可以提供很好的细分格式。有趣的是,反过来说,我们计算B样条的算法却往往来源于细分。因此,spline, wavelet 和 subdivision演出了相互关联,不能割舍,又互相制约的三国演义!
如今,小波研究的一个热点是试图构造任意三角剖分下小波基底,而我们不能成功的原因,可以说是缺少任意三角剖分下subdivision 好的格式。如果我们能发现这种格式,也就能构造出任意三角剖分下B样条基底。反之,如果我们有任意三角剖分下B样条基底,就能构造出任意三角剖分下细分格式,相应的就会有小波基底。所以,三者的研究是相互牵扯的,任意一个方向的进展,都可能导出另外两个方向的进展。

更进一步,球面及任意流行上基底的构造亦是如此!

 

 

样条函数

spline function 一类分段(片)光滑、并且在各段交接处也有一定光滑性的函数。简称样条。样条一词来源于工程绘图人员为了将一些指定点连接成一条光顺曲线所使用的工具,即富有弹性的细木条或薄钢条。由这样的样条形成的曲线在连接点处具有连续的坡度与曲率。分段低次多项式、在分段处具有一定光滑性的函数插值就是模拟以上原理发展起来的,它克服了高次多项式插值可能出现的振荡现象,具有较好的数值稳定性和收敛性,由这种插值过程产生的函数就是多项式样条函数。
  
    样条函数
  样条函数的研究始于20世纪中叶,到了60年代它与计算机辅助设计相结合,在外形设计方面得到成功的应用。样条理论已成为函数逼近的有力工具。它的应用范围也在不断扩大,不仅在数据处理、数值微分、数值积分、微分方程和积分方程数值解等数学领域有广泛的应用,而且与最优控制、变分问题、统计学、计算几何与泛函分析等学科均有密切的联系。   在数学学科数值分析中,样条是一种特殊的函数,由多项式分段定义。样条的英语单词spline来源于可变形的样条工具,那是一种在造船和工程制图时用来画出光滑形状的工具。在中国大陆,早期曾经被称做“齿函数”。后来因为工程学术语中“放样”一词而得名。   在插值问题中,样条插值通常比多项式插值好用。用低阶的样条插值能产生和高阶的多项式插值类似的效果,并且可以避免被称为龙格现象的数值不稳定的出现。并且低阶的样条插值还具有“保凸”的重要性质。   在计算机科学的计算机辅助设计和计算机图形学中,样条通常是指分段定义的多项式参数曲线。由于样条构造简单,使用方便,拟合准确,并能近似曲线拟合和交互式曲线设计中复杂的形状,样条是这些领域中曲线的常用表示方法。
    定义
  给定k个点ti,称为节点(knot),分布在一个区间[a,b]满足   <IMG class=tex alt="a=t_0 < t_1 < \ldots < t_{k-2} 对于一个给定的节点向量,所有n次样条构成一个向量空间。这个空间的一个基是n次B样条基。   一个参数曲线   称为n次样条,如果   并且在限制到每个子区间时,   换句话说,在每个子区间或者说节点长度(knot span)   S和一个n次多项式相同。   S(ti) 称为节点值 而(ti, S(ti))称为内部控制点(internal control point). (t0,...,tk-1) 称为节点向量(knot vector). 如果节点等距分布在区间[a,b]上,我们称样条均匀(uniform),否则为非均匀(non-uniform).
    例子
  最简单的样条是一次的,它也叫做线性样条,或者多边形。   一般的样条是自然的三次样条。自然定义为样条多项式的二阶导数在插值区域的两端相等。   S''(a) = S''(b) = 0 在区间 [a,b]   这使得样条在插值区间外为直线而不影响光滑程度。
    样条插值
  使用多项式插值,对给定数据集进行插值的 n 阶多项式就被给定数据点所唯一地定义出来。但是,对同样的数据进行插值的 n 阶样条并不是唯一的,为了构建一个唯一的样条插值式它还必须满足另外 n-1 个自由度。
    线性样条插值
  线性样条插值是最简单的样条插值。数据点使用直线进行连接,结果样条是一个多边形。   从代数的角度来看,每个 Si 都是一个如下   的线性函数。 样条在每个数据点都必须连续,即   我们很容易得到   所以以上论述成立。
    二次样条插值
  二次样条插值可以构建为
  通过选择 z0,然后用递推关系就可以得到系数:
    三次样条插值
  对于 n+1 个给定点的数据集 {xi} ,我们可以用 n 三次多项式在数据点之间构建一个三次样条。如果表示对函数 f 进行插值的样条函数,那么需要:
  插值特性,S(xi)=f(xi) 样条相互连接,Si-1(xi) = Si(xi), i=1,...,n-1 两次连续可导,S'i-1(xi) = S'i(xi) 以及 S''i-1(xi) = S''i(xi), i=1,...,n-1. 由于每个三次多项式需要四个条件才能确定曲线形状,所以对于组成 S的 n 个三次多项式来说,这就意味着需要 4n 个条件才能确定这些多项式。但是,插值特性只给出了 n + 1 个条件,内部数据点给出 n + 1 − 2 = n − 1 个条件,总计是 4n − 2 个条件。我们还需要另外两个条件,根据不同的因素我们可以使用不同的条件。
  其中一项选择条件可以得到给定 u 与 v 的钳位三次样条,
  另外,我们可以设
  . 这样就得到自然三次样条。自然三次样条几乎等同于样条设备生成的曲线。
  在这些所有的二次连续可导函数中,钳位与自然三次样条可以得到相对于待插值函数 f 的最小震荡。   如果选择另外一些条件,
  可以得到周期性的三次样条。
  如果选择,
  可以得到complete三次样条。
三次样条的最小性
  三次样条有另外一个非常重要的解释,实际上它是在索伯列夫空间 H([a;b]) 最小化函数
  的函数。
  函数 J 包含对于函数 f(x) 全曲率 的近似,样条是 f(x) 最小曲率的近似。
  由于弹性条的总体能量与曲率成比例,所以样条是受到 n 个点约束的弹性条的最小能量形状。样条也是基于弹性条设计的工具。
使用自然三次样条的插值
  它可以定义为
  以及
  . 通过解下面的方程可以得到它的系数。
    线性样条插值
  假设要为带有节点
  的函数
  找一个线性样条。直接代入样条公式,我们得到如下样条:
  样条函数(蓝线)以及所近似的函数(红点)如下图所示:
二次样条插值
  下图是一个 k=4 的样条函数(蓝线)与所近似的函数(红线)的例子:
二.基数样条函数
  使用基数样条函数可以创建一些平滑线来连接给定的点集,如图1-4所示。
  图1-4 使用样条函数创建一条连接点集的平滑曲线
  从图1-4中可以看到,该样条曲线确定了起点和终点(图1-4中,起点和终点用1和4标识),另外两个点紧靠这条曲线,但样条曲线并不通过它们(点2和点3)。
  1. 使用3x3矩阵变换对象当处理一系列图形变换时,应用变换(旋转、平移或缩放)方法非常有用,它可以加速图形变换的执行。图1-5显示了图形变换的一个示例。
  图1-5 对图形实施旋转和缩放变换
  2. 模糊模糊用来对图形进行平滑处理以避免出现阶梯状外观,比如当对图像放大时。图1-6显示的是实施了该操作的一个示例。
  图1-6 对图像实施模糊操作
  注意
  《基数样条函数》书中,给出GDI+前两种新特点的示例:本章给出路径梯度的示例,下一章给出α混合的示例。对于GDI+的其他特点,在.NET Framework的SDK中有很多相应的示例代码。   
拉格朗日插值,分段插值,样条插值
  (样条插值的要求是还要知道这些数据点的一阶导数)
  两点确定一条直线(一次多项式),三点确定一条抛物线(二次多项式),有10个点就可以确定一个9次多项式(9次多项式里面还有一个常数项,就是10个未知数,我们有10个数据点,刚好可以求解)
  1.拉格朗日插值就是上面的这种插值。但是它就是把这些多项式系数重新表示了一下(就是不用去求上面所说的10个系数)。你求出这些系数后,只要将你想要的x的值往里一代,马上就得到你想要的函数值。但这种插值在头尾附近会出现一些不好的振荡现象(龙格现象)
  2.分段插值,还是按照上面的原则,比如说,我两个点两个点地确定一条直线(比如1,2点连起来,2,3点连起来),最后所有直线的集合(这时应当是一系列的折线)这个分段函数也是经过所有的数据点。当然你也可以三个点三个点地确定一条抛物线。用这一方面时,你要先确定你想要的x值在哪一个区间里,然后用这一区间的表达式来计算出函数值就可以了。本方法不会出现龙格现象
  3.样条插值,上面提到分段插值是一系列折线,折线使得不光滑,样条就是用其导数值,使得它们变光滑。
  下面说计算方法吧,计算方法的书上面都有表达式。应当不难。
  可以借助于MATLAB这样的软件来计算。
  比如原始数据是X,Y,想要求y(x=5)的值
  X=[2,6,10,14,18,22,26,30,34,38,41,42,45,49,53,57,61,65,69,73,77,81]; %自变量的值
  Y=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]; %自变量相应的函数值
  X0=5; %想要的点的值
  N=22; %这个是点的个数
  Doc=2; %分段插值中想用几个点插值
  你可以用下面的语句得到y(x=5);
  Y1=lagrange(X,Y,X0) %拉格朗日插值
  Y2=interp1(X,Y,X0,'linear') %分段两点线性插值
  Y2=interp1(X,Y,X0,'spline') %分段两点线性插值

  • 上一篇文章: 没有了

  • 下一篇文章: Chern–Simons theory
  •    
    [注:标题搜索比内容搜索快]
    发表评论】【告诉好友】【打印此文】【关闭窗口
     最新5篇热点文章
  • TEMP[126]

  • SAE001[93]

  • 高光谱成像基本原理[68]

  • 蒸汽火车解剖图[79]

  • 星球大战死星解剖图集 star wa…[86]

  •  
     最新5篇推荐文章
  • 外媒:正在唤醒中国的习近平[340]

  • 中国反伪科学运动背后的CIA黑手…[517]

  • [转载]袁隆平真言:中国最大的…[698]

  • 台专家:当年我们造IDF时 大陆…[591]

  • 旅日华人:中国严重误判日本民…[596]

  •  
     相 关 文 章
    没有相关文章

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论
    设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | 
    版权所有 Copyright© 2003 晨光科技        站长:璀璨星辰        页面执行时间:312.50毫秒
    Powered by:MyPower Ver3.5