【數值計算方法(黃明游)】數值積分(一):復化(梯形公式、中點公式)【理論到程序】

?

文章目錄

  • 一、梯形公式、中點公式
    • 1. 梯形公式(Trapezoidal Rule):
    • 2. 復化梯形公式(Composite Trapezoidal Rule):
    • 3. 中點公式(Midpoint Rule):
    • 4. 復化中點公式(Composite Midpoint Rule):
  • 二、例題
  • 三、程序
    • 1. 中點公式
    • 2. 梯形公式

??積分學的基本定理告訴我們,只要能找到 f ( x ) f(x) f(x) 的原函數 F ( x ) F(x) F(x),就可以通過 F ( b ) ? F ( a ) F(b) - F(a) F(b)?F(a) 來求得定積分的值。但實際上,找到 f ( x ) f(x) f(x) 的原函數 F ( x ) F(x) F(x) 并不總是容易的事情。有些函數的原函數可能沒有簡潔的表達式,或者無法通過常見的初等函數表示。
??為了解決這個問題,數值積分方法提供了一種近似計算定積分的途徑。這些方法通過離散化積分區間,使用數值技術來估計積分值。下面將介紹一些常見的數值積分方法:

一、梯形公式、中點公式

1. 梯形公式(Trapezoidal Rule):

??梯形公式是最簡單的數值積分方法之一,它基于使用梯形逼近曲線下的面積,其數學表達式為:

∫ a b f ( x ) d x ≈ b ? a 2 [ f ( a ) + f ( b ) ] \int_a^b f(x) \,dx \approx \frac{b-a}{2} [f(a) + f(b)] ab?f(x)dx2b?a?[f(a)+f(b)]
通過連接函數圖像上的兩個端點,形成一個梯形,然后計算梯形的面積來估計定積分值。

2. 復化梯形公式(Composite Trapezoidal Rule):

??復化梯形公式是對梯形公式的改進,通過將積分區間分割成多個小區間,然后在每個小區間上應用梯形公式,最后將結果相加,其數學表達式為:

∫ a b f ( x ) d x ≈ h 2 [ f ( a ) + 2 f ( x 1 ) + 2 f ( x 2 ) + … + 2 f ( x n ? 1 ) + f ( b ) ] \int_a^b f(x) \,dx \approx \frac{h}{2} [f(a) + 2f(x_1) + 2f(x_2) + \ldots + 2f(x_{n-1}) + f(b)] ab?f(x)dx2h?[f(a)+2f(x1?)+2f(x2?)++2f(xn?1?)+f(b)]

其中, h = ( b ? a ) / n h=(b-a)/n h=(b?a)/n 是每個小區間的寬度。

3. 中點公式(Midpoint Rule):

??中點公式使用區間中點的函數值來逼近曲線下的面積,數學表達式為:

∫ a b f ( x ) d x ≈ f ( a + b 2 ) ( b ? a ) \int_a^b f(x) \,dx \approx f\left(\frac{a+b}{2} \right)(b-a) ab?f(x)dxf(2a+b?)(b?a)

4. 復化中點公式(Composite Midpoint Rule):

??復化中點公式是對中點公式的改進,通過將積分區間分割成多個小區間,然后在每個小區間上應用中點公式,最后將結果相加,數學表達式為:

∫ a b f ( x ) d x ≈ h ∑ i = 0 n ? 1 f ( a + h 2 + i h ) \int_a^b f(x) \,dx \approx h \sum_{i=0}^{n-1} f\left(a + \frac{h}{2} + ih\right) ab?f(x)dxhi=0n?1?f(a+2h?+ih)

其中, h h h 是每個小區間的寬度, n n n 是分割的小區間數量。

二、例題

有一組(x, y)值:
( y = e x y=e^x y=ex)
( 1.1 , 3.0042 ) ( 1.3 , 3.6693 ) ( 1.5 , 4.4817 ) \begin{align*} & (1.1, 3.0042) \\ & (1.3, 3.6693) \\ & (1.5, 4.4817) \end{align*} ?(1.1,3.0042)(1.3,3.6693)(1.5,4.4817)?

  • 使用中點公式: ∫ a b f ( x ) d x ≈ ( b ? a ) ? f ( a + b 2 ) \int_a^b f(x) \,dx \approx (b - a) \cdot f\left(\frac{a + b}{2}\right) ab?f(x)dx(b?a)?f(2a+b?)

    • 這里 a = 1.1 a = 1.1 a=1.1 b = 1.5 b = 1.5 b=1.5,所以中點公式為: ∫ 1.1 1.5 f ( x ) d x ≈ ( 1.5 ? 1.1 ) ? f ( 1.1 + 1.5 2 ) = 0.4 f ( 1.3 ) = 1.46772 \int_{1.1}^{1.5} f(x) \,dx \approx (1.5 - 1.1) \cdot f\left(\frac{1.1 + 1.5}{2}\right)=0.4f(1.3)=1.46772 1.11.5?f(x)dx(1.5?1.1)?f(21.1+1.5?)=0.4f(1.3)=1.46772
  • 使用復化梯形公式: ∫ a b f ( x ) d x ≈ h 2 [ f ( x 0 ) + 2 f ( x 1 ) + 2 f ( x 2 ) + … + 2 f ( x n ? 1 ) + f ( x n ) ] \int_{a}^{b} f(x) \,dx \approx \frac{h}{2} \left[ f(x_0) + 2f(x_1) + 2f(x_2) + \ldots + 2f(x_{n-1}) + f(x_n) \right] ab?f(x)dx2h?[f(x0?)+2f(x1?)+2f(x2?)++2f(xn?1?)+f(xn?)]

    • 這里小區間的寬度 h = 0.2 h=0.2 h=0.2,代入數據點的 y y y 值:
      ∫ 1.1 1.5 f ( x ) d x ≈ 0.2 2 [ 3.0042 + 2 ? 3.6693 + 4.4817 ] = 1.48245 \int_{1.1}^{1.5} f(x) \,dx \approx \frac{0.2}{2} \left[ 3.0042+ 2\cdot 3.6693 + 4.4817 \right]=1.48245 1.11.5?f(x)dx20.2?[3.0042+2?3.6693+4.4817]=1.48245

三、程序

1. 中點公式

def midpoint_rule(data):result = 0for i in range(len(data) - 1):a, fa = data[i]b, fb = data[i + 1]result += (b - a) * fbreturn result

2. 梯形公式

def trapezoidal_rule(data):result = 0for i in range(len(data) - 1):a, fa = data[i]b, fb = data[i + 1]result += (b - a) * (fa + fb) / 2return result

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

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

相關文章

算法通關村第十五關 | 黃金 | 超大規模數據場景

1.對 20GB 文件進行排序 有一個 20GB 的文件,每行一個字符串,對其進行排序。 這里可以使用分塊方式來排序,先將每塊進行排序,然后要逐步進行合并,也叫做外部排序。 2.超大文本中搜索兩個單詞的最短距離 有一個超大…

【UML】NO.2 UML必須了解的基礎知識(舉例)

目錄 一、UML的構成 1.1 事物 1.2 關系 1.3 圖 二、事物 2.1 結構事物 2.1.1 類(class) 2.1.2 接口 2.1.3 協作 2.1.4 用例 2.1.5 主動類 2.1.6 構件 2.1.7 節點 2.2 行為事物 2.2.1 交互 2.2.2 狀態機 2.2.3 活動 2.3 分組事物 包 …

Unittest單元測試框架

Unittest介紹、單元測試用例的組織、測試用例的執行、測試用例的跳過 Unittest介紹 為什么要學習單元測試框架 測試用例的組織與運行需要單元測試框架的參與,從而滿足不同測試場景的需要,單元測試框架提供了豐富的比較方法:實際結果與預期結…

Viewport Meta 標記:讓網頁適應各種設備的魔法符號

在我們用手機或平板電腦瀏覽網頁時,你是否曾發現有些網頁能夠很好地適應屏幕,而有些卻需要左右滑動才能完整顯示內容?這就涉及到一個神奇的東西——Viewport Meta 標記。 最近本人在研究自適應的各自實現方法,比如media媒體查詢、…

6個免費設計素材庫,設計師都在用,趕緊收藏!

設計師應該都知道,在設計過程中找素材真的很費時間,有的時候全網翻遍都未必能找到自己想要的,以至于現在很多設計師都花錢去購買素材,你說要是拿去參賽或者商用還好,就拿平常設計來說你舍得花這個錢去買嗎,…

ubuntu-base 20.04防火墻配置方法

ubuntu-base 20.04防火墻配置方法 在ubuntu-base 20.04 上配置防火墻可以使用 UFW(Uncomplicated Firewall)工具。以下是一些基本的防火墻配置命令: 1. 檢查防火墻狀態: sudo ufw status 2. 啟用防火墻: sudo ufw…

numpy.resize(修改數據維度)

numpy.resize 函數用于調整數組的大小。它接受一個數組和一個新的形狀作為參數,并返回具有新形狀的新數組。如果新數組的大小大于原始數組的大小,resize 將重復原始數組的元素以填充新數組。如果新數組的大小小于原始數組的大小,則 resize 將…

亞馬遜云科技Amazon Bedrock,現推出更多模型選擇和全新強大功能

亞馬遜云科技在re:Invent 2023上宣布推出Amazon Bedrock更多模型選擇和強大功能,幫助客戶更輕松地構建和規模化針對其業務定制的生成式AI應用程序。 Amazon Bedrock是一項全面托管的服務,用戶可輕松訪問來自AI21 Labs、Anthropic、Cohere、Meta、Stabili…

未能正確利用原型繼承(js的問題)

考慮下面代碼: BaseObject function(name) {if (typeof name ! "undefined") {this.name name;} else {this.name default} }; 上面代碼比較簡單,就是提供了一個名字,就使用它,否則返回 default: var firstObj n…

網頁設計的靈感從哪來?試試這15個靈感網站

設計靈感網站是許多設計師必備的工具,因為它們提供了一個創造性的源泉,可以幫助設計師找到靈感和靈感,從而開發出驚人的設計。 推薦15個設計靈感網站,涵蓋了平面設計、網頁設計、UI設計等不同領域的設計。 即時設計資源廣場 即…

shell學習帖子積累

.bashrc與.bash_profile區別_bashprofile和bashrc-CSDN博客 帖子2: $0 - 腳本名 $1 - 命令參數1 $# - 幾個參數 $ - 參數分別是什么 $$ - 當前腳本PID $USER - 用戶 $HOSTNAME - 主機名 $LINENO - 行號 $RANDOM - 隨機數 $? - 返回函數結果 實例: abc.s…

Linux系統vim,gcc,g++工具使用及環境配置,動靜態庫的概念及使用

Linux系統vim,gcc,g工具使用及環境配置,動靜態庫的概念及使用 1. Linux編輯器-vim的使用1.1 vim的基本概念1.2vim的基本操作1.3vim正常模式命令集1.4vim末端模式命令集1.5簡單的vim配置 2.Linux編譯器-gcc/g的使用2.1 準備階段2.2gcc的使用2.…

了解 git rebase

了解 git rebase 大多數人習慣使用 git merge 將更改從功能分支合并到主分支,但還有其他方法。我們是否曾經遇到過 git rebase 這個術語并想知道它是什么?或者我們可能聽說過 rebase 和 merge ,但不確定何時使用哪個?不用擔心&am…

企業架構LB-服務器的負載均衡之Haproxy實現

企業架構LB-服務器的負載均衡之HAProxy實現 學習目標和內容 1、能夠通過HAProxy實現負載均衡 ###1、介紹 Introduction HAProxy, which stands for High Availability Proxy, is a popular opensource software TCP/HTTP LoadBalancer and proxying solution which can be ru…

力扣111. 二叉樹的最小深度

給定一個二叉樹,找出其最小深度。 最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。 說明:葉子節點是指沒有子節點的節點。 示例 1: 輸入:root [3,9,20,null,null,15,7] 輸出:2 示例 2: 輸入…

最大子段和問題

題目&#xff1a; 分治法求解思路&#xff1a; 代碼&#xff1a; #include<iostream> using namespace std;int maxSum(int arr[], int left, int right) {int sum 0;if (left right){if (arr[left] > 0){return arr[left];}else{return 0;}}else{int center (l…

AWS攻略——子網

文章目錄 分配子網給Public子網分配互聯網網關創建互聯網網關附加到VPC 給Public子網創建路由表關聯子網 打通Public子網和互聯網網關 創建Public子網下的EC2進行測試配置Private子網路由給Private子網創建路由表附加在Private子網 創建Private子網下的EC2進行測試創建實例在跳…

Java / Scala - Trie 樹簡介與應用實現

目錄 一.引言 二.Tire 樹簡介 1.樹 Tree 2.二叉搜索樹 Binary Search Tree 3.字典樹 Trie Tree 3.1 基本概念 3.2 額外信息 3.3 結點實現 3.4 查找與存儲 三.Trie 樹應用 1.應用場景 2.Java / Scala 實現 2.1 Pom 依賴 2.2 關鍵詞匹配 四.總結 一.引言 Trie 樹…

c++通訊錄操作系統

實現功能 1、添加聯系人 2、顯示聯系人 3、刪除聯系人 4、查找聯系人 5、修改聯系人 6、清空聯系人 0、退出通訊錄 //-封裝函數顯示該界面 如 void showmenu //-在main函數中調用封裝好的函數 #include<iostream> #include<string> #define max 1000 using n…

如何使用京東商品SKU API獲取商品的保修信息?

一、背景介紹 京東商品SKU API是京東開放平臺提供的一套API接口&#xff0c;用于獲取京東商城的商品SKU信息。保修信息是商品SKU信息中的重要組成部分&#xff0c;通過該API可以獲取到商品的保修政策、保修期限等詳細信息。本文將介紹如何使用京東商品SKU API獲取商品的保修信…