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(x?xi?)3?3(x?xi?)2+1)yi?+((x?xi?)3?2(x?xi?)2+(x?xi?))hi?+(?2(x?xi+1?)3+3(x?xi+1?)2)yi+1?+((x?xi+1?)3?(x?xi+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)xi?x(i)?) 的目的是將原始區間 ( [ x i , x i + 1 ] ) ( [x_i, x_{i+1}] ) ([xi?,xi+1?]) 轉換到標準化的區間 ( [0, 1] )。這樣做的好處是:

  • 使得插值多項式的計算不依賴于原始數據的尺度或位置。
  • 使得插值公式在不同區間之間的一致性得以保持,便于構建和計算 Hermite 插值多項式。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65734.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65734.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65734.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Cline(原Claude Dev)開源的IDE AI插件,如何搭配OpenRouter實現cursor功能,Cline怎么使用

Cline&#xff08;原Claude Dev&#xff09;是一個開源的IDE AI插件&#xff0c;可以使用你的命令行界面和編輯器的人工智能助手。 你可以直接在VS Code編輯器進行安裝。如果你使用過Cursor AI IDE的話&#xff0c;可以嘗試最新發布的Cline3.1版本。 在OpenRouter上&#xff0…

計科高可用服務器架構實訓(防火墻、雙機熱備,VRRP、MSTP、DHCP、OSPF)

一、項目介紹 需求分析&#xff1a; &#xff08;1&#xff09;總部和分部要求網絡拓撲簡單&#xff0c;方便維護&#xff0c;網絡有擴展和冗余性&#xff1b; &#xff08;2&#xff09;總部分財務部&#xff0c;人事部&#xff0c;工程部&#xff0c;技術部&#xff0c;提供…

企業級PHP異步RabbitMQ協程版客戶端 2.0 正式發布

概述 workerman/rabbitmq 是一個異步RabbitMQ客戶端&#xff0c;使用AMQP協議。 RabbitMQ是一個基于AMQP&#xff08;高級消息隊列協議&#xff09;實現的開源消息組件&#xff0c;它主要用于在分布式系統中存儲和轉發消息。RabbitMQ由高性能、高可用以及高擴展性出名的Erlan…

AsyncOperation.allowSceneActivation導致異步加載卡死

先看這段代碼&#xff0c;有個詭異的問題&#xff0c;不確定是不是bug public class Test : MonoBehaviour {void Start(){StartCoroutine(LoadScene(Ego.LoadingLevel));}IEnumerator LoadScene(string sceneName){LoadingUI.UpdateProgress(0.9f);yield return new WaitForS…

C#使用MVC框架創建WebApi服務接口

第一步,使用VS2019新建MVC-Web API應用程序 創建BridgeApi 第二步,運行將生成默認的示例網頁,網頁Url為 https://localhost:44361/home/index 右鍵 項目 添加 WebAPI控制器類 添加 我們可以看到App_Start目錄下 有三個文件: BundleConfig.cs代表 捆綁文件的引用 有腳本文件…

wordpress 房產網站篩選功能

自定義分類法創建 add_action( init, ashu_post_type ); function ashu_post_type() {register_taxonomy(province,post,array(label => 省,rewrite => array( slug => province ),hierarchical => true));register_taxonomy(city,post,array(label => 市,rewr…

hive遷移后修復分區慢,怎么辦?

我有1個30TB的分區表&#xff0c;客戶給的帶寬只有600MB&#xff0c;按照150%的耗時來算&#xff0c;大概要遷移17小時。 使用hive自帶的修復分區命令&#xff08;一般修復分區比遷移時間長一點&#xff09;&#xff0c;可能要花24小時。于是打算用前面黃大佬的牛B方案。 Hive增…

慧集通(DataLinkX)iPaaS集成平臺-業務建模之業務對象(一)

通過左側導航菜單〖業務建模〗→〖業務對象〗&#xff0c;進入該界面&#xff1b;在該界面可以查看到系統中已存在的業務對象&#xff1b; 1.新建業務對象 在DatalinkX中進入【業務建模】的【業務對象】頁面&#xff0c;點擊【新建】按鈕進入新建頁面&#xff1b; 新建頁面左側…

Linux系統之hostname相關命令基本使用

Linux系統之hostname相關命令基本使用 一、檢查本地系統版本二、hostname命令的幫助說明中文幫助說明 三、hostname命令的基本使用1. 查看計算機名2. 查看本機上所有IP地址3. 查看主機FQDN4. 查看短主機名 四、hostnamectl命令的使用1. 查看主機詳細信息2. 設置主機名3. hostna…

DC系列靶場滲透--DC-3

目錄 環境搭建 開始滲透 掃存活 掃端口 掃服務 查看80端口 嘗試在80端口中的登陸頁面尋找sql注入失敗 掃目錄 進入/htaccess.txt目錄看一下 我們嘗試找一下Joomla3.7.0版本的漏洞 我們嘗試利用該漏洞 查數據庫名 查表名 查列名 查數據 找到密碼的可能的編碼方式…

js代理模式

允許在不改變原始對象的情況下&#xff0c;通過代理對象來訪問原始對象。代理對象可以在訪問原始對象之前或之后&#xff0c;添加一些額外的邏輯或功能。 科學上網過程 一般情況下,在訪問國外的網站,會顯示無法訪問 因為在dns解析過程,這些ip被禁止解析,所以顯示無法訪問 引…

uniapp 之 uni-forms校驗提示【提交的字段[‘xxx‘]在數據庫中并不存在】解決方案

目錄 場景問題代碼結果問題剖析解決方案 場景 uni-forms官方組件地址 使用uniapp官方提供的組件&#xff0c;某個表單需求&#xff0c;單位性質字段如果是高校&#xff0c;那么工作單位則是高校的下拉選擇格式&#xff0c;單位性質如果是其他的類型&#xff0c;工作單位則是手動…

深度學習知識點:RNN

文章目錄 1.簡單介紹2.網絡結構3.應對梯度消失 1.簡單介紹 循環神經網絡&#xff08;RNN&#xff0c;Recurrent Neural Network&#xff09;是一類用于處理序列數據的神經網絡。與傳統網絡相比&#xff0c;變化不是特別大&#xff0c;不如CNN的變化那么大。 為什么要有循環神經…

(leetcode算法題)287. 尋找重復數(經典題目,二分解法)

如果一個題目限定了數據范圍是[1, n]內的整數&#xff0c;那么這個題目可以思考的就是 nums[i]和 i 的關系&#xff0c;769. 最多能完成排序的塊 這個題就使用到了子數組中最大值和 連續[0, n - 1]的關系 而對于本題來說&#xff0c;也可以思考[1, n] 和 nums[i] 的關系&…

獲得PostgreSQL中級認證后,可以從事哪些工作崗位?

獲得 PostgreSQL 中級認證后&#xff0c;可以獲得的崗位 數據庫管理類 數據庫管理員&#xff08;DBA&#xff09;&#xff1a;負責 PostgreSQL 數據庫的日常維護、監控、備份與恢復、性能優化、安全管理等工作。確保數據庫的穩定運行和數據的安全性、完整性&#xff0c;及時處理…

4.1、二纖單向、二纖雙向、四纖雙向,網絡級保護

1、線性復用段保護&#xff08;LMSP&#xff09; 就像是給網絡業務傳輸準備的一個 “保險”。在 SDH 和 MSTP 網絡里&#xff0c;業務信號要通過一段一段的路&#xff08;復用段&#xff09;來傳輸&#xff0c;LMSP 就是為了保證這些路出問題的時候&#xff0c;業務還能正常走。…

【spark源碼修改】hive3.1.3 spark3.5.4編譯,需要修改源碼,最終編譯成功

【spark源碼修改】hive3.1.3 spark3.5.4編譯,需要修改源碼,最終編譯成功 1. 準備安裝包與maven編譯環境1.1 安裝環境準備1.2 修改pom1.3 打包命令2. 編譯與問題解決2.1 開始編譯 失敗, 缺包pentaho-aggdesigner-algorithm:pom:5.1.5-jhyde2.2 Hive Spark Remote Client 模塊…

SQL-leetcode-584. 尋找用戶推薦人

584. 尋找用戶推薦人 表: Customer -------------------- | Column Name | Type | -------------------- | id | int | | name | varchar | | referee_id | int | -------------------- 在 SQL 中&#xff0c;id 是該表的主鍵列。 該表的每一行表示一個客戶的 id、姓名以及推…

【數據庫】一、數據庫系統概述

文章目錄 一、數據庫系統概述1 基本概念2 現實世界的信息化過程3 數據庫系統內部體系結構4 數據庫系統外部體系結構5 數據管理方式 一、數據庫系統概述 1 基本概念 數據&#xff1a;描述事物的符號記錄 數據庫&#xff08;DB&#xff09;&#xff1a;長期存儲在計算機內的、…

Scala語言的面向對象編程

Scala語言的面向對象編程 面向對象編程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一種編程范式&#xff0c;它使用“對象”來組織代碼&#xff0c;這些對象能夠包含數據&#xff08;屬性&#xff09;以及功能&#xff08;方法&#xff09;。Scala…