MATLAB新手簡明使用教程(八)——高級積分運算、二重積分——新手來看,保證看懂

前言:

第本系列第六篇中,我們講解了一下相對來講最普通的不定積分和定積分的問題,相信大家對積分已經有了大概的瞭解了,可是仍有一些小問題,比如如何計算多個變量的積分,比如二重積分、甚至三重三重積分呢?本講中,我將做詳細講解。

本期內容

首先複習一下一元的定積分、然後講解二重積分,如果可能,講解三重積分。

複習定積分(單變量)

在之前,先複習一下之前學習的內容。使用matlab求解定積分的步驟大概如下:

  1. 定義符號變量(syms關鍵字)
  2. 定義內聯函數(inline函數)
  3. 使用matlab內置函數進行計算定積分或者不定積分(使用int函數,具體求解定積分還是不定積分,根據參數的數量決定)

我們都知道:定積分是求解一個圖形與座標軸圍成的面積。而今天我們需要深入理解一下:定積分是求解兩條曲線之間圍成的面積,如果只有一個公式,比如x,我們可以理解成 x-0,y=x 這個函數減去了 y=0這個常數函數,或者說,上面函數與x軸圍成的面積減去了下面函數與x軸圍成的面積(並且這個面積在x軸上方是正的,下方是負的),這樣我們就可以推廣,假設我們現在有兩條曲線,一個是sinx,一個是e^x ,我們求在0-pi的範圍內,兩個圖形圍成的面積,容易知道,兩個圖形大概是這樣圍起來的:

PS: 上圖的代碼和講解如下

%% 目標圖像
clc;clear all;  % 清除原先的東西

x = 0:0.01:pi;  % x的範圍是0-pi,以0.01爲一個小分割點細分出一個範圍
y1 = sin(x);    % sinx
y2 = exp(x);    % e^x

figure;         % 弄一個figure的框體
hold on;        % 保持這個窗體,保證後面的內容都畫在了上面,hold off解除

subplot(221);   % 開闢子窗體,221:共2行2列,裏面的第一個
fill(x,y1,'r'); % 畫圖並填充顏色,變量是x,函數是y1,顏色是r,紅色
title('y=sinx');% 設置標題,必需先fill,才能添加標題,否則會失敗

subplot(222);   % 開闢子窗體,222,共2行2列,裏面第二個
fill(x,y2,'b'); % b 藍色
title('y=e^x');

subplot(223);   % 開闢子窗體,223,共2行2列,裏面第三個
fill([x, fliplr(x)],[y1,fliplr(y2)],'g');
                % 兩個函數直接填充顏色,每一個方括號代表一個函數的內容
title('兩個函數中間的部分');
hold off;

OK,那麼我們就可以很容易的使用int()函數算出這樣一個定積分,代碼如下:

%% 對上面的函數進行計算定積分
syms x;
f = 'exp(x) - sin(x)';
res_int = int(f, x, 0, pi);
disp(res_int);

上面左邊是我手算結果,右邊是matlab計算結果,可見我算的還是很準的哈哈哈哈哈哈哈。

二重積分

上面複習了定積分的計算和一般概念,下面我們看二重積分,先了解下二重積分是什麼吧:

二重積分的一個概念是求體積(還有其他的,比如薄片質量等,在這裏先不談,先說體積的問題),那麼明確概念其實就不難了,定積分求面積、二重積分求體積,那麼這個體積是哪裏的體積呢?

如圖,粉紅色的是z=f(x,y)的函數圖像,下面是地面的陰影部分,紅色的是邊界,這個體積就是粉色的頂部與底面陰影之間的一個曲頂柱體的體積,那這個體積怎麼求呢?

在定積分中,我們把整個面積分成了無數個小面積,計算後累加,同樣的,在二重積分中,我們也採取同樣的方法,我們把這個柱體切成一個一個的小柱體,就像圖中的那個黃色柱體一樣,假設我們把整個底面分成了無數份,每一份的底面積都無限接近於0,假設這個底面積是d\sigma ,那麼這個地方的高就是f(x,y),所以這個小柱體的體積就是 f(x,y)d\sigma ,我們只需要將這些小體積全部加起來,就能得到整個曲頂柱體的體積公式了:

dV = f(x, y)d\sigma => V = \iint f(x,y)d\sigma => V = \int_{a}^{b}dx\int_{\varphi(x1)}^{\varphi(x2)} f(x,y)dy <=> V = \int_{c}^{d}dy\int_{\varphi(y1)}^{\varphi(y2)} f(x,y)dx  

並且我們很容易發現,積分的區間其實就是底面,被積函數是曲面的公式。公式中各個符號在下圖中體現:

現在,計算一個例子給大家看,假設底面如圖所示(灰色陰影部分):

先積分x(Y型)時區域可表示爲:Dx = {(x,y)|0<=y<=1, y<=x<=1}。

先積分y(X型)時區域可表示爲:Dy = {(x,y)|0<=y<=x, 0<=x<=1}。

下面我們以X型爲例,使用matlab計算曲面爲 f(x,y) = xcos(y)的曲頂柱體的體積:

詳細的代碼以及註釋見下方:

%% 計算二重積分
clear all;
f = @(x,y)x.*cos(y); % 定義一個函數句柄,兩個變量分別是x,y
% 這樣定義函數句柄時,需要在所有的運算前加一個.(表示對應元素各自計算,不按照矩陣的規則)
ymax = @(x) x;  % 根據0<=y<=x處,右方的y=x反解出y,
res = integral2(f,0,1,0,ymax);
% 計算二重積分的函數 
% integral2(fun, xmin, xmax, ymin, ymax)
disp(res);

最後,讓我們欣賞一下這個曲面的形狀吧:

代碼如下:

%% 看一看這個曲面吧
[x,y] = meshgrid(0:0.001:1, 0:0.001:1);
% 設置x和y的區間,以及細分程度
z = (x.*cos(y));  % 使用一個z來代表這個函數
mesh(x,y,z)  % 畫出二維曲面圖像
title('x*cos(y)')

那麼,今天就先到這裏吧,三重積分留到下次在講解,謝謝觀看!

今日小結

今天我們學到了如下的知識:

  1. 複習了之前學習的定積分、不定積分的內容
  2. 學習了二重積分的概念,以及應用的大概場景:求曲頂柱體體積,平面薄片質量(底面換位薄片,被積函數即薄片面密度的函數)等。
  3. 學會了如何在一個figure裏面繪製多個圖像
  4. 學會了如何在matlab中繪製圖像、對目標區域填充顏色並命名標題
  5. 學會了怎麼使用matlab的integral2計算二重積分
  6. 學會了怎麼在matlab中聲明(定義)一個函數句柄,或者說創建一個多元函數,以及怎麼反解一個函數中某個變量(y = @(x) x  ,此處函數是y=x),其實說白了,反解函數就是定義函數句柄。
  7. 學會了怎麼在matlab中繪製二維曲面的圖像。

大家下期再見!!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章