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:m
        xi = 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;
            end
        end
        H(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 插值多项式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch:优化的标量量化 - 更好的二进制量化

作者&#xff1a;来自 Elastic Benjamin Trent 在这里&#xff0c;我们解释了 Elasticsearch 中的优化标量量化以及如何使用它来改进更好的二进制量化 (Better Binary Quantization - BBQ)。 我们的全新改进版二进制量化 (Better Binary Quantization - BBQ) 索引现在变得更强大…

【数据库】六、数据库设计

文章目录 六、数据库设计1 数据库设计步骤1.1 规划阶段1.2 需求分析1.3 概念设计阶段(重点)1.4 逻辑设计阶段(重点)1.5 物理设计阶段1.6 数据库的实现1.7 数据库运行与维护 2 概念模型设计2.1 ER模型2.1.1 ER模型的基本元素2.1.2 联系的设计2.1.3 采用ER模型的概念设计2.1.4 ER…

onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制

文章目录 1. 页面跳转方式2. 你的场景分析3. 页面生命周期4. 总结5. 建议 在微信小程序中&#xff0c;页面跳转时&#xff0c; onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制。以下是详细说明&#xff1a; 1. 页面跳转方式 微信小程序提供了多种页面…

51c~Pytorch~合集4

我自己的原文哦~ https://blog.51cto.com/whaosoft/12311033 一、Pytorch~训练-使用 这里介绍了Pytorch中已经训练好的模型如何使用 Pytorch中提供了很多已经在ImageNet数据集上训练好的模型了&#xff0c;可以直接被加载到模型中进行预测任务。预训练模型存放在Pytorch的…

深度学习的原理和应用

一、深度学习的原理 深度学习是机器学习领域的一个重要分支&#xff0c;其原理基于多层神经网络结构和优化算法。以下是深度学习的核心原理&#xff1a; 多层神经网络结构&#xff1a;深度学习模型通常由多层神经元组成&#xff0c;这些神经元通过权重和偏置相互连接。输入数据…

基于人工智能的公司logo设计生成方法

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经深入到我们生活的方方面面。其中&#xff0c;基于AI的公司logo设计生成方法&#xff0c;不仅为品牌形象的塑造提供了新的思路&#xff0c;也为企业带来了前所未有的设计体验。本文将详细探讨这一新兴的、…

BO-CNN-BiLSTM-Multihead-Attention,贝叶斯优化CNN-BiLSTM融合多头注意力机制多变量回归预测

BO-CNN-BiLSTM-Multihead-Attention&#xff0c;贝叶斯优化CNN-BiLSTM融合多头注意力机制多变量回归预测 目录 BO-CNN-BiLSTM-Multihead-Attention&#xff0c;贝叶斯优化CNN-BiLSTM融合多头注意力机制多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Ma…

WPF系列九:图形控件EllipseGeometry

简介 EllipseGeometry用于绘制一个椭圆的形状。它通常与其他图形元素结合使用&#xff0c;比如 Path 或者作为剪切区域来定义其他元素的外形。 定义椭圆&#xff1a;EllipseGeometry 用来定义一个椭圆或者圆的几何形状。参与绘制&#xff1a;可以被用作 Path 元素的数据&…

ue5动画重定向,一键重定向。ue4小白人替换成ue5

这就是我们下载的 初学者动画内容包 点击设置选中列 绿色的是动画 黄色的关卡 蓝色是蓝图 ctrla 全选 ctrl鼠标左键 选中所有动画 重定向动画资产 不要选错&#xff0c;只要绿色 选择目标网格体 选择所有的绿色 动画 导出动画 添加前缀ycn 导出 一定要提前新建好存放的…

服务器漏洞修复解决方案

漏洞1、远程桌面授权服务启用检测【原理扫描】 Windows Remote Desktop Licensing Service is running: Get Server version: 0x60000604 1、解决方案&#xff1a;建议禁用相关服务避免目标被利用 方法一&#xff1a;使用服务管理器 打开“运行”对话框&#xff08;WinR&am…

uniapp 微信小程序内嵌h5实时通信

描述&#xff1a; 小程序webview内嵌的h5需要向小程序实时发送消息&#xff0c;有人说postMessage可以实现&#xff0c;所以试验一下&#xff0c;结果是实现不了实时&#xff0c;只能在特定时机后退、组件销毁、分享时小程序才能接收到信息&#xff08;小程序为了安全等考虑做了…

案例解读 | 香港某多元化综合金融企业基础监控+网管平台建设实践

PART01 项目背景 01客户简介案例客户是一家创立20多年的香港某多元化综合金融企业&#xff0c;其业务范围涵盖证券、期货、资产管理、财富管理等&#xff0c;凭借广泛的业务网络和多元化的金融服务产品&#xff0c;在市场中拥有显著的影响力。02痛点分析随着业务版图的持续拓展…

LabVIEW实现动态水球图的方法

水球图是一种直观展示百分比数据的图表&#xff0c;常用于数据监测与展示。LabVIEW 虽不直接支持水球图绘制&#xff0c;但可通过图片控件动态绘制波形&#xff0c;或借助 HTMLCSS 的 Web 控件实现。此外&#xff0c;还可以结合 Python 等第三方工具生成水球图&#xff0c;LabV…

Simulink中的正弦波模块学习【Sine Wave】

Simulink中的正弦波模块学习 Simulink库中的Sine Wave模块 如下图所示为MATLAB Simulink中的正弦波模块 其元器件库位置为Simulink→Sources→Sine Wave 各项设置参数如下, 点击Help可查看详细信息 正弦波的数学表达式为 y A sin ⁡ ( ω x φ ) k y A \sin(\omega x \va…

maven高级(day15)

Maven 是一款构建和管理 Java 项目的工具 分模块设计与开发 所谓分模块设计&#xff0c;顾名思义指的就是我们在设计一个 Java 项目的时候&#xff0c;将一个 Java 项目拆分成多 个模块进行开发。 分模块设计我们在进行项目设计阶段&#xff0c;就可以将一个大的项目拆分成若干…

Vite源码学习分享(一)

!](https://i-blog.csdnimg.cn/direct/971c35b61c57402b95be91d2b4965d85.png) 同一个项目 vite VS webpack启动速度对比

C#里使用libxl设置EXCEL里公式计算的例子

在EXCEL的使用里,经常使用的是公式功能, 为什么会这样说呢? 因为公式是一种自动化计算工具,并且可以固化人类的智慧,相当于把复杂的计算功能嵌入到固定的数据处理了。比如一个经验丰富的财务人员,可以编制一个复杂公式计算的表格,只要一个不懂财务的人员,输入每个人的…

使用证件照制作软件的常见问题及解决方案

在数字化时代&#xff0c;证件照的制作变得越来越简单。借助各种证件照制作软件&#xff0c;我们可以轻松在家中制作出符合要求的证件照。然而&#xff0c;用户在使用这些软件时&#xff0c;可能会遇到一些常见问题。为了帮助您顺利制作出满意的证件照&#xff0c;我们整理了一…

【LeetCode Hot100 贪心算法】 买卖股票的最佳时机、跳跃游戏、划分字母区间

贪心算法 买卖股票的最佳时机买卖股票的最佳时机II跳跃游戏跳跃游戏II划分字母区间 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的…

LLaMA-Factory web微调大模型并导出大模型

LLaMA-Factory 开源大模型如LLaMA&#xff0c;Qwen&#xff0c;Baichuan等主要都是使用通用数据进行训练而来&#xff0c;其对于不同下游的使用场景和垂直领域的效果有待进一步提升&#xff0c;衍生出了微调训练相关的需求&#xff0c;包含预训练&#xff08;pt&#xff09;&am…