数值计算之 插值法(6)样条插值

  • 前言
  • 分段插值存在的问题
  • 样条插值
  • 三次样条插值
  • 样条插值与分段埃尔米特插值的区别
  • 后记

前言

本篇介绍插值法的最后一节,样条插值。

分段插值存在的问题

采用分段插值可以避免龙格现象,提升插值精度,但是分段插值的结果并不平滑。采用分段三次埃尔米特插值能够使得插值结果在节点附近相对平滑(没有突变点)。但是其平滑性也只是对于一阶导而言的。

为了让插值结果具有更好的平滑性,可以使用样条插值。

样条插值

对于待插值函数f(x)f(x)f(x),已知节点x0,x1,…,xnx_0,x_1,\dots,x_nx0​,x1​,…,xn​处的函数值,将相邻两节点进行分段,获得n个插值小区间,在每个区间内使用k次多项式Si(x)S_i(x)Si​(x)插值,使其满足插值条件与k-1阶平滑性:
Si(xi)=f(xi),Si(xi+1)=f(xi+1),0≤i≤n−1(1)Si(j)(xi+1)=Si+1(j)(xi+1),0≤i≤n−2,1≤j≤k−1(2)S_i(x_i)=f(x_i),S_i(x_{i+1})=f(x_{i+1}),0\le i\le n-1\quad (1) \\ \quad \\ S_i^{(j)}(x_{i+1})=S_{i+1}^{(j)}(x_{i+1}),0\le i\le n-2,1\le j\le k-1\quad (2) \\ Si​(xi​)=f(xi​),Si​(xi+1​)=f(xi+1​),0≤i≤n−1(1)Si(j)​(xi+1​)=Si+1(j)​(xi+1​),0≤i≤n−2,1≤j≤k−1(2)
将每段插值结果组合后,就是样条插值

三次样条插值

比较常用的是三次样条插值法,即假设上面的Si(x)S_i(x)Si​(x)是三次多项式:
Si(x)=ai+bix+cix2+dix3S_i(x)=a_i+b_ix+c_ix^2+d_ix^3 Si​(x)=ai​+bi​x+ci​x2+di​x3
由上式可知,一段三次样条含有4个未知数,则节点x0,x1,…,xnx_0,x_1,\dots,x_nx0​,x1​,…,xn​对应的三次样条含有4n个未知数。

每个节点x0,x1,…,xnx_0,x_1,\dots,x_nx0​,x1​,…,xn​都满足式(1),产生2n个等式。

每个节点x0,x1,…,xnx_0,x_1,\dots,x_nx0​,x1​,…,xn​都满足式(2),产生2(n-1)个等式。

因此,三次样条插值本身满足的条件只能形成4n-2个方程,少于未知参数量4n,必须添加额外条件:

自然边界:S′′(x0)=S′′(xn)=0S''(x_0)=S''(x_n)=0S′′(x0​)=S′′(xn​)=0
固定边界:S′(x0)=c1,S′(xn)=c2S'(x_0)=c_1,S'(x_n)=c_2S′(x0​)=c1​,S′(xn​)=c2​
周期样条:S′(x0)=S′(xn),S′′(x0)=S′′(xn)S'(x_0)=S'(x_n),S''(x_0)=S''(x_n)S′(x0​)=S′(xn​),S′′(x0​)=S′′(xn​)
Not-a-knot:S′′′(x0)=S′′′(x1),S′′′(xn−1)=S′′′(xn)S'''(x_0)=S'''(x_1),S'''(x_{n-1})=S'''(x_{n})S′′′(x0​)=S′′′(x1​),S′′′(xn−1​)=S′′′(xn​)

实际上可以自行设定条件,只要能够额外产生两个方程。

样条插值与分段埃尔米特插值的区别

样条插值曲线本身是光滑的,因为样条需要满足节点插值条件和平滑性。

分段埃尔米特插值需要同时满足节点函数值与导数值。换言之,埃米尔特插值的平滑性是由给定的节点导数值决定的。

后记

终于把插值给搞完了。下篇就是拟合了。

数值计算之 插值法(6)样条插值相关推荐

  1. 数值计算之 插值法(5)分段插值,埃尔米特插值

    数值计算之 插值法(5)分段插值,埃尔米特插值 前言 分段插值 分段线性插值 分段二次插值 埃尔米特Hermite插值 埃尔米特插值原理 埃尔米特插值公式 分段三次埃尔米特插值 后记 前言 之前记录了 ...

  2. 数值计算之 插值法(1)多项式插值——拉格朗日插值法

    数值计算之 插值法(1)多项式插值--拉格朗日插值法 前言 什么是插值 多项式插值法 拉格朗日插值法 总结 前言 移动机器人有一个非常重要的任务,轨迹规划.轨迹规划需要满足运动学原理,即在路径规划给出 ...

  3. 数值计算(三)-插值法(2)牛顿插值法

    拉格朗日插值法每当节点增加或者减少时,其对应的插值基函数都是需要重新构造,所以在实际计算时非常不方便,因此出现了一种新的插值法:Newton插值法. 均差 在学习Newton插值法之前时,先了解一个概 ...

  4. 数值计算——牛顿插值法

    相关知识:拉格朗日插值. 一般牛顿插值 ①考虑两个点的情况, f 1 ( x ) = f ( x 0 ) + k 1 ( x − x 0 ) f_1(x)=f(x_0)+k_1(x-x_0) f1​( ...

  5. python用复化梯形公式积分_复化梯形求积分——用Python进行数值计算

    用程序来求积分的方法有很多,这篇文章主要是有关牛顿-科特斯公式. 学过插值算法的同学最容易想到的就是用插值函数代替被积分函数来求积分,但实际上在大部分场景下这是行不通的. 插值函数一般是一个不超过n次 ...

  6. [模型]拉格朗日插值法

    文章目录 1 拉格朗日插值法的适用场景 2 拉格朗日插值法的基本原理 3 拉格朗日插值多项式的构建 5 拉格朗日插值法补全数据实现 5.1 Python 实现 6 插值效果验证 7 拉格朗日插值法算法 ...

  7. 优化理论20---插值法: Hermite插值法、龙格现象、分段插值、样条插值

  8. 数值计算 插值与拟合

    1. 拉格朗日多项式插值 了解概念 插值多项式 插值节点 范德蒙特(Vandermonde)行列式 截断误差.插值余项 特点 函数实现 function y=lagrange(x0,y0,x)n=le ...

  9. 数值计算算法-多项式插值算法的实现与分析

    数值计算是指在数值分析领域中的算法.数值分析是专门研究和数字以及近似值相关的数据问题,数值计算在数值分析的研究中发挥了特别重要的作用. 多项式插值是计算函数近似值的一种方法.其中函数值仅在几个点上已知 ...

  10. 数值计算(Python实现)(一)

    数值计算(Python实现)(一) 本篇内容简介: 解线性方程组:高斯消元法和高斯列主元消去法 解线性方程组的迭代方法:雅克比(Jacobi)迭代法与高斯-赛德尔迭代法 拉格朗日插值法 解非线性方程的 ...

最新文章

  1. 编译是检查c语言,为什么CMake检查C编译器?
  2. pyqt5-控件是否可用
  3. xcode 此工作区的项目包含使用Swift 3.x开发的源代码。此版本的Xcode不支持生成或迁移Swift 3.x目标。使用Xcode 10.1将代码迁移到Swift 4。
  4. asp.net Coolite 学习
  5. Google Maps API 进级:GoogleMaps中显示画中画
  6. LINUX下载编译libav
  7. Java学习笔记第七天:极其基础的家庭记账系统
  8. 数据导入与预处理实验一---KETTLE数据处理
  9. 三种方式,实现多可系统外网访问
  10. Android---性能优化方案分享,高级android开发强化实战pdf
  11. 钉钉考勤-获取需要记录考勤的人员
  12. java 导出excel 附带图片
  13. 北京慈文影视制作有限公司诉被告北京百度网讯科技有限公司侵犯著作权纠纷一案判决书
  14. 显示购物车列表和修改商品数量
  15. 全景拍摄—地面拍摄教程
  16. 让数字内容被平等获取 | Android 开发者故事
  17. Bp抓包HTTP响应报文
  18. 计算机病毒恶搞程序,【图片】我写的恶搞软件【病毒吧】_百度贴吧
  19. 关于量子计算机的一些整理 (精心整理原创) (1)
  20. Burp suite Proxy代理模块详解

热门文章

  1. 紫光华宇拼音输入法不为人知的秘密(一)
  2. 最新卡巴斯基互联网安全套装7.0(kis7)系列激活码
  3. C语言也能干大事第六节(如鹏基础)
  4. 照片转3d模型_云从科技3D人体重建技术刷新3项纪录!仅凭照片即可生成精细模型...
  5. 国产数据库 OceanBase 二次刷榜 TPC-C,7 亿 tpmC
  6. 在线图书销售系统顺序图_苏宁易购网上商城在线购物
  7. 【Coverity】Jenkins 的 Synopsys Coverity plugin参数配置详解
  8. Lua代码加密 LuaJit代码加密
  9. c语言余数求和,C语言实现两数相加2018-09-23(示例代码)
  10. 联想微型计算机怎么拆开图解,Lenovo(Ideapad)笔记本如何拆卸及安装电池