前言:
在第本系列第六篇中,我們講解了一下相對來講最普通的不定積分和定積分的問題,相信大家對積分已經有了大概的瞭解了,可是仍有一些小問題,比如如何計算多個變量的積分,比如二重積分、甚至三重三重積分呢?本講中,我將做詳細講解。
本期內容
首先複習一下一元的定積分、然後講解二重積分,如果可能,講解三重積分。
複習定積分(單變量)
在之前,先複習一下之前學習的內容。使用matlab求解定積分的步驟大概如下:
- 定義符號變量(syms關鍵字)
- 定義內聯函數(inline函數)
- 使用matlab內置函數進行計算定積分或者不定積分(使用int函數,具體求解定積分還是不定積分,根據參數的數量決定)
我們都知道:定積分是求解一個圖形與座標軸圍成的面積。而今天我們需要深入理解一下:定積分是求解兩條曲線之間圍成的面積,如果只有一個公式,比如x,我們可以理解成 x-0,y=x 這個函數減去了 y=0這個常數函數,或者說,上面函數與x軸圍成的面積減去了下面函數與x軸圍成的面積(並且這個面積在x軸上方是正的,下方是負的),這樣我們就可以推廣,假設我們現在有兩條曲線,一個是sinx,一個是 ,我們求在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 ,那麼這個地方的高就是f(x,y),所以這個小柱體的體積就是 f(x,y)d ,我們只需要將這些小體積全部加起來,就能得到整個曲頂柱體的體積公式了:
並且我們很容易發現,積分的區間其實就是底面,被積函數是曲面的公式。公式中各個符號在下圖中體現:
現在,計算一個例子給大家看,假設底面如圖所示(灰色陰影部分):
先積分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)')
那麼,今天就先到這裏吧,三重積分留到下次在講解,謝謝觀看!
今日小結
今天我們學到了如下的知識:
- 複習了之前學習的定積分、不定積分的內容
- 學習了二重積分的概念,以及應用的大概場景:求曲頂柱體體積,平面薄片質量(底面換位薄片,被積函數即薄片面密度的函數)等。
- 學會了如何在一個figure裏面繪製多個圖像
- 學會了如何在matlab中繪製圖像、對目標區域填充顏色並命名標題
- 學會了怎麼使用matlab的integral2計算二重積分
- 學會了怎麼在matlab中聲明(定義)一個函數句柄,或者說創建一個多元函數,以及怎麼反解一個函數中某個變量(y = @(x) x ,此處函數是y=x),其實說白了,反解函數就是定義函數句柄。
- 學會了怎麼在matlab中繪製二維曲面的圖像。
大家下期再見!!