三次样条插值 cubic spline interpolation

 

什么是三次样条插值

  插值(interpolation)是在已知部分数据节点(knots)的情况下,求解经过这些已知点的曲线,

然后根据得到的曲线进行未知位置点函数值预测的方法(未知点在上述已知点自变量范围内)。

  样条(spline)是软尺(elastic ruler)的术语说法,在技术制图中,使用软尺连接两个相邻数据点,

以达到连接曲线光滑的效果。

  样条插值是一种分段多项式(piecewise polynomial)插值法。数学上,曲线光滑需要在曲线上处处一阶导连续,

因此,在节点处需要满足一阶导数相等。另外,为了使得曲线的曲率最小,要求曲线二阶导连续【1】

在节点处需要二阶导相等。

  三次及以上多项式可以满足节点处光滑和曲率最小要求,但是次数高的曲线容易震荡,因此,就选用三次多项式即可。

 

数学表述

  假设有n个已知节点:

      

  函数关系记为: 

  在区间  中插值多项式曲线: 

        

注意,这里头曲线为,尾曲线为

  插值在节点处满足条件:

  (1)曲线经过节点:

    

  (2)曲线一阶导连续(光滑):

    

  (3)曲线二阶导连续(曲率最小):

    

  边界条件:对两端节点的约束。

  (B1)自然(natural (or free))边界条件

    

  (B2)固定(clamped)边界条件

    固定一阶导数:

     ,

    固定二阶导数:

    

  (B3)非节点边界(not-a-knot )

    要求在第二个节点  和倒数第二个节点 ,曲线的三阶导也连续:

    

    

 

三次多样式函数的计算

  样条函数采用n-1个三次多项式,每个三次多项式有4个参数,一共是4n-4个参数,

因此需要4n-4个方程。

    条件(1)n-1个曲线每个两端经过节点,提供2(n-1)=2n-2个方程;

    条件(2)n-1个曲线相邻一阶导连续,提供n-2个方程;

    条件(3)n-1个曲线相邻二阶导连续,提供n-2个方程;

  以上一共是4n-6个方程,还需要2个方程,这两个方程由边界条件提供,条件(B1), (B2), (B3)

每个均提供2个方程,这样就凑够了4n-4个方程。

  

计算的例子

  n个节点,n-1条曲线。在区间  内,令第i条曲线为:

    

  一二三阶导分别为:

    一阶:  

    二阶:  

    三阶:  

  接下来,套用节点条件和边界条件:

  先假设相邻节点横纵坐标的差值分别为: 

    条件(1):曲线  已经满足第一个式子:

    第二式 : 

      (I)    

    条件(2):

      (II)      

    条件(3):

      (III)           

    边界条件以非节点(Not-A_Knot)条件为例, 得:

      (IV)  

  联立方程(I)和(II), 分别消去  和  得:

    ,     

  带入方程(III)得:

    (V)    

  这里i的最大值应该取不到n-3,当i=n-3时,上式左边将出现 ,而参数a的范围是从0到n-2,

所以不存在这项,此式一共是n-2个方程。

    另外,方程(II)和(III)都不支持 ,需要单独计算 

    由方程(I),(III)分别有:

      

      

    =>

      

      

  由边界条件方程(IV)中的  得:

    

  方程(V)取i=0有:

    

  与上式联立消去,得:

    (VI)  

  另由  得:

    (VII)   

   方程(V), (VI), (VII)联立,n-1个方程,n-1个未知数(),参数a得解,然后在算出参数b和c即可。

  

References:

[1] Wikipedia: spline interpolation

 

转载于:https://www.cnblogs.com/tlz888/p/11454772.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element select 自动展开_js触发select自动展开

Q1:javascript模拟select,jselect的方法实现由于主流浏览器对select元素渲染不同,所以在每种浏览器下显示也不一样,最主要的是默认情况下UI太粗糙,即使通过css加以美化也不能达到很美观的效果。这对于我们这些专注于UX的前端开发人…

[html] 举例说明html的修饰元素有哪些?

[html] 举例说明html的修饰元素有哪些? 加粗:strong、b 倾斜:i、em 下划线:ins 删除线:del 自带样式:p、ul、ol、li、table、tr、td、thead、tbody等个人简介 我是歌谣,欢迎和大家一起交流前后…

vscode python环境_在vscode中配置python环境

原博文 2019-09-27 22:55 − 1.安装vscode和python3.7(安装路径在:E:\Python\Python37); 2.打开vscode,在左下角点击设置图标选择setting,搜索python path,在该路径下选择python的安装路径&…

[转] 【领导必读】唐僧为什么可以领导孙悟空

小时候读西游记总有一个疑问——那个唐僧那么无能,为什么孙悟空非要带着他去取经呢?如果孙悟空自己去取经,不就麻烦少多了么?后来长大了,工作了,先被人领导,之后又领导别人,总算明白…

python plt.show_如何使用Python最大化plt.show()窗口

因爲我在零信譽我不會留下任何其他的標誌而不是新的答案 我在Windows(WIN7)上運行Python 2.7.5 & Matplotlib 1.3。1我能夠使用以下行以最大化TkAgg,QT4Agg和wxAgg圖窗口:from matplotlib import pyplot as plt### for TkAgg backendplt.figure(1)pl…

ufw防火墙规则不生效

正式站系统是Ubuntu 16.04.6 一、今天一个项目有百度爬出,在nginx中封掉还在一直爬取,都403还不停爬取 二、在uwf封掉爬出ip,想封掉80端口没有用,然后封掉整个网段还是没有用,尴尬 三、放出终极大招 UFW(iptables)规则…

[html] html的标签元素分为哪几大类?分别有什么作用?

[html] html的标签元素分为哪几大类?分别有什么作用? 行内,块,行内块;单,双;个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家…

network怎么断点调试_Windows 网络编程:调试 API

一次性进群,长期免费索取教程,没有付费教程。教程列表见微信公众号底部菜单进微信群回复公众号:微信群;QQ群:460500587微信公众号:计算机与网络安全ID:Computer-network在Windows中有这么一些AP…

uva minesweep 水题

格式控制那块&#xff0c;用cin输入&#xff0c;输出的时候有问题&#xff0c;但不知道为什么能过 不知道是不是我理解错了 #include <cstdio> #include <iostream> using namespace std;char a[102][102];int n,m;int add(int q,int p) {int mines0;if(a[q][p]*)r…

nodejs,express链式反应

链式反应--next()const myexpress require(express); const bodyparser require(body-parser); var server myexpress(); server.listen(8080); server.use(/,function (req,res,next) {console.log(a);req.name "陈培昌";next() });server.use(/,function (req,…

[html] 列举下哪些块元素里面不能放哪些块元素呢?

[html] 列举下哪些块元素里面不能放哪些块元素呢&#xff1f; p、h1、...、h6等不能嵌套块级元素。 ul、ol、table、dl等内部必须是固定的元素。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

债券价格和到期收益率的关系_[债券知识]什么是到期收益率?到期收益率与债券价格的关系 - 南方财富网...

什么是到期收益率&#xff1f;到期收益率与债券价格的关系在投资市场上&#xff0c;有许多的专业术语需要投资者进行学习&#xff0c;对于债券基本知识&#xff0c;也需要我们去了解&#xff0c;比如什么是到期收益率&#xff1f;债券价格与到期收益率有什么关系&#xff1f;以…

非会员只能试看20分钟_做欧包都要把铁锅烤半小时?太费电了,用我这办法只需预热几分钟...

最近迷上了做欧包&#xff0c;做欧包要用蒸烤箱&#xff0c;做好的欧包才会外脆内软&#xff0c;如果没有蒸烤箱的话人们又研究出了用铸铁锅来做&#xff0c;先把铸铁锅放在烤箱里烘烤半小时左右&#xff0c;然后把面包坯子放入铸铁锅盖好盖子迅速放回烤箱&#xff0c; 因为锅的…

顺序表归并

对两个顺序表进行合并。 思想&#xff1a;定义两个变量&#xff08;i&#xff0c;j&#xff09;分别指向顺序表 A和B当前处理的元素&#xff0c;若i元素不大于j元素&#xff08;<&#xff09;&#xff0c;则把i元素复制到新表中&#xff0c;否者将j元素复制到新表中。 View …

vue下拉框值改变事件_vue和element ui 下拉框select的change事件

1 在线编辑测试工具编辑好代码后点击 run 即可2 vue原生写法2.1 html部分新增空{{ drug.name }}刪除尚未新增任何資料總金額&#xff1a;{{ totalMoney }}{{$data|json}}2.2 js部分new Vue({el: #app,data() {return {selected: null,items: [],// 按照系統正常流程&#xff0c…

Redis的常用命令及数据类型

Redis支持的五种数据类型 字符串 (string)字符串列表 (list)散列 (hash)字符串集合 (set)有序字符串集合 (sorted-set)key&#xff08;键&#xff09; keys * 获取所有的key select 0 选择第一个库 move myString 1 将当前的数据库key移动到某个数据库,目标库有&#xff0c;则不…

collection集合 多少钱_Java集合框架大汇总,建议收藏

Java集合Java集合框架&#xff1a;是一种工具类&#xff0c;就像是一个容器可以存储任意数量的具有共同属性的对象。Java集合中成员很丰富&#xff0c;常用的集合有ArrayList&#xff0c;HashMap&#xff0c;HashSet等。线程安全的有Vector&#xff0c;HashTable。线程不安全的…

项目管理思考——我适合做项目经理吗

一般来说项目经理这个职位是从事IT工作的诸位兄弟姐妹的奋斗目标。而IT行业的特点决定了外行很难领导内行&#xff0c;因此这个职位上的人员都是经历过一线开发的人员一步一个脚印升上去的&#xff0c;而很少有空降一个外行来担当的情况发生。 不同的公司职位设置不同&#xff…

[html] IE6文字溢出BUG(别名:多出来的猪、谍影重重)怎么解决呢?

[html] IE6文字溢出BUG&#xff08;别名&#xff1a;多出来的猪、谍影重重&#xff09;怎么解决呢&#xff1f; 删除注释或不设置浮动个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣…