三次样条插值——三弯矩方法

这篇具有很好参考价值的文章主要介绍了三次样条插值——三弯矩方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

         三次样条插值方法,是将一个曲线函数分成多段,每相邻的两个标准点就是一个三次多项式函数.也就是说,n+1个标准点,共有 n 个三次函数.求解分段时共有4*n个未知系数

三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩

 其相邻的分段函数之间连续,一阶导连续,二阶导也连续。

因此 

  • 每个分段三次样条函数要经过每两个标准点即,  共可以列出2n 个方程;
  • 一阶导连续三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩  共有n -1 个方程;
  • 二阶导连续三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩  共有n -1 个方程,

共4n -2个方程,还要加上额外2个两两互不线性相关的方程才能求解得出 4n个未知系数。

这额外的2个方程就是所谓的边界条件。其分成左边界条件和右边界条件,分别用来进行模拟左外插和右外插。

主流边界条件如下

边界条件 说明 意义
Not-A-Knot
非扭结

左边界和右边界的三阶导数值相等

即 三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩

Natural 自然边界 指定端点二阶导数为0三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩
Clamped 固定边界 指定端点一阶导数

当然,也可以自行设置其他边界条件

利用三弯矩法求解三次样条方程

设三次样条函数 S(x) 和分段函数如下

        

为表示方便,另

三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩

三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩

这样 h 表示相邻的两个标准点的x轴距离, s表示斜率,M表示函数的二阶导

根据样条函数的定义可知,其二阶导数必然是线性方程,且为连续的折现段。因此折现段上的任一点可由折现段两端的值以及该点的所处位置表示出来,即拉格朗日线性插值法:

三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩        .......①

对上式进行两次积分后得到

三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩...........②

根据定义得知,函数必然经过标准点,因此把 三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩 代入到上述公式中,得到公式

 三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩...③                                                           

将 S(x)求导可得

三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩

三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩....④

三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩两式相等构成方程,

可通过移向得到方程组

三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩

其中三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩   .....................⑤

n-1个方程在加上两个边界方程,可以求解出 n+1 个M. 例如 "端点二阶导相等"的边界条件

三弯矩法求三次样条插值,C++,算法,算法,三次样条,边界条件,矩阵,三弯矩

将左边界方程加入到方程组第0个方程位置,将右边界加入到方程组第n个方程位置,可以得到一个三对角方阵.

剩下的就是线性代数矩阵行变换求解出M,再代入S(x)函数③ 得到 S(x)的函数方程。

只要输入的标准点的x坐标两两不相等,其方程组就可以求解的出来。文章来源地址https://www.toymoban.com/news/detail-818866.html

到了这里,关于三次样条插值——三弯矩方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Opencv实现的三次样条曲线(Cubic Spline)插值

    1.样条曲线简介 样条曲线(Spline)本质是分段多项式实函数,在实数范围内有: S:[a,b]→R ,在区间 [a,b] 上包含 k 个子区间[ti−1,ti],且有: a=t0t1⋯tk−1tk=b(1) 对应每一段区间 i 的存在多项式: Pi:[ti−1,ti]→R,且满足于: S(t)=P1(t) , t0≤tt1,S(t)=P2(t) , t1≤tt2,⋮S(t)=Pk(t) , 

    2024年02月06日
    浏览(38)
  • 三次样条样条:Bézier样条和Hermite样条

    总结 What is the Difference Between Natural Cubic Spline, Hermite Spline, Bézier Spline and B-spline? 1.多项式拟合中的 Runge Phenomenon 找到一条通过N+1个点的多项式曲线 ,需要N次曲线。通过两个点的多项式曲线为一次,三个点的多项式曲线为二次。当点数较多时,曲线阶数增高,在端点处易出现

    2024年02月04日
    浏览(43)
  • 曲线生成 | 图解三次样条曲线生成原理(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Mo

    2024年01月22日
    浏览(40)
  • 【心电图信号压缩】ECG信号压缩与通过三次样条近似重建的ECG信号压缩研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 心电图

    2024年02月13日
    浏览(40)
  • 深度学习基础知识 最近邻插值法、双线性插值法、双三次插值算法

    最邻近插值:将每个目标像素找到距离它最近的原图像素点,然后将该像素的值直接赋值给目标像素 优点 :实现简单,计算速度快 缺点 :插值结果缺乏连续性,可能会产生锯齿状的边缘,对于图像质量影响较大,因此当处理精度要求较高的图像时,通常会采用更加精细的插

    2024年02月03日
    浏览(56)
  • 传统图片超分算法——双三次插值 (Bicubic)、附C++源码

    呼,花了一个下午,终于是写完加调试完了所有的代码。 双三次插值介绍 之前我写的这篇博客中讲了什么是超分,并实现了单线性插值算法和双线性插值算法。在这里将再介绍一种插值算法——双三次插值算法。 首先,双三次插值法需要参考16个点(4x4),因此插值效果会

    2024年02月07日
    浏览(42)
  • OpenCV之薄板样条插值(ThinPlateSpline)

    官方文档:OpenCV: cv::ThinPlateSplineShapeTransformer Class Reference  使用方法: 头文件:#include opencv2/shape/shape_transformer.hpp (2)计算转换矩阵 (3)获取任意点的转换值 (4)图像变换         图像变换与多点变换相同,注意estimateTransformation只接受输入为(1,m,2)的tuple,不然就会报

    2024年02月12日
    浏览(37)
  • B-spline三次B样条曲线方程

    一、B-样条基函数 它有两条贝塞尔基函数所没有的特性, (1)定义域被节点细分(subdivided); (2) 基函数不是在整个区间非零。实际上,每个B样条基函数在附近一个子区间非零, 因此,B-样条基函数相当“局部”。 1.节点 设 U  是 m  + 1 个非递减数的集合, u 0 =  u 2 =  u 3 

    2024年02月06日
    浏览(40)
  • 贝塞尔曲线 PH曲线 C曲线 B样条 NURBS样条曲线 三次Cardinal样条曲线对比 也涉及到不同曲线加速度的一些东西,不过有待细化

    本文很多直接截图论文的,因为不需要重复造轮子,对比也只是为了选择更佳的路径规划曲线,对比于B曲线,时间不够,概括会有所疏漏,下表是曲线的对比表格,看完可以直接看下面,也涉及到不同曲线加速度的一些东西,不过有待细化,2022/3/17后来上了高等工程数学,如

    2024年02月03日
    浏览(41)
  • 基于Matlab的插值问题(Lagrange插值法、三次插值多项式)

    要求 1、 利用Lagrange插值公式 L n ( x ) = ∑ k = 0 n ( ∏ i = 0 , i ≠ k n x − x i x k − x i ) y k {L_n}(x) = sumlimits_{k = 0}^n {left( {prodlimits_{i = 0,i ne k}^n {frac{{x - {x_i}}}{{{x_k} - {x_i}}}} } right)} {y_k} L n ​ ( x ) = k = 0 ∑ n ​ ( i = 0 , i  = k ∏ n ​ x k ​ − x i ​ x − x i ​ ​ ) y k ​ 编写出

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包