matlab编写分段Hermite插值多项式

文章目录

    • 原理
      • 使用分段Hermite插值多项式原因
      • 公式
        • 第一类的两个插值积函数
        • 第二类的两个插值积函数
      • 例题
        • 法一
        • 法二
    • 代码
      • 分段 Hermite 插值的思路:
      • 分段 Hermite 插值多项式的构造:
      • MATLAB 实现代码:
      • 结果如图:
      • 归一化变量的作用:

原理

使用分段Hermite插值多项式原因

对牛顿插值多项式和拉格朗日插值多项式分析的时候,我们发现当我们用高次插值多项式逼近 f ( x ) f(x) f(x)时候,会发生龙格现象,为克服这种现象,我们引入分段线性,分段二次拉格朗日插值多项式,可以看出这两种插值函数,具有良好的一致收敛性。
但是他有个致命的缺点,呢就是它不是光滑的。即它在节点处的左右导数不相同。在插值条件中引入导数的条件,即分段Hermite插值多项式。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

公式

第一类的两个插值积函数

在这里插入图片描述

第二类的两个插值积函数

在这里插入图片描述
在这里插入图片描述

如果要求插值函数具有连续性时候,我们既可以用分段拉格朗日也可以用分段Hermite,但是如果我们要求插值函数必须具有一阶连续导数,来近似 f ( x ) f(x) f(x)时候,我们只能采用三次Hermite插值,而不能用三次拉格朗日插值,

例题

法一

在这里插入图片描述

法二

在这里插入图片描述

代码

在 MATLAB 中编写 分段 Hermite 插值多项式,可以利用给定的节点以及每个节点的函数值和导数值来构造插值多项式。分段 Hermite 插值多项式不仅通过数据点(( x_i, y_i ))进行插值,而且还通过节点的导数信息进行插值,能够提供更平滑的插值曲线。

分段 Hermite 插值的思路:

假设给定的插值数据为:
[ x 0 , x 1 , … , x n ] [x_0, x_1, \dots, x_n] [x0,x1,,xn]
对应的函数值是:
[ y 0 , y 1 , … , y n ] [ y_0, y_1, \dots, y_n ] [y0,y1,,yn]
对应的导数值是:
[ y 0 ′ , y 1 ′ , … , y n ′ ] [ y'_0, y'_1, \dots, y'_n ] [y0,y1,,yn]
Hermite 插值多项式可以通过每对相邻的节点 ( ( x i , x i + 1 ) ) (( x_i, x_{i+1} )) (xi,xi+1)构建一个二次多项式 ( H i ( x ) ) ( H_i(x) ) (Hi(x)),而最终的插值多项式 ( P(x) ) 是这些二次多项式的分段拼接。

分段 Hermite 插值多项式的构造:

对于两个相邻的节点 ( ( x i , y i ) ) ( (x_i, y_i) ) ((xi,yi)) ( x i + 1 , y i + 1 ) (x_{i+1}, y_{i+1}) (xi+1,yi+1),其对应的 Hermite 插值多项式为:

在这里插入图片描述
在这里插入图片描述
即:
H i ( x ) = ( 2 ( x − x i ) 3 − 3 ( x − x i ) 2 + 1 ) y i + ( ( x − x i ) 3 − 2 ( x − x i ) 2 + ( x − x i ) ) h i + ( − 2 ( x − x i + 1 ) 3 + 3 ( x − x i + 1 ) 2 ) y i + 1 + ( ( x − x i + 1 ) 3 − ( x − x i + 1 ) 2 ) h i + 1 H_i(x) = (2(x - x_i)^3 - 3(x - x_i)^2 + 1) y_i + ((x - x_i)^3 - 2(x - x_i)^2 + (x - x_i)) h_i\\+ (-2(x - x_{i+1})^3 + 3(x - x_{i+1})^2) y_{i+1} + ((x - x_{i+1})^3 - (x - x_{i+1})^2) h_{i+1} Hi(x)=(2(xxi)33(xxi)2+1)yi+((xxi)32(xxi)2+(xxi))hi+(2(xxi+1)3+3(xxi+1)2)yi+1+((xxi+1)3(xxi+1)2)hi+1
在这里插入图片描述

其中,$( h_i ) $和 $( h_{i+1} ) $分别是导数值 ( y i ′ ) ( y'_i ) (yi) ( y i + 1 ′ ) ( y'_{i+1} ) (yi+1) 的权重。
满足:
在这里插入图片描述

MATLAB 实现代码:

x = [0, 1, 2];   % x 坐标
y = [1, 2, 0];   % y 坐标
dy = [1, -1, 2]; % 导数值
X = linspace(0, 2, 100);  % 生成 100 个插值点n = length(x);  % 数据点的个数m = length(X);  % 插值点的个数H = zeros(1, m); % 用于存储结果for k = 1:mxi = X(k);  % 当前插值点% 计算每个分段的插值sum_val = 0;for i = 1:n-1% 构造 Hermite 插值的每一段if xi >= x(i) && xi <= x(i+1)% 计算 Hermite 插值多项式t = (xi - x(i)) / (x(i+1) - x(i)); % 归一化变量% Hermite插值的基函数h00 = 2*t^3 - 3*t^2 + 1;h10 = t^3 - 2*t^2 + t;h01 = -2*t^3 + 3*t^2;h11 = t^3 - t^2;% 计算当前段的插值sum_val = y(i)*h00 + dy(i)*(x(i+1)-x(i))*h10 + y(i+1)*h01 + dy(i+1)*(x(i+1)-x(i))*h11;endendH(k) = sum_val;end

x = [0, 1, 2]; % x 坐标
y = [1, 2, 0]; % y 坐标

结果如图:

在这里插入图片描述
H ( x ) H(x) Hx有一阶导数

进行归一化不影响函数值:
在这里插入图片描述

在这里插入图片描述

t = (xi - x(i)) / (x(i+1) - x(i));

在分段 Hermite 插值多项式 中的作用是将插值点 ( x_i ) 和 ( x_{i+1} ) 之间的区间线性化,使得插值的计算变得更加简单和规范。这一过程的主要目的是 将原始区间 ( [x_i, x_{i+1}] ) 映射到标准化的单位区间 ( [0, 1] ),便于后续的插值运算。

归一化变量的作用:

归一化变量 ( t = x i − x ( i ) x ( i + 1 ) − x ( i ) ) ( t = \frac{xi - x(i)}{x(i+1) - x(i)} ) (t=x(i+1)x(i)xix(i)) 的目的是将原始区间 ( [ x i , x i + 1 ] ) ( [x_i, x_{i+1}] ) ([xi,xi+1]) 转换到标准化的区间 ( [0, 1] )。这样做的好处是:

  • 使得插值多项式的计算不依赖于原始数据的尺度或位置。
  • 使得插值公式在不同区间之间的一致性得以保持,便于构建和计算 Hermite 插值多项式。

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

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

相关文章

新时期下k8s 网络插件calico 安装

1、k8s master节点初始化完毕以后一直处于notreadey状态&#xff0c;一直怀疑是安装有问题或者是初始化有问题&#xff08;当然&#xff0c;如果真有问题要先解决这些问题&#xff09;&#xff0c;经过不断探索才发现是网络插件没有安装导致的&#xff0c;根据建议安装calico插…

《解锁图像的语言密码:Image Caption 开源神经网络项目全解析》

《解锁图像的语言密码&#xff1a;Image Caption 开源项目全解析》 一、开篇&#xff1a;AI 看图说话时代来临二、走进 Image Caption 开源世界三、核心技术拆解&#xff1a;AI 如何学会看图说话&#xff08;一&#xff09;深度学习双雄&#xff1a;CNN 与 RNN&#xff08;二&a…

【Maui】动态菜单实现(绑定数据视图)

前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架&#xff0c;用于使用 C# 和 XAML 创建本机移动和桌面应用。 使用 .NET MAUI&#xff0c;可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。 .NET MAUI 是一款开放源代码应用&#xff0c;是 X…

FreePBX 17 on ubuntu24 with Asterisk 20

版本配置&#xff1a; FreePBX 17&#xff08;最新&#xff09; Asterisk 20&#xff08;最新Asterisk 22&#xff0c;但是FreePBX 17最新只支持Asterisk 21&#xff0c;但是21非LTS版本&#xff0c;所以选择Asterisk 20&#xff09; PHP 8.2 Maria DB (v10.11) Node J…

with as提高sql的执行效率

实战sql with cte(UNIT_ID, UNIT_NAME, PARENT_UNIT_ID, UNIT_CODE ) as (select UNIT_ID, UNIT_NAME, PARENT_UNIT_ID , UNIT_CODEfrom HPFM_UNITunion allselect t.UNIT_ID, t.UNIT_NAME, t.PARENT_UNIT_ID, t.UNIT_CODEfrom HPFM_UNIT tjoin cte on t.PARENT_UNIT_ID cte.U…

G-Star Landscape 2.0 重磅发布,助力开源生态再升级

近日&#xff0c;备受行业瞩目的 G-Star Landscape 迎来了其 2.0 版本的发布&#xff0c;这一成果标志着 GitCode 在开源生态建设方面又取得了重要进展。 G-Star Landscape仓库链接&#xff1a; https://gitcode.com/GitCode-official-team/G-Star-landscape 2024 GitCode 开…

如何在 Linux系统用中挂载和管理磁盘分区

在 Linux 系统中&#xff0c;挂载和管理磁盘分区是系统管理的基本任务之一。以下是详细步骤&#xff0c;帮助你完成这一过程。 1. 查看现有磁盘和分区 首先&#xff0c;使用以下命令来查看系统中的磁盘和分区&#xff1a; bash 复制 lsblk或者使用&#xff1a; bash 复制…

Unity:删除注册表内的项目记录

然后WinR按键输入regedit 打开注册表 在注册表 HKEY CURRENT USER—>SOFTWARE—>Unity—>UnityEditor—>DefaultCompany —>language_Test 中&#xff0c;删除我们的之前存储的语言环境数据。在 “ 三、文本调用和替换 ” 测试时已经将语言环境存储到注册表中了…

Zustand selector 发生 infinate loops的原因以及解决

Zustand selector 发生 infinate loops 做zustand tutorial project的时候&#xff0c;使用选择器方法引入store&#xff0c;出现Maximum update depth exceeded,也就是组件一直重新渲染&#xff0c;改成直接使用store就没有不会出现这个问题。如下&#xff1a; // const [xIs…

世优波塔数字人 AI 大屏再升级:让智能展厅讲解触手可及

近日&#xff0c;世优波塔大屏AI数字人再度升级&#xff0c;将数字人技术与大屏交互推向了新的高度&#xff0c;为用户带来了全方位的卓越体验&#xff0c;让人工智能不断重塑我们的生活与工作方式。 新形象&#xff1a;数字人的独特魅力 高精度的数字人形象一直是波塔智能体…

STM32F4分别驱动SN65HVD230和TJA1050进行CAN通信

目录 一、CAN、SN65HVD230DR二、TJA10501、TJA1050 特性2、TJA1050 引脚说明 三、硬件设计1、接线说明2、TJA1050 模块3、SN65HVD230 模块 四、程序设计1、CAN_Init&#xff1a;CAN 外设初始化函数2、CAN_Send_Msg、CAN_Receive_Msg 五、功能展示1、接线图2、CAN 数据收发测试 …

Redis数据库笔记——主从复制

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Redis的主从复制模式&#xff0c;包括作用&#xff0c;原因&#xff0c;工作原理&#xff0c;同步流程等。 文章目录 主从复制什么是 Redis 主从…

【Unity功能集】TextureShop纹理工坊(十二)画笔工具、橡皮擦工具

项目源码:在终章发布 索引 画笔工具橡皮擦工具PS画笔工具、橡皮擦工具TextureShop画笔工具绘制点绘制线段画笔逻辑TextureShop橡皮擦工具画笔工具 画笔工具,可在绘画板上进行自由绘画的工具(了解PS画笔工具)。 橡皮擦工具 橡皮擦工具,可在绘画板上进行自由擦除颜色的工…

MMDetection框架下的常见目标检测与分割模型综述与实践指南

目录 综述与实践指南 SSD (Single Shot MultiBox Detector) 基本配置和使用代码 RetinaNet 基本配置和使用代码 Faster R-CNN 基本配置和使用代码 Mask R-CNN 基本配置和使用代码 Cascade R-CNN 基本配置和使用代码 总结 综述与实践指南 MMDetection是一个基于Py…

【数据库系统概论】第5章 数据库完整性【!触发器】

目录 5.1数据库完整性概述 5.2 实体完整性 5.3 参照完整性 5.4 用户定义的完整性 属性上的约束 1. 列值非空&#xff08;NOT NULL&#xff09; 2. 列值唯一&#xff08;UNIQUE&#xff09; 3. 检查列值是否满足条件&#xff08;CHECK&#xff09; 元组上的约束 5.5 完…

rk3568 , buildroot , qt ,使用sqlite, 动态库, 静态库

问题说明&#xff1a; 客户反馈 &#xff0c;buildroot 系统 &#xff0c;使用qt 使用sqlite &#xff0c;有报错&#xff0c;无法使用sqlite. 测试情况说明&#xff1a; 我自己测试&#xff0c;发现&#xff0c; buildroot 自己默认就是 使能了 sqlite 的。 是否解决说明&…

机器学习实战——决策树:从原理到应用的深度解析

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​ ​​ 决策树&#xff08;Decision Tree&#xff09;是一种简单而直观的分类与回归模型&#xff0c;在机器学习中广泛应用。它的…

MySQL 如何赶上 PostgreSQL 的势头?

原文地址 我与 MySQL 社区的前辈交谈时&#xff0c;经常遇到这个问题&#xff1a;「为什么 MySQL 这么棒&#xff0c;而且&#xff08;至少根据 DB-Engines 的计算&#xff09;仍然比 PostgreSQL 更流行&#xff1b;但它的地位在下降&#xff0c;PostgreSQL 却势不可挡地越来越…

Linux 下信号的保存和处理

信号的几个状态 信号抵达: 当接收到的信号被处理时, 此时就成为信号的抵达信号的未决: 从信号的产生到信号抵达这个时间段之间, 称为信号未决信号阻塞: 当进程设置了某个信号为阻塞后, 这个进程就不会在接收到这个信号信号忽略: 将信号设置为忽略后, 接收到这个信号, 对这个信…

mybatisX插件的使用,以及打包成配置

装mybatisX插件&#xff1b; idea连接数据库&#xff1b; 点击mybatisx-generator&#xff0c;设置自己装mybatisX插件&#xff1b; idea连接数据库&#xff1b; 点击mybatisx-generator&#xff0c;设置自己要的包和类&#xff1b; 如果要把自己的配置设置成一个自定义模板&a…