Matlab微積分


MATLAB提供了解決微分和積分微積分的各種方法,求解任何程度的微分方程和極限計算。可以輕鬆繪製複雜功能的圖形,並通過求解原始功能以及其衍生來檢查圖形上的最大值,最小值和其他固定點。

本章將介紹微積分問題。在本章中,將討論預演演算法,即計算功能限制和驗證限制屬性。

在下一章微分中,將計表示式的導數,並找到一個圖的區域性最大值和最小值。我們還將討論求解微分方程。

最後,在「整合/整合」一章中,我們將討論積分微積分。

計算極限

MATLAB提供計算極限的limit函式。在其最基本的形式中,limit函式將表示式作為引數,並在獨立變數為零時找到表示式的極限。

例如,要計算函式f(x)=(x^3 + 5)/(x^4 + 7)的極限,因為x趨向於零。

syms x
limit((x^3 + 5)/(x^4 + 7))

執行上面範例程式碼,得到以下結果 -

Trial>> syms x
limit((x^3 + 5)/(x^4 + 7))

ans =

5/7

limit函式落在符號計算域; 需要使用syms函式來告訴MATLAB正在使用的符號變數。還可以計算函式的極限,因為變數趨向於除零之外的某個數位。要計算 -

可使用帶有引數的limit命令。第一個是表示式,第二個是數位 - x表示接近,這裡它是a

例如,要計算函式f(x)=(x-3)/(x-1)的極限,因為x傾向於1

limit((x - 3)/(x-1),1)

執行上面範例程式碼,得到以下結果 -

ans =
 NaN

下面再看另外一個例子,

limit(x^2 + 5, 3)

執行上面範例程式碼,得到以下結果 -

ans =
 14

使用Octave計算極限

以下是Octave版本的上述範例使用symbolic包,嘗試執行並比較結果 -

pkg load symbolic
symbols
x=sym("x");

subs((x^3+5)/(x^4+7),x,0)

執行上面範例程式碼,得到以下結果 -

ans =
0.7142857142857142857

驗證極限的基本屬性

代數極限定理提供了極限的一些基本屬性。這些屬性如下 -

下面來考慮兩個函式 -

f(x) = (3x + 5)/(x - 3)
g(x) = x^2 + 1.

下面計算函式的極限,這兩個函式的x趨向於5,並使用這兩個函式和MATLAB驗證極限的基本屬性。

例子

建立指令碼檔案並在其中鍵入以下程式碼 -

syms x
f = (3*x + 5)/(x-3);
g = x^2 + 1;
l1 = limit(f, 4)
l2 = limit (g, 4)
lAdd = limit(f + g, 4)
lSub = limit(f - g, 4)
lMult = limit(f*g, 4)
lDiv = limit (f/g, 4)

執行上面範例程式碼,得到以下結果 -

l1 =
 17

l2 =
17

lAdd =
 34

lSub =
 0

lMult =
289

lDiv =
1

使用Octave驗證極限的基本屬性

以下是Octave版本的上述範例使用symbolic包,嘗試執行並比較結果 -

pkg load symbolic
symbols

x = sym("x");
f = (3*x + 5)/(x-3);
g = x^2 + 1;

l1=subs(f, x, 4)
l2 = subs (g, x, 4)
lAdd = subs (f+g, x, 4)
lSub = subs (f-g, x, 4)
lMult = subs (f*g, x, 4)
lDiv = subs (f/g, x, 4)

執行上面範例程式碼,得到以下結果 -

l1 =

17.0
l2 =

17.0
lAdd =

34.0
lSub =

0.0
lMult =

289.0
lDiv =

1.0

左右邊界極限

當函式對變數的某個特定值具有不連續性時,該點不存在極限。 換句話說,當x = a時,函式f(x)的極限具有不連續性,當x的值從左側接近x時,x的值不等於x從右側接近的極限值。

對於x <a的值,左極限被定義為x - > a的極限,從左側即x接近a。 對於x> a的值,右極限被定義為x - > a的極限,從右邊,即x接近a。 當左極限和右極限不相等時,極限不存在。

下面來看看一個函式 -

f(x) = (x - 3)/|x - 3|

下面將顯示不存在。MATLAB幫助我們以兩種方式說明事實 -

  • 通過繪製函式圖並顯示不連續性。
  • 通過計算極限並顯示兩者都不同。

通過將字串「left」「right」作為最後一個引數傳遞給limit命令來計算左側和右側的極限。

例子

建立指令碼檔案並在其中鍵入以下程式碼 -

f = (x - 3)/abs(x-3);
ezplot(f,[-1,5])
l = limit(f,x,3,'left')
r = limit(f,x,3,'right')

執行上面範例程式碼,得到以下結果 -

顯示以下輸出結果 -

Trial>> 
Trial>> f = (x - 3)/abs(x-3);
ezplot(f,[-1,5])
l = limit(f,x,3,'left')
r = limit(f,x,3,'right')

l =

-1


r =

1