【数学与算法】【分段三次Hermite插值】和【分段三次样条插值】
光滑曲线在数学上的定义是什么??
原文链接:光滑曲线在数学上的定义是什么?
回答1:
定义:切线随切点的移动而连续转动。
若函数f(x)f(x)f(x)在区间(a,b)(a,b)(a,b)内具有一阶连续导数,则其图形为一条处处有切线的曲线。则为光滑曲线。简言之,若f′(x)f'(x)f′(x)连续,则曲线光滑。
但反之,不成立。比如圆,圆在直角坐标系下,有两条竖直的切线,导数不存在(为∞大)。
回答2:
不敢保证对。但同纠结这个问题,想了许久,有点心得,拿来探讨。希望有缘破解心中迷雾:
- 1.光滑,从直观上是不突兀,流线的。台阶本质上是折线,因此在转折处感觉尖锐,突兀,是为不光滑。例如y=丨x丨y=丨x丨y=丨x丨在x=0x=0x=0处就很尖锐。y=x2y=x^2y=x2在 x=0x=0x=0处是一段曲线,看上去用手摸了不会扎手。
- 2.存在切线,就是在一点附近,曲线无限接近于一条直线。曲线被磨平了,只有这样,才不扎手。要求切线随着点连续转动,就是表达曲线不会一下子过度太快,无限接近的两点形状无限接近。
至于判断,先直观想象图像,再证明。
求一次导,相当于把函数的变化过程放大一次。因此严格的光滑定义要求无限阶可导,也就是不管怎么拉大拉平,都是不扎手。
分段差值:
分段插值: 通常可能指的是直接分段低次线插, 通俗来说 这样出来的线条不是很平滑. 因为在节点上不一定可导.
直接hermite插值就和一楼说的差不多三次样条与分段 Hermite 插值的根本区别在于S(x)自身光滑(考虑了二阶倒数),不需要知道 f 的导数值(除了在2个端点可能需要);
而Hermite插值依赖于f 在所有插值点的导数值。(S(x)为插值基函数,f为你要插值的函数)
分段三次埃尔米特插值:
可以参考:数值分析(4)-多项式插值: 埃尔米塔插值法
Hermite 插值就是要求插值函数不仅经过所给节点,而且要保证在该点的导数也相等。
以3个点为例,想要使用分段3次Hermite 插值
求出这三个点的插值函数:
分析一下,每一段三次hermite插值多项式 f(x)=a+b∗x+c∗x2+d∗x3\color{blue}f(x)=a+b*x+c*x^2+d*x^3f(x)=a+b∗x+c∗x2+d∗x3都有4个未知系数需要求解,三个点就是两段,那么就有2*4=8
个未知数。8个未知数,就需要联立8元一次方程组,需要8个方程:
S0(x0)=y0S0(x1)=y1S1(x1)=y1S1(x2)=y2S0′(x1)=S1′(x1):一阶导数值相等\color{blue} S_0(x_0)=y_0 \\ S_0(x_1)=y_1 \\ S_1(x_1)=y_1 \\ S_1(x_2)=y_2\\ S_0'(x_1)=S_1'(x_1) :一阶导数值相等 S0(x0)=y0S0(x1)=y1S1(x1)=y1S1(x2)=y2S0′(x1)=S1′(x1):一阶导数值相等
上面有5个方程,还差3个方程,这三个方程从定义中可知,需要知道每个点x0、x1、x2\color{blue}x_0、x_1、x_2x0、x1、x2处的导数。即S0′(x0)、S1′(x1)、S1′(x2)\color{blue}S_0'(x_0)、S_1'(x_1)、S_1'(x_2)S0′(x0)、S1′(x1)、S1′(x2)的导数值必须已知,但是实际工程中是不太可能知道每个点的导数值的。因为,你连原函数都不知道,怎么能知道导数值呢?
总结一下:Hermite插值在实际使用的时候没有多大意义,同时知道点和导数,还假装不知道原函数的情况,不多(PS:都知道导数了有什么计算的必要?)
所以,一般用牛顿,牛顿大法好!
分段三次样条插值:
推荐参考【三次样条(cubic spline)插值】
可以参考【数值分析(5)-分段低次插值和样条插值】
三次多项式有两种形式,很自然的,我们会想到第一种,如下:
y=ai+bix+cix2+dix3(1)y=a_i+b_ix+c_ix^2+d_ix^3 \tag{1} y=ai+bix+cix2+dix3(1)
我们还有第二种写法,下面的曲线表达式经过(xi,yi)(x_i,y_i)(xi,yi):
y=ai+bi(x−xi)+ci(x−xi)2+di(x−xi)3(2)y=a_i+b_i(x-x_i)+c_i(x-x_i)^2+d_i(x-x_i)^3 \tag{2} y=ai+bi(x−xi)+ci(x−xi)2+di(x−xi)3(2)
把上面(2)这个展开后,变成了:
y=(ai−bixi+cixi2−dixi3)+(bi−2cixi+3dixi2)x+(ci−3dixi)x2+dix3y=\color{blue}(a_i-b_ix_i+c_ix_i^2-d_ix_i^3)+\color{red}(b_i-2c_ix_i+3d_ix_i^2)x+\color{green}(c_i-3d_ix_i)x^2+\color{brown}d_ix^3 y=(ai−bixi+cixi2−dixi3)+(bi−2cixi+3dixi2)x+(ci−3dixi)x2+dix3
所以两种形式的写法都对,最终求出来的ai、bi、ci、dia_i、b_i、c_i、d_iai、bi、ci、di虽然是不同的值,但是最终的表达式肯定是一样的。因为第二种写法的ai、bi、ci、dia_i、b_i、c_i、d_iai、bi、ci、di并不是真正的系数,不过第二种写法在推导数学公式时很方便。
有点类似于我们小学时候学的y=kx+by=kx+by=kx+b和y−yi=k(x−xi)y-y_i=k(x-x_i)y−yi=k(x−xi)的样子,都是两种表示方法。
对于分段三次样条插值,就比分段三次hermite多项式插值多了一个条件
,即各点的二阶导数
相等。还是以三个点为例:
S0(x0)=y0S0(x1)=y1S1(x1)=y1S1(x2)=y2S0′(x1)=S1′(x1):x1处一阶导数值相等S0′′(x1)=S1′′(x1):x1处二阶导数相等\color{blue} S_0(x_0)=y_0\\ S_0(x_1)=y_1\\ S_1(x_1)=y_1\\ S_1(x_2)=y_2\\ S_0'(x_1)=S_1'(x_1) :x_1处一阶导数值相等\\ S_0''(x_1)=S_1''(x_1):x_1处二阶导数相等 S0(x0)=y0S0(x1)=y1S1(x1)=y1S1(x2)=y2S0′(x1)=S1′(x1):x1处一阶导数值相等S0′′(x1)=S1′′(x1):x1处二阶导数相等
然后再利用三类边界条件
中的其中一种边界条件,即可以从两个端点x0、x2\color{blue}x_0、x_2x0、x2处再得到两个方程。
三类边界条件:
用下面的解释更容易明白:
例如一系列节点 x0、x1、......、xn−1、xn\color{blue}x_0、x_1、......、x_{n-1}、x_nx0、x1、......、xn−1、xn,其中x0、xn\color{blue}x_0、x_nx0、xn是两个端点(也叫边界点),三类边界条件如下:
- 自然边界:
两个端点即边界点的二阶导
都为0;
S0′′(x0)=0\color{blue}S_0''(x_0)=0S0′′(x0)=0
Sn′′(xn−1)=0\color{blue}S_n''(x_{n-1})=0Sn′′(xn−1)=0。 - 夹持边界:
由边界点一阶导数
给定,例如分别给两个边界点的一阶导数
设定为A\color{blue}AA和B\color{blue}BB;
S0′(x0)=A\color{blue}S_0'(x_0)=AS0′(x0)=A
Sn′(xn−1)=B\color{blue}S_n'(x_{n-1})=BSn′(xn−1)=B。 - 非扭结边界:
使两个边界端点的三阶导
与这两端点的邻近点的三阶导
相等。那么令
S0′′′(x0)=S0′′′(x1)\color{blue}S_0'''(x_0)=S_0'''(x_1)S0′′′(x0)=S0′′′(x1)
Sn′′′(xn−1)=Sn′′′(xn)\color{blue}S_n'''(x_{n-1})=S_n'''(x_n)Sn′′′(xn−1)=Sn′′′(xn)。
【数学与算法】【分段三次Hermite插值】和【分段三次样条插值】相关推荐
- 数学建模准备 插值(拉格朗日多项式插值,牛顿多项式插值,分段线性插值,分段三次样条插值,分段三次Hermite插值)
文章目录 摘要(必看) 0 基础概念 什么是插值 插值用途 什么是拟合 插值和拟合的相同点 插值和拟合的不同点 1 常用的基本插值方法 1.1 多项式插值法 1.1.1 拉格朗日多项式插值法 多项式插 ...
- 机器人路径规划之分段三次Hermite插值(PCHIP) [包括Python和Matlab代码实现]
前言 在机器人的路径规划中针对离散采样点做插值计算生成平滑的曲线轨迹也是挺重要的一部分,本文主要介绍一下目前使用较多也是个人觉得挺好用的一个插值方法--分段三次 Hermite 插值(PCHIP),并 ...
- 2021-07-21 分段三次Hermite插值及其与三次样条的比较
Numpy数组自身加和与乘积运算 http://www.weixueyuan.net/a/794.html python-scipy -hermite插值,分段三次Hermite插值 import n ...
- 曲线平滑算法:三次Hermite曲线生成
目录 1.三次Hermite曲线的参数方程 2. 三次Hermite曲线的绘制 Hermite曲线是通过给定曲线的两个端点的位置矢量.以及两个端点处的切线矢量.来描述曲线的,如图1所示.这里先对Her ...
- matlab spline三次样条插值x,Spline(三次样条插值)
关于三次样条插值,计算方法比较复杂,但是静下心来仔细研究也是可以理解的. 本文借鉴文章来源:http://www.cnki.com.cn/Article/CJFDTotal-BGZD200611035 ...
- 清风数学建模学习笔记——应用matlab实现分段三次埃尔米特(Hermite)插值与三次样条插值
插值算法 数模比赛中,常常需要根据已知的函数点进行数据.模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就需要使用一些数学的方法,模拟产生一些新的但又比较靠谱的值来满足需求 ...
- 【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践
温馨提示:本文共有3748字,阅读并理解全文大概需要15-20分钟 插值算法 一.插值法的定义 1.插值函数一共有三种: 2.多项式插值法原理 3.分段插值法原理: 4.具体如何求插值函数呢? (1) ...
- 分段三次埃尔米特插值
引入: Hermite插值定义:对于一个n+1个节点的插值问题,要求在给定的节点处,插值多项式的函数值与节点的函数值相等.同时插值多项式的一阶甚至到指定高阶的导数值,也与该节点相应阶导数值相同.这样做 ...
- python三次样条插值拟合的树行线_数学建模笔记——插值拟合模型(一)
啊好像距离上次写作又过了七天,啊好像我之前计划的一周两三篇,啊辣鸡小说毁我青春,啊我是一只可怜的鸽子. 不管怎样,我又回来了,并坚定地更新着hhh.再过两三天就是我们学校数学建模选拔,再过八九天就是期 ...
最新文章
- 网络编程: 基于UDP协议的socket
- Mybatis(16)注解开发环境搭建
- 关于ThreadPool.RegisterWaitForSingleObject和WaitHandle的应用介绍
- lua 差值 日期_lua时间戳和日期转换及踩坑
- 判别式模型 vs. 生成式模型
- Au 音频效果参考:特殊效果
- java微信公众号百度地图,微信公众号集成百度地图api,实现收货地址选择
- OpenGL学习(七)通过assimp库读取多种格式的模型
- BMI体重指数计算器
- ORCAD原理图检查
- 一个手机里登录2个微信号(微信双开)
- mongoDB数据库mong.conf配置文件的问题
- Notebook for Integer Programming (Laurence A. Wolsey) - Well-Solved Problems
- ramdisk文件系统的介绍与制作
- 计算机辅助设计 王茹,《计算机辅助设计》王茹.pdf
- 在c语言中本征函数说明,结合单片机学习板学习c语言之流水灯制作--intrins.h头文件...
- 硬核推荐:博主神器OpenWrite,免费的一文多发平台,无需部署,注册即用,安全可靠!
- 牡牛和牝牛(信息学奥赛一本通 1652)
- php 结合md5的加密,解密方法
- Mac怎么安装CAD(AutoCAD)安装教程,M系列芯片安装CAD正版 CAD教程
热门文章
- intellij idea 怎么全局搜索--转
- 为电商而生的知识图谱,如何感应用户需求
- hadoop命令帮助
- rsync+inotify实现实时同步案例--转
- 【采用】反欺诈之四大杀器
- blockchain 区块链200行代码:在JavaScript实现的一个简单的例子
- 新闻上的文本分类:机器学习大乱斗 王岳王院长 王岳王院长 5 个月前 目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比较短文本分类处
- 利用TensorFlow和神经网络来处理文本分类问题
- 王兴:互联网化是企业家最大的机会
- Java Review - 使用Timer时需要注意的事情