Interpolation and Approximation

本文深入探讨了B样条曲线与曲面的设计方法,包括参数选择、节点向量生成、线性方程组求解、插值与逼近等关键技术。详细介绍了均匀、弦长及向心法在参数化中的应用,以及这些方法如何影响曲线形状。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 参数选择

参数选择的目的是:对于给定数据点 D 0 , D 1 , . . . , D n D_0,D_1,...,D_n D0,D1,...,Dn,在曲线的定义域内找到满足条件 D k = C ( t k ) , 0 < = k < = n D_k=C(t_k),0<=k<=n Dk=C(tk),0<=k<=n n + 1 n+1 n+1个参数点。
参数的选择会影响曲线的形状,进而影响曲线的参数化。

1.1 The Uniformly Spaced Method

区间为[0,1]时:
在这里插入图片描述
区间为[a,b]时:
在这里插入图片描述
当数据点不是均匀分布时,使用等间距参数可能会产生不规则的形状,例如大凸起、尖峰和环路。

1.2 The Chord Length Method

如果一条插值曲线非常接近数据多边形,则相邻两个数据点之间的曲线段长度将非常接近这两个数据点的弦长,并且插值曲线的长度也将非常接近数据多边形的总长度.
计算公式:
区间为[0,1]时:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
区间为[a,b]时:
在这里插入图片描述

弦长方法通常来说表现不错,但有时候,当弦长较长时,会导致曲线的凸出量较大,如下图所示:
在这里插入图片描述

1.3 The Centripetal Method

向心法是弦长法的扩展,相邻点的距离通过 ∣ D k − D k − 1 ∣ a |D_k-D_{k-1}|^a DkDk1a衡量,其中 a > 0 a>0 a>0.
计算公式如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
讨论:
a = 1 a=1 a=1时,向心法退化为弦长法;

a < 1 a<1 a<1时, ∣ D k − D k − 1 ∣ a < ∣ D k − D k − 1 ∣ |D_k-D_{k-1}|^a<|D_k-D_{k-1}| DkDk1a<DkDk1,较长弦(即长度>1)对数据多边形长度的影响减小,而较短弦(即长度<1)对数据多边形长度的影响增加。由于这个特点,向心法比弦长法更能处理尖峰。
效果图如下:
在这里插入图片描述
但向心法也不一定效果比其他两种方法好,如下图所示,当数据点分布较为对称时,向心法的效果不如等距法好:
在这里插入图片描述

2. 节点向量生成

2.1 Knot Vector Generation

得到一组参数后,就可以生成一个节点向量.
假设得到的 n + 1 n+1 n+1个参数分别为: t 0 , t 1 , . . . , t n t_0,t_1,...,t_n t0,t1,...,tn,对于 p p p次B样条曲线,需要 m + 1 m+1 m+1个节点,其中 m = n + p + 1 m=n+p+1 m=n+p+1. 如果曲线为Clamped,则 u 0 = u 1 = . . . = u p = 0 , u m − p = u m − p + 1 = . . . = u m = 1 u_0=u_1=...=u_p=0,u_{m-p}=u_{m-p+1}=...=u_m=1 u0=u1=...=up=0ump=ump+1=...=um=1,剩余的 n − p n-p np个节点可采用均匀分布或者其他方法。

均匀分布:
在这里插入图片描述
等间距的节点向量并不需要知道参数 t t t,而且生成起来非常简单。但是,不建议使用这种方法,因为如果将其与弦长法一起用于全局插值,则线性方程组将是奇异的。

de Boor提出的参数平均法:
在这里插入图片描述

2.2 The Universal Method

在前面讨论的方法中,都是先确定参数,然后生成节点向量。
Choong-Gyoo Lim提出了一种用等间距节点来计算参数的通用方法。
计算方法如下:
首先定义均匀分布的节点向量:在这里插入图片描述
由节点向量可以得到n+1个B样条基函数;
接下来选择使每个基函数达到最大值时,所对应的点作为参数。
如下图所示,黄色点即为选择的参数点:
在这里插入图片描述

3. 曲面的参数与节点向量

e + 1 e+1 e+1行, f + 1 f+1 f+1列控制点定义的,次数为(p,q)的B样条曲面如下:
在这里插入图片描述
假设存在 m + 1 m+1 m+1行, n + 1 n+1 n+1列数据点, D i j D_{ij} Dij,其中, 0 < = i < = m 0<=i<=m 0<=i<=m 0 < = j < = n 0<=j<=n 0<=j<=n,从而 u u u方向上需要 m + 1 m+1 m+1个参数, s 0 , . . . , s m s_0,...,s_m s0,...,sm v v v方向上需要 n + 1 n+1 n+1个参数, t 0 , . . . , t n t_0,...,t_n t0,...,tn,使得曲面上的点 S ( s c , t d ) S(s_c,t_d) S(sc,td)与数据点 D c d D_{cd} Dcd相对应。
在这里插入图片描述

参数计算方法:

  1. 分别对每一列数据点,如第 j j j列, D 0 , j , D 1 , j , . . . , D m , j D_{0,j},D_{1,j},...,D_{m,j} D0,j,D1,j,...,Dm,j计算 m + 1 m+1 m+1个参数,得到参数 u 0 , j , u 1 , j , . . . , u m , j u_{0,j},u_{1,j},...,u_{m,j} u0,j,u1,j,...,um,j,如下图所示,
    在这里插入图片描述
    得到 u u u方向的参数矩阵后,对每一行求平均,得到 s 0 , s 1 , . . . , s m s_0,s_1,...,s_m s0,s1,...,sm.
  2. 同理,分别对每一行数据点,如第 i i i行, D i , 0 , D i , 1 , . . . , D i , n D_{i,0},D_{i,1},...,D_{i,n} Di,0,Di,1,...,Di,n,计算 n + 1 n+1 n+1个参数,得到参数 v i , 0 , u i , 1 , . . . , u i , n v_{i,0},u_{i,1},...,u_{i,n} vi,0,ui,1,...,ui,n;
    得到 v v v方向的参数矩阵后,对每一列求平均,得到 t 0 , t 1 , . . . , t n t_0,t_1,...,t_n t0,t1,...,tn.

算法如下:
在这里插入图片描述

接下来,
由参数值 s 0 , s 1 , . . . , s m s_0,s_1,...,s_m s0,s1,...,sm和次数 p p p,可以得到 u u u方向上的节点向量 U U U;
由参数值 t 0 , t 1 , . . . , t n t_0,t_1,...,t_n t0,t1,...,tn和次数 q q q,可以得到 v v v方向上的节点向量 V V V.

4. 线性方程组的求解

假设 n n n× n n n的系数矩阵 A A A n n n× h h h的常数项矩阵 B B B,待求解的 n n n× h h h矩阵 X X X定义如下:
在这里插入图片描述
并且满足如下关系:
在这里插入图片描述

LU分解:
将矩阵 A A A分解为: A = L . U A=L.U A=L.U,其中 L L L为下三角矩阵, U U U为上三角矩阵.
如图所示:
在这里插入图片描述
代入原方程,可得:
B = ( L . U ) . X B=(L.U).X B=(L.U).X

B = L . ( U . X ) B=L.(U.X) B=L.(U.X)

Y = U . X Y=U.X Y=U.X,得,
B = L . Y B=L.Y B=L.Y

因而,方程 B = A . X B=A.X B=A.X的求解可分为两步:

  1. 由方程 B = L . Y B=L.Y B=L.Y求解 Y Y Y.
  2. 由方程 Y = U . X Y=U.X Y=U.X求解 X X X.

正向代换:
B = L . Y B=L.Y B=L.Y
计算过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
算法如下:
在这里插入图片描述

反向代换:
Y = U . X Y=U.X Y=U.X
计算过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
算法如下:
在这里插入图片描述

5. 曲线插值

问题描述:给定一组 n + 1 n+1 n+1个数据点 D 0 , D 2 , . . . , D n D_0,D_2,...,D_n D0,D2,...,Dn和次数 p p p,求一条由 n + 1 n+1 n+1个控制点定义的 p p p次B样条曲线,该曲线按给定顺序通过所给的数据点。

求解:
假设数据点和控制点均为 s s s维空间中的点,则有,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
求解得到矩阵 P P P后便可得到控制点,从而得到所求的B样条插值曲线。

算法:
一列一列求解 P P P
在这里插入图片描述
在这里插入图片描述
插值效果图:
在这里插入图片描述
注意:
如果节点是通过将连续 p p p个参数求平均的方式获得的,则矩阵 N N N是正定的,并且有:当 ∣ i − k ∣ > = p |i-k|>=p ik>=p时, N i , p ( t k ) = 0 N_{i,p}(t_k)=0 Ni,p(tk)=0(de Boor,1978证明).这表明上述算法得到的线性方程组可以用高斯消元法求解。

参数和节点对所构建曲线的影响:
如果弦长分布大致相同,那么所有四种参数选择方法的性能应该是相似的。此外,由于具有均匀节点的B样条基函数的最大值分布非常均匀,因此通用方法的性能应该与均匀方法相似。同样,向心法的工作原理应该类似于弦长法,因为前者是后者的延伸。然而,当弦长分布发生剧烈变化时,情况并非总是如此。
如下图所示:
在这里插入图片描述
参数和节点的关系:
在这里插入图片描述
与弦长法和向心法相比,通用法得到的参数和节点分布更均匀。此外,从向心法得到的参数和结使较短(resp,longer)的弦拉伸得更长(resp,short),因此分布更均匀。因此,用向心法得到的弦长曲线,在曲线上不会产生较大的晃动。

次数的影响:
在这里插入图片描述

等间距法和通用法通常能很好地跟踪较长的弦,但对于较短的弦则存在问题。因为参数的间距相等或几乎相等,所以对于较短的弦,插值曲线必须拉伸得稍微长一点。结果,我们看到了峰和环。高次曲线会使这种情况变得更糟,因为高阶曲线提供了更多的自由度。

至于弦长法,上面的图表明,对于较长的弦,尤其是后面或前面有许多短弦的弦,可能会出现大的凸起,因此,弦长法并不适用。阶数对上述插值曲线的形状没有显著影响。

由于向心法是弦长法的扩展,它们具有相同的特点。然而,由于向心法具有使两个相邻参数之间的距离趋于均匀的趋势,它也具有均与法和通用法的特点。例如,生成的插值曲线紧跟长弦,当阶数增加时,短弦可能会出现循环。事实上,上述结果表明向心法和通用法的计算结果是相似的。

插值的全局性:
改变单个数据点的位置会完全改变插值曲线的形状
在这里插入图片描述

6. 曲线逼近

问题描述:
给定一组 n + 1 n+1 n+1个数据点 D 0 , D 2 , . . . , D n D_0,D_2,...,D_n D0,D2,...,Dn和次数 p p p,控制点个数参数 h h h,求一条由 h + 1 h+1 h+1个控制点定义的 p p p次B样条曲线,该曲线满足以下两个条件:

  1. 曲线经过第一个和最后一个数据点 D 0 , D n D_0,D_n D0,Dn.
  2. 该曲线在最小二乘意义下逼近数据多边形.

求解:
1.曲线模型:
在这里插入图片描述
在这里插入图片描述
2.最小二乘意义下的目标函数推导:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.对单个控制点 P g P_g Pg求导:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
令导数为0可得,
在这里插入图片描述
4.矩阵形式:
在这里插入图片描述
又由,
在这里插入图片描述
在这里插入图片描述
可得:
在这里插入图片描述
求解方程得到 P P P,即可得到控制点,从而得到所求曲线。

算法:
在这里插入图片描述
次数和控制点个数对所构建曲线的影响:
在这里插入图片描述
低次曲线通常不能很好地逼近数据多边形,次数越高的曲线产生的结果越好;同样,控制点越多,逼近曲线的灵活性就越高。
但并不是曲线次数越高,控制点个数越多就好,因为全局逼近一般比全局插值使用更少的控制点。如果控制点的个数等于数据点的个数,全局逼近就变成了全局插值,就可以用全局插值了!至于次数,只要生成的曲线能捕捉到数据多边形的形状即可。
逼近的全局性:
更改数据点的位置会导致整个曲线发生变化。

7. 曲面插值

问题描述:
给定一个由 ( m + 1 ) × ( n + 1 ) (m+1)×(n+1) (m+1)×(n+1)个数据点 D i j ( 0 < = i < = m , 0 < = j < = n ) D_{ij}(0<=i<=m,0<=j<=n) Dij(0<=i<=m,0<=j<=n)组成的网格,次数 ( p , q ) (p,q) (p,q),求一个由 ( m + 1 ) × ( n + 1 ) (m+1)×(n+1) (m+1)×(n+1)控制点定义的,按给定顺序经过所有数据点的B样条曲面。

推导过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
控制点的求解分以下两步:

  1. 对于矩阵 D D D的每一列数据点,如第 d d d列,由次数 p p p,参数 s 0 , s 1 , . . . s m s_0,s_1,...s_m s0,s1,...sm,数据点 D 0 , d , D 1 , d , . . . , D m , d D_{0,d},D_{1,d},...,D_{m,d} D0,d,D1,d,...,Dm,d,求得第 d d d列的控制点 Q 0 , d , Q 1 , d , . . . , Q m , d Q_{0,d},Q_{1,d},...,Q_{m,d} Q0,d,Q1,d,...,Qm,d,得到 m + 1 m+1 m+1行, n + 1 n+1 n+1列的矩阵 Q Q Q
  2. 对于矩阵 Q Q Q的每一行数据点,如第 i i i行,由次数 q q q,参数 t 0 , t 1 , . . . t n t_0,t_1,...t_n t0,t1,...tn,数据点 Q i , 0 , Q i , 1 , . . . , Q i , n Q_{i,0},Q_{i,1},...,Q_{i,n} Qi,0,Qi,1,...,Qi,n,求得第 i i i行的控制点 P i , 0 , P i , 1 , . . . , P i , n P_{i,0},P_{i,1},...,P_{i,n} Pi,0,Pi,1,...,Pi,n.

算法如下:
在这里插入图片描述
m + 1 m+1 m+1行, n + 1 n+1 n+1列的控制点矩阵 P i j P_{ij} Pij,次数 ( p , q ) (p,q) (p,q),节点向量 U , V U,V U,V,可以得到所求的B样条曲面。
插值效果图:
在这里插入图片描述

插值的全局性:
由于插值曲面是通过m+n+2条全局曲线插值得到的,因此这种曲面插值是全局的。

8. 曲面逼近

问题描述:
给定一组 ( m + 1 ) × ( n + 1 ) (m+1)×(n+1) (m+1)×(n+1)个数据点 D i j ( 0 < = i < = m , 0 < = j < = n ) D_{ij}(0<=i<=m,0<=j<=n) Dij(0<=i<=m0<=j<=n),次数 ( p , q ) (p,q) (p,q),且满足 m > e > = p > = 1 m>e>=p>=1 m>e>=p>=1 n > f > = q > = 1 n>f>=q>=1 n>f>=q>=1 e e e f f f,找到由 ( e + 1 ) × ( f + 1 ) (e+1)×(f+1) (e+1)×(f+1)控制点 P i j P_{ij} Pij ( 0 < = i < = e , 0 < = j < = f ) (0<=i<=e,0<=j<=f) (0<=i<=e0<=j<=f)定义的,次数为 ( p , q ) (p,q) (p,q)的B样条曲面,该曲面按给定的顺序逼近于数据点网格。

求解:
u u u方向的 m + 1 m+1 m+1个参数分别为 s 0 , s 1 , . . . , s m s_0,s_1,...,s_m s0,s1,...,sm v v v方向上的 n + 1 n+1 n+1个参数分别为 t 0 , t 1 , . . . , t n t_0,t_1,...,t_n t0,t1,...,tn.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述误差函数:
在这里插入图片描述
对每个控制点求偏微分:
在这里插入图片描述
从而可以得到 ( e + 1 ) × ( f + 1 ) (e+1)×(f+1) (e+1)×(f+1)个非线性方程,求解非线性方程组非常耗时。

我们可以找到一个不使函数 f f f最小化的合理的解,而不是寻求最优解。

方法:
采用和曲面插值类似的方法,控制点的求解分为以下两步:

  1. D D D中的每一列 m + 1 m+1 m+1数据点,进行曲线逼近,分别得到 e + 1 e+1 e+1个中间数据点,由于共有 n + 1 n+1 n+1列,从而可以得到 ( e + 1 ) × ( n + 1 ) (e+1)×(n+1) (e+1)×(n+1)的中间数据点网格 Q Q Q
  2. Q Q Q中的每一行 n + 1 n+1 n+1数据点,进行曲线逼近,分别得到 f + 1 f+1 f+1个控制点,共有 e + 1 e+1 e+1行,从而可以得到 ( e + 1 ) × ( f + 1 ) (e+1)×(f+1) (e+1)×(f+1)的控制点矩阵 P P P.

算法如下:
在这里插入图片描述
由计算得到的 ( e + 1 ) × ( f + 1 ) (e+1)×(f+1) (e+1)×(f+1)控制点矩阵 P i j P_{ij} Pij,次数 ( p , q ) (p,q) (p,q),节点向量 U U U V V V,可以得到给定数据点的近似B样条曲面.
效果图如下:
在这里插入图片描述

尽管该算法不是最小化函数 f f f,不是一个最优算法,它仍适合于许多应用。

Wellesley, Massachusetts, А К Peters, Ltd., 1995. - 308 p., ISBN 1-56881-017-2. Library of Congress Cataloging-in-Publication Data.This is the continuation of One Dimensional Spline Interpolation Algorithms to two dimensions as mentioned in the postscript to that book. We again take the point of view that the nodes (only in the plane) and the values to be interpolated are fixed ahead of time and that no information on a possible underlying function is available.Contents: Preface. Spline Interpolation on Rectangular Grids. Polynomial Interpolation. Rectangular Grids and Product Interpolation. The Lagrange Form of the Bivariate Interpolating Polynomial. Polynomial Interpolation on Special Triangular Grids. Bilinear Spline Interpolation. Searching a Rectangular Grid. Bilinear Interpolation on Rectangles. Biquadratic Spline Interpolants. Knots the Same as Nodes. Knots Different from Nodes. Shape Preservation. A Local Quadratic Method of Interpolation. Bicubic Spline Interpolation. Bicubic Spline Interpolation on Rectangular Grids. Parametric Bicubic Spline Interpolation. Bicubic Hermite Spline Interpolation. Semi-Bicubic Hermite Spline Interpolation. Shape Preservation. Biquadratic Histosplines. Birational Spline Interpolants. Birational Spline Interpolants on Rectangular Grids. Birational Histosplines. Spline Interpolation for Arbitrarily Distributed Points. Global Methods without Triangulation. Existence Problems and Goal Setting. Shepard's Method. Hardy's Multiquadrics. Triangulations. Linear Spline Interpolants over Triangulations. The Approximation of First Partial Derivatives. Quadratic Spline Interpolants over Triangulations. Cubic Spline Interpolation over Triangulations. C1 Spline Interpolation of Degree Five on Triangulations. Postscript. A. Appendix. B. List of Subroutines. Bibliography. Index.
Wellesley, Massachusetts, A K Peters, Ltd., 1995. — 404 p. — ISBN 1-56881-016-4, OCR.Our intention is to provide an elementary and directly applicable introduction to the computation of those (as simple as possible) spline functions, which are determined by the requirement of smooth and shape-preserving interpolation and (in two cases) the smoothing of measured or collected data.Preface. Polynomial Interpolation. The Lagrange Form of the Interpolating Polynomial. The Newton Form of the Interpolating Polynomial. Polygonal Paths as Linear Spline Interpolants. General Spline Interpolants. arious Representations of a Polygonal Path. Evaluation by Searching an Ordered List. Properties of Polygonal Paths. When the Knots and Interpolation Nodes Are Different. Parametric Polygonal Paths. Smoothing with Polygonal Paths I. Smoothing with Polygonal Paths II. Quadratic Spline Interpolants. Knots the Same as Nodes. Optimal Initial Slope. Periodic Quadratic Spline Interpolants with Knots the Same as Nodes. Knots at the Midpoints of the Nodes. Knots Variable between the Nodes. Periodic Quadratic Spline Interpolants with Variable Knots between the Nodes. Nodes Variable between Knots. Quadratic Histosplines. Quadratic Hermite Spline Interpolants. Approximation of First Derivative Values I. Shape Preservation through the Choice of Additional Knots. Quadratic Splines with Given Slopes at Intermediate Points. Cubic Spline Interpolants. First Derivatives as Unknowns. Second Derivatives as Unknowns. Periodic Cubic Spline Interpolants. Properties of Cubic Spline Interpolants. First Derivatives Prescribed. Second Derivatives Prescribed. Smoothing with Cubic Spline Functions. Smoothing with Periodic Cubic Spline Functions. Cubic X-Spline Interpolants. Discrete Cubic Spline Interpolants. Local Cubic Hermite Spline Interpolants. Approximation of Values for the First Derivative II. Polynomial Spline Interpolants of Degree Five and Higher. Spline Interpolants of Degree Five. Quintic Hermite Spl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值