查看“︁样条插值”︁的源代码
←
样条插值
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
在[[数值分析]]这个数学分支中,'''样条插值'''是使用一种名為[[样条]]的特殊[[分段]][[多项式]]进行插值的形式。由于样条插值可以使用低阶多项式样条实现较小的插值误差,这样就避免了使用高阶多项式所出现的[[龙格现象]],所以样条插值得到了流行。 ==样条插值== 使用多项式插值,对给定数据集进行插值的''n''阶多项式就被给定数据点所唯一地定义出来。但是,对同样的数据进行插值的''n''阶样条并不是唯一的,为了构建一个唯一的样条插值式它还必须满足另外''n''-1个[[自由度]]。 ==线性样条插值== 线性样条插值是最简单的样条插值。数据点使用[[直线]]进行连接,结果样条是一个[[多边形]]。 从代数的角度来看,每个''S''<sub>''i'' </sub>都是一个如下 :<math>S_i(x) = y_i + \frac{y_{i+1}-y_i}{x_{i+1}-x_i}(x-x_i)</math> 的[[线性函数]]。 样条在每个数据点都必须连续,即 :<math>S_i(x_{i+1}) = S_{i+1}(x_{i+1}) \qquad \mbox{ , } i=1,\ldots n -1</math> 我们很容易得到 :<math>S_{i-1}(x_i) = y_{i-1} + \frac{y_{i}-y_{i-1}}{x_{i}-x_{i-1}}(x-x_{i-1}) = y_i</math> :<math>S_{i}(x_i) = y_i + \frac{y_{i+1}-y_i}{x_{i+1}-x_i}(x-x_i) = y_i</math> 所以以上论述成立。 ==二次样条插值== 二次样条插值可以构建为 :<math> S_i(x) = y_i + z_i(x-x_i) + \frac{z_{i+1}-z_i}{2(x_{i+1}-x_i)}(x-x_i)^2 </math> 通过选择<math>z_0</math>,然后用[[遞迴關係式|递推关系]]就可以得到[[系数]]: :<math> z_{i+1} = -z_i + 2 \frac{y_{i+1}-y_i}{x_{i+1}-x_i} </math> ==三次样条插值== 对于<math>n+1</math>给定点的数据集<math>\{x_i\}</math>,我们可以用<math>n</math>段三次[[多项式]]在数据点之间构建一个三次样条。如果 :<math>S(x)=\left\{\begin{matrix} S_0(x),\ x\in[x_0,x_1] \\ S_1(x),\ x\in[x_1,x_2]\\ \cdots \\ S_{n-1}(x),\ x\in[x_{n-1},x_n]\end{matrix}\right.</math> 表示对函数<math>f</math>进行插值的样条函数,那么需要: * 插值特性,<math>S(x_i)=f(x_i)</math> * 样条相互连接,<math>S_{i-1}(x_i) = S_i(x_i), i=1,\ldots,n-1</math> * 两次连续可导,<math>S'_{i-1}(x_i) = S'_i(x_i)</math> 以及 <math>S''_{i-1}(x_i) = S''_i(x_i), i=1,\ldots,n-1</math>. 由于每个三次多项式需要四个条件才能确定曲线形状,所以对于组成<math>S</math>的<math>n</math>个三次多项式来说,这就意味着需要<math>4n</math>个条件才能确定这些多项式。但是,插值特性只给出了<math>n+1</math>个条件,内部数据点给出<math>n+1-2=n-1</math>个条件,总计是<math>4n-2</math>个条件。我们还需要另外两个条件,根据不同的因素我们可以使用不同的条件。 其中一项选择条件可以得到给定<math>u</math>与<math>v</math>的''钳位''三次样条, :<math> S'(x_0) = u \,\!</math> :<math> S'(x_k) = v \,\!</math> 另外,我们可以设 :<math>S''(x_0) = S''(x_n) = 0 \,\!</math>. 这样就得到''自然''三次样条。自然三次样条几乎等同于[[样条设备]]生成的曲线。 在这些所有的二次连续可导函数中,钳位与自然三次样条可以得到相对于待插值函数''f''的最小震荡。 如果选择另外一些条件, :<math> S(x_0) = S(x_n) \,\!</math> :<math> S'(x_0) = S'(x_n) \,\!</math> :<math> S''(x_0) = S''(x_n) \,\!</math> 可以得到''周期性''的三次样条。 如果选择, :<math> S(x_0) = S(x_n) \,\!</math> :<math> S'(x_0) = S'(x_n) \,\!</math> :<math> S''(x_0) = f'(x_0),\quad S''(x_n)=f'(x_n) \,\!</math> 可以得到''complete''三次样条。 ===三次样条的最小性=== 三次样条有另外一个非常重要的解释,实际上它是在[[索伯列夫空间]]<math>H^2([a; b])</math>最小化泛函 :<math>J(f)=\int_a^b |f''(x)|^2 dx</math> 的函数。 泛函<math>J</math>包含对于函数<math>f(x)</math>全部[[曲率]]<math>\left|\frac{f''(x)}{(1+f'(x)^2)^{\frac{3}{2}}}\right|</math>的近似,样条是<math>f(x)</math>最小曲率的近似。 由于弹性条的总体能量与曲率成比例,所以样条是受到<math>n</math>个点约束的弹性条的最小能量形状。样条也是基于弹性条设计的工具。 ===使用自然三次样条的插值=== 它可以定义为 :<math> S_i(x) = \frac{z_{i+1} (x-x_i)^3 + z_i (x_{i+1}-x)^3}{6h_i} + \left(\frac{y_{i+1}}{h_i} - \frac{h_i}{6} z_{i+1}\right)(x-x_i) + \left(\frac{y_{i}}{h_i} - \frac{h_i}{6} z_i\right)(x_{i+1}-x) </math> 以及 :<math>h_i = x_{i+1} - x_i \,\!</math>. 通过解下面的方程可以得到它的系数。 :<math> \left\{\begin{matrix} z_0 = 0 \\ h_{i-1} z_{i-1} + 2(h_{i-1} + h_i) z_i + h_i z_{i+1} = 6 \left( \frac{y_{i+1}-y_i}{h_i} - \frac{y_i-y_{i-1}}{h_{i-1}} \right) \\ z_n = 0 \end{matrix}\right. </math> ==示例== ===线性样条插值=== 假设要为带有节点 :<math> (x_0,f(x_0)) = (x_0,y_0) = \left(-1,\ e^{-1}\right) \,\! </math> :<math> (x_1,f(x_1)) = (x_1,y_1) = \left(-\frac{1}{2},\ e^{-\frac{1}{4}}\right) \,\! </math> :<math> (x_2,f(x_2)) = (x_2,y_2) = \left(0,\ 1\right) \,\! </math> :<math> (x_3,f(x_3)) = (x_3,y_3) = \left(\frac{1}{2},\ e^{-\frac{1}{4}}\right) \,\! </math> :<math> (x_4,f(x_4)) = (x_4,y_4) = \left(1,\ e^{-1}\right) \,\! </math> 的函数 :<math>f(x) = e^{-x^2} </math> 找一个线性样条。直接代入样条公式,我们得到如下样条: :<math> S(x) = \left\{\begin{matrix} e^{-1} + 2(e^{-\frac{1}{4}} - e^{-1})(x+1) & x \in [-1, -\frac{1}{2}] \\ e^{-\frac{1}{4}} + 2(1-e^{-\frac{1}{4}})(x+\frac{1}{2}) & x \in [-\frac{1}{2},0] \\ 1 + 2(e^{-\frac{1}{4}}-1)x & x \in [0,\frac{1}{2}] \\ e^{-\frac{1}{4}} + 2(e^{-1} - e^{-\frac{1}{4}})(x-\frac{1}{2}) & x \in [\frac{1}{2},1] \\ \end{matrix}\right. </math> 样条函数(蓝线)以及所近似的函数(红点)如下图所示: :[[File:Linearspline.png| ]] ===二次样条插值=== 下图是一个''k''=4的样条函数(蓝线)与所近似的函数(红线)的例子: :[[File:Quadraticspline_jaredwf.png| ]] ==参见== *[[三次埃尔米特样条]] *[[NURBS]] [[Category:样条]] [[Category:插值论]] [[Category:数学近似]]
返回
样条插值
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息