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/205.html

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

相关文章

element ui前端小数计算精度丢失的问题如何解决?

文章目录 前言一、什么是精度丢失&#xff1f;产生精度丢失的原因如何避免或减少精度丢失的影响 二、实际项目开发实例举例以项目预算模块为例如何解决精度丢失 总结 前言 在《工程投标项目管理系统》项目开发中工程项目预算、成本管理、财务管理等模块的开发中不可避免的要和…

《分布式光纤测温:解锁楼宇安全的 “高精度密码”》

在楼宇建筑中&#xff0c;因其内部空间庞大&#xff0c;各类电器设施众多&#xff0c;如何以一种既高效又稳定&#xff0c;兼具低成本与高覆盖特性的方式&#xff0c;为那些关键线路节点开展温度监测&#xff0c;是目前在安全监测领域一项重点研究项目&#xff0c;而无锡布里渊…

油猴支持阿里云自动登陆插件

遇到的以下问题&#xff0c;都已在脚本中解决&#xff1a; 获取到的元素赋值在页面显示&#xff0c;但是底层的value并没有改写&#xff0c;导致请求就是获取不到数据元素的加载时机不定&#xff0c;尤其是弱网情况下&#xff0c;只靠延迟还是有可能获取不到&#xff0c;且登陆…

代码随想录算法训练营第3天(链表1)| 203.移除链表元素 707.设计链表 206.反转链表

一、203.移除链表元素 题目&#xff1a;203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 视频&#xff1a;手把手带你学会操作链表 | LeetCode&#xff1a;203.移除链表元素_哔哩哔哩_bilibili 讲解&#xff1a;代码随想录 注意&#xff1a; 针对头结点和非头结点的…

如何实现多级缓存?

本文重点说一说在Java应用中&#xff0c;多级缓存如何实现。 多级缓存是比较常见的一种性能优化的手段&#xff0c;一般来说就是本地缓存分布式缓存。 本地缓存一般采用Caffeine和Guava&#xff0c;这两种是性能比较高的本地缓存的框架。他们都提供了缓存的过期、管理等功能。…

网工_网络体系结构

2024.01.09&#xff1a;网络工程学习笔记&#xff08;网工老姜&#xff09; 第1节 网络体系结构 1.1 计算机一切皆011.2 网络协议1.3 协议的分层模型1.4 主机1向主机2发送数据过程1.5 本章小结 1.1 计算机一切皆01 在计算机内部&#xff0c;所有的数据最终都是以01的方式存在的…

3DGabor滤波器实现人脸特征提取

import cv2 import numpy as np# 定义 Gabor 滤波器的参数 kSize 31 # 滤波器核的大小 g_sigma 3.0 # 高斯包络的标准差 g_theta np.pi / 4 # Gabor 函数的方向 g_lambda 10.0 # 正弦波的波长 g_gamma 0.5 # 空间纵横比 g_psi np.pi / 2 # 相位偏移# 生成 Gabor 滤…

如何稳定使用 O1 / O1 Pro,让“降智”现象不再困扰?

近期&#xff0c;不少朋友在使用 O1 或 O1 Pro 模型时&#xff0c;都会碰到“降智”或“忽高忽低”的智力波动&#xff0c;比如无法识图、无法生成图片、甚至回答准确度也不稳定。面对这些问题&#xff0c;你是不是也感到头疼呢&#xff1f; 为了找到更可靠的解决办法&#xf…

关于物联网的基础知识(二)——物联网体系结构分层

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于物联网的基础知识&#xff08;二&a…

Notepad++上NppFTP插件的安装和使用教程

一、NppFTP插件下载 图示是已经安装好了插件。 在搜索框里面搜NppFTP&#xff0c;一般情况下&#xff0c;自带的下载地址容易下载失败。这里准备了一个下载连接&#xff1a;Release v0.29.10 ashkulz/NppFTP GitHub 这里我下载的是x86版本 下载好后在nodepad的插件里面选择打…

Kali系统(Debian 10.3) 遇到的问题

目录 问题一&#xff1a;非问题 kali 基础官网与安装 问题二&#xff1a; 问题三&#xff1a; Kali系统 MySQL问题Cant connect to local MySQL server through socket /run/mysqld/mysqld.sock (2) 问题四&#xff1a;重新安装MySQL 也就是MariaDB(MariaDB 含 MySQL相关…

蓝桥杯嵌入式速通(1)

1.工程准备 创建一文件夹存放自己的代码&#xff0c;并在mdk中include上文件夹地址 把所有自身代码的头文件都放在headfile头文件中&#xff0c;之后只需要在新的文件中引用headfile即可 headfile中先提前可加入 #include "stdio.h" #include "string.h"…

C# GDI+的DrawString无法绘制Tab键的现象

【啰嗦2句】 现在用C#的人很少了吧&#xff1f;GDI更少了吧&#xff1f;所以这个问题估计也冷门。没关系&#xff0c;分享给特定需要的人也不错。 【问题现象】 工作中开发了一个报告编辑器&#xff0c;实现图文排版等功能&#xff0c;用着没什么问题&#xff0c;直到有一天…

Linux (CentOS) 安装 Docker 和 Docker Compose

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …

计算机网络(六)应用层

6.1、应用层概述 我们在浏览器的地址中输入某个网站的域名后&#xff0c;就可以访问该网站的内容&#xff0c;这个就是万维网WWW应用&#xff0c;其相关的应用层协议为超文本传送协议HTTP 用户在浏览器地址栏中输入的是“见名知意”的域名&#xff0c;而TCP/IP的网际层使用IP地…

高级软件工程-复习

高级软件工程复习 坐标国科大&#xff0c;下面是老师说的考试重点。 Ruby编程语言的一些特征需要了解要能读得懂Ruby程序Git的基本命令操作知道Rails的MVC工作机理需要清楚&#xff0c;Model, Controller, View各司什么职责明白BDD的User Story需要会写&#xff0c;SMART要求能…

【计算机网络】lab3 802.11 (无线网络帧)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;计算机网络_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…

大语言模型训练的数据集从哪里来?

继续上篇文章的内容说说大语言模型预训练的数据集从哪里来以及为什么互联网上的数据已经被耗尽这个说法并不专业&#xff0c;再谈谈大语言模型预训练数据集的优化思路。 1. GPT2使用的数据集是WebText&#xff0c;该数据集大概40GB&#xff0c;由OpenAI创建&#xff0c;主要内…

Unity Burst详解

【简介】 Burst是Unity的编译优化技术&#xff0c;优化了从C#代码编译成Native代码的过程&#xff0c;经过编译优化后代码有更高的运行效率。 在Unity中使用Burst很简单&#xff0c;在方法或类前加上[BurstCompile]特性即可。在构建时编译代码的步骤&#xff0c;Burst编译器会…

【经典神经网络架构解析篇】【1】LeNet网络详解:模型结构解析、优点、实现代码

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…