Matlab數值微分與數值積分

1. 數值微分

  • 1.1 數值差分與差商
    任意函數f(x)在x點的導數是通過極限定義的:
    在這裏插入圖片描述
    如果去掉上述等式右端的h→0的極限過程,並引進記號就形成了差分方程,以下分別是在x點處以h(h>0)爲步長的向前差分、向後差分和中心差分。
    在這裏插入圖片描述
    當步長h充分小時,稱△f(x)/h、▽f(x)/h及 δf(x)/h分別爲函數在x點處以h(h>0)爲步長的向前差商、向後差商和中心差商。

  • 1.2 數值微分的實現
    有兩種方式計算任意函數f(x)在給定點x的數值導數:
    用多項式或樣條函數g(x)對f(x)進行逼近(插值或擬合),然後用逼近函數g(x)在點x處的導數作爲f(x)在點x處的導數;
    用f(x)在點x處的某種差商作爲其導數。

    在MATLAB中,沒有直接提供求數值導數的函數,只有計算向前差分的函數diff,其調用格式爲:
    DX=diff(X): 計算向量X的向前差分,DX(i)=X(i+1)-X(i),i=1,2,…,n-1。
    DX=diff(X,n): 計算X的n階向前差分。例如,diff(X,2)=diff(diff(X))。
    DX=diff(A,n,dim): 計算矩陣A的n階差分,dim=1時(默認狀態),按列計算差分;dim=2,按行計算差分。

例: 設x由[0,2π]間均勻分佈的6個點組成,求sinx的1~3階差分。
在這裏插入圖片描述

例:用不同的方法求下列函數f(x)的數值導數,並在同一個座標系中做出f '(x)的圖像。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2. 數值積分

  • 2.1 數值積分基本原理
    現有:
    在這裏插入圖片描述
    在求任意函數f(x)在[a,b]上的定積分時,可以尋找一個在[a,b]上與f(x)逼近,但形式上卻簡單且易於求積分的函數p(x),用p(x)在[a,b]上的積分值近似地代替f(x)在[a,b]上的積分值,一般選擇被積函數的插值多項式充當這樣的替代函數。選擇的插值多項式的次數不同,就形成了不同的數值積分公式。
    對被積函數f(x)採用一、二次多項式插值,然後對插值多項式求積分,就得到了幾個常見的數值積分公式:
    在這裏插入圖片描述

  • 2.2 數值積分的實現

  1. 基於變步長辛普森法,MATLAB給出了quad函數和quadl函數來求定積分。函數的調用格式爲:
    [I,n]=quad(filename,a,b,tol,trace)
    [I,n]=quadl(filename,a,b,tol,trace)

    filename:被積函數名;
    a和b:定積分的下限和上限,
    tol:用來控制積分精度,默認時取tol=10-6;
    trace:控制是否展現積分過程,若取非0則展現積分過程,取0則不展現,默認時取trace=0;
    I:定積分值,
    n:被積函數的調用次數。

    例:就下列函數積分
    在這裏插入圖片描述在這裏插入圖片描述

    例: 分別用quad函數和quadl函數求函數的近似值,並在相同的積分精度下,比較函數的調用次數。
    在這裏插入圖片描述在這裏插入圖片描述

2.自適應積分法

  • MATLAB提供了基於全局自適應積分算法的integral函數來求定積分,函數的調用格式爲:
    I=integral(filename,a,b)
    其中,I是計算得到的積分;filename是被積函數;a和b分別是定積分的下限和上限,積分限可以爲無窮大 。

例:求下列積分函數
在這裏插入圖片描述
在這裏插入圖片描述

3.高斯-克朗羅德法

  • MATLAB提供了基於自適應高斯-克朗羅德法的quadgk函數來求振盪函數的定積分。該函數的調用格式爲
    [I,err]=quadgk(filename,a,b)

    其中,err返回近似誤差範圍,其他參數的含義和用法與quad函數相同。積分上下限可以是−Inf或Inf,也可以是複數。如果積分上下限是複數,則quadgk在複平面上求積分。

求下列積分函數:
在這裏插入圖片描述
在這裏插入圖片描述

4.梯形積分法

  • 在科學實驗和工程應用中,函數關係表達式往往是不知道的,只有實驗測定的一組樣本點和樣本值,這時,人們就無法使用quad等函數計算其定積分。在MATLAB中,對由表格形式定義的函數關係的求定積分問題用梯形積分函數trapz,其調用格式爲:
    I=trapz(X,Y)
    其中,向量X、Y定義函數關係Y = f(X)。X、Y是兩個等長的向量:X = (x1,x2,…,xn),Y = (y1,y2,…,yn),並且x1<x2<…<xn,積分區間是[x1,xn]。

例:求下列積分函數
在這裏插入圖片描述
在這裏插入圖片描述

5.累計梯形積分

  • 在MATLAB中,提供了對數據積分逐步累計的函數cumtrapz。該函數調用格式如下。
    Z=cumtrapz(Y)
    Z=cumtrapz(X,Y)

    對於向量Y,Z是一個與Y等長的向量;對於矩陣Y,Z是一個與Y相同大小的矩陣,累計計算Y每列的積分。函數其他參數的含義和用法與trapz函數的相同。

    例:
    在這裏插入圖片描述

2.3 多重定積分的數值求解

  • 重積分的被積函數是二元函數或三元函數,積分範圍是平面上的一個區域或空間中的一個區域。
    MATLAB提供的integral2、quad2d、dblquad、integral3、triplequad函數用於求函數 的數值解。函數的調用格式爲:
    I=integral2(filename,a,b,c,d)
    I=quad2d(filename,a,b,c,d)
    I=dblquad(filename,a,b,c,d,tol)
    I=integral3(filename,a,b,c,d,e,f)
    I=triplequad(filename,a,b,c,d,e,f,tol)

    例:二重積分:
    在這裏插入圖片描述
    在這裏插入圖片描述

    例題:
    在這裏插入圖片描述
    在這裏插入圖片描述

3. 離散傅里葉變換

  • MATLAB提供了一套計算快速傅里葉變換的函數,它們包括求一維、二維和N維離散傅里葉變換函數fft、fft2fftn,還包括求上述各維離散傅里葉變換的逆變換函數ifft、ifft2ifftn等。
    MATLAB提供了對向量或直接對矩陣進行離散傅里葉變換的函數。
    以一維離散傅里葉變換函數爲例:其調用格式爲:
    在這裏插入圖片描述
    取N=128,對t從0~1s採樣,用fft函數作快速傅里葉變換,繪製相應的振幅—頻率圖。
    在這裏插入圖片描述
    求X的快速傅里葉逆變換:
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章