鄭洪清
關(guān)鍵詞: MATLAB 函數(shù) 定積分 高等數(shù)學(xué)
中圖分類號: G642;O13-4 文獻(xiàn)標(biāo)識碼: A 文章編號: 1672-3791(2024)01-0182-04
高等數(shù)學(xué)作為理工類本科生的一門公共基礎(chǔ)課,具有知識點繁多、內(nèi)容抽象和計算復(fù)雜等特點,再加之學(xué)時受限,導(dǎo)致眾多學(xué)生對該門課程學(xué)習(xí)效果較差。因此,在高等數(shù)學(xué)授課過程中,如何展示知識點的應(yīng)用場景、抽象內(nèi)容可視化、復(fù)雜計算簡單化和激發(fā)學(xué)生的學(xué)習(xí)興趣和動手能力是每位教師必須思考的問題。已有多位學(xué)者將MATLAB 軟件輔助高等數(shù)學(xué)教學(xué)的研究[1-4]和提升學(xué)生能力的研究[5-6],這些研究基本上都是調(diào)用MATLAB 軟件的自帶函數(shù)進(jìn)行求解,而對函數(shù)的內(nèi)部實現(xiàn)機(jī)制并未探討,這樣會導(dǎo)致有的學(xué)生對有些概念比如定積分的定義理解不透。尤其對計算機(jī)類專業(yè)學(xué)生來說,如何利用代碼理解定積分的“分割取近似,求和取極限”的這一過程是學(xué)習(xí)的一個難點。本文將探討對計算機(jī)類專業(yè)學(xué)生來說如何使用MATLAB 軟件輔助高等數(shù)學(xué)學(xué)習(xí),主要展示某些知識點在計算機(jī)中的應(yīng)用場景以及如何利用定義自行編寫代碼求解定積分,此舉不僅使學(xué)生體驗了知識點的應(yīng)用場景,還激發(fā)了學(xué)生的學(xué)習(xí)積極性和動手能力,同時也培養(yǎng)了他們利用專業(yè)知識解決數(shù)學(xué)問題,實現(xiàn)學(xué)科的交叉融合,達(dá)成學(xué)以致用之目的。
1 MATLAB 展示函數(shù)的應(yīng)用場景
在高等數(shù)學(xué)的第一章分別介紹了分段函數(shù)、反函數(shù)、復(fù)合函數(shù)和初等函數(shù)等,這些函數(shù)大都在中學(xué)時期都已經(jīng)學(xué)過。傳統(tǒng)的教學(xué)方法通常展示函數(shù)圖像并介紹其性質(zhì),對其應(yīng)用場景涉及甚少,學(xué)生在學(xué)習(xí)過程中感覺枯燥乏味,浮光掠影。而利用MATLAB 軟件教學(xué)則可以呈現(xiàn)知識點的具體應(yīng)用場景,例如:在講解冪函數(shù)y = xa 時,可以通過MATLAB 軟件形象展示其指數(shù)取不同數(shù)值時函數(shù)的圖形,如圖1 所示。
在MATLAB 軟件中編寫如下代碼便可實現(xiàn)上述圖像。
%利用MATLAB 繪制冪函數(shù)圖像
x=0:0.01:1;%聲明變量x,且指定x 的范圍從0 到1,間隔為0.01
r1=[0.04,0.1,0.2,0.4,0.67,1,1.5,2.5,5,10,25];%聲明指數(shù)變量并指定其取值
xx=0.01:0.089:1;
for i=1:length(r1)
plot(x,x.^r1(i));%畫冪函數(shù)圖形
hold on;%連續(xù)繪制
text(xx(i),xx(i).^r1(i),num2str(r1(i)));%標(biāo)注指數(shù)及位置
end
那么該函數(shù)在現(xiàn)實問題中有何具體應(yīng)用呢?為拓展其應(yīng)用范圍和激發(fā)學(xué)生學(xué)習(xí)興趣,將其應(yīng)用于灰度圖像的增強(qiáng)處理。
例1 利用冪函數(shù)應(yīng)用圖像2,注意觀察指數(shù)取不同數(shù)值時圖像效果的變化情況。
從圖2 和圖3 的效果圖可知,指數(shù)取不同數(shù)值時圖像對比度完全不同,當(dāng)指數(shù)為1.1 時圖像效果對比度顯著增強(qiáng);當(dāng)指數(shù)為0.9 時圖像效果對比度明顯變暗。讓學(xué)生直觀感受原來簡單的冪函數(shù)還有灰度圖像增強(qiáng)或減弱作用,大大激發(fā)了學(xué)生學(xué)習(xí)樂趣。對于其他分段函數(shù)和對數(shù)函數(shù)等都可以仿照該方式進(jìn)行教學(xué),體會學(xué)以致用。
在MATLAB 軟件中編寫如下代碼便可實現(xiàn)灰度圖像增強(qiáng)或減弱效果:
img=imread('Fig_einstein_low.tif');%導(dǎo)入圖像
a1=1.1;%指數(shù)值
a2=0.9;%指數(shù)值
[r,c]=size(img);%獲取圖像的行列
img1=double(img);%將圖像數(shù)值轉(zhuǎn)換為雙精度
for i=1:r
for j=1:c
img2(i,j)=img1(i,j).^a1;%計算冪函數(shù)值
img3(i,j)=img1(i,j).^a2;%計算冪函數(shù)值
end
end
subplot(1,2,1);
imshow(uint8(img2));
title('指數(shù)a=1.1 時');
subplot(1,2,2);
imshow(uint8(img3));
title('指數(shù)a=0.9 時');
2 MATLAB 在定積分中的應(yīng)用
2.1 一元函數(shù)定積分
一元函數(shù)定積分的幾何意義是求曲邊梯形的面積,采用“分割取近似,求和取極限”的思想,具體如圖4 所示。高等數(shù)學(xué)中介紹定積分的求解方法一般使用牛頓—萊布尼茨公式,很少利用定義求解,是因為利用定義求解過程繁瑣且容易出錯,但對有些函數(shù)來說,很難找到其原函數(shù),因此,需要借助定積分的定義求其數(shù)值解。雖然可以直接調(diào)用MATLAB 的integral 函數(shù)求定積分,但大部分學(xué)生對利用定義求解定積分的過程并未理解,對integral 函數(shù)求定積分的內(nèi)部實現(xiàn)機(jī)制并不明白。尤其對計算機(jī)類專業(yè)學(xué)生來說,如何用定義實現(xiàn)定積分的求解過程比較重要:一方面可以深入理解定積分的定義及幾何意義;另一方面實現(xiàn)學(xué)科的交叉融合及為后續(xù)課程學(xué)習(xí)夯實基礎(chǔ)。
運(yùn)行結(jié)果得如圖5 所示,所圍成陰影圖形的面積即為定積分的結(jié)果。
解1:利用integral 函數(shù)求解定積分。
在MATLAB 中編寫代碼如下:
fun=@(x)x.^2
ans=integral(fun,0,1)
運(yùn)行結(jié)果ans=0.3333。
解2:利用定積分定義自行編寫代碼。
%在0-1 區(qū)間內(nèi)產(chǎn)生n=100 個隨機(jī)點
x=rand(1,100);
x=sort(x);
x=[0 x 1];
sum=0;
for i=1:length(x)-1
delta_x=x(i+1)-x(i);
sum=sum+(x(i)+delta_x/2).^2*(x(i+1)-x(i));
end
運(yùn)行結(jié)果與上述方法一致。
2.2 二元函數(shù)定積分
二元函數(shù)定積分簡稱二重積分,其幾何意義即是求曲頂柱體的體積,實施過程與一元函數(shù)定積分類似,均是“分割取近似,求和取極限”。下面以二重積分在直解坐標(biāo)系下的計算為例加以闡釋,如圖6 所示。很多學(xué)生空間想象力較弱,不能準(zhǔn)確繪制題目所給的區(qū)域,導(dǎo)致無法順利求解,但如果能借助MATLAB 軟件作圖,則能直觀展示空間圖形從而使問題迎刃而解。
例3 求由4 個平面x = 0x = 1y = 0y = 1 所圍的柱體被平面z = 0及2x + 3y + z = 6截得的立體的體積。
在MATLAB 中編寫如下代碼:
[x,y]=meshgrid(0:0.01:1);
z=6-2*x-3*y;
meshz(x,y,z);%將曲面加上圍裙
xlabel('x');
ylabel('y');
zlabel('z');
運(yùn)行結(jié)果得如圖7 所示。
可見,在MATLAB 軟件中也可輕而易舉地實現(xiàn)立體圖形的繪制,增強(qiáng)了學(xué)生的空間想象力。由于二重積分在計算過程是分兩次一重積分來實現(xiàn)的,但在計算過程中會碰到與一重積分同樣的問題,即原函數(shù)難以求解,故可調(diào)用MATLAB 軟件自帶quad2d 函數(shù)或二重積分的定義自行編寫代碼求解,這樣既理解了定積分定義的過程又訓(xùn)練了交叉學(xué)科的融合。
解1:利用MATLAB 自帶函數(shù)求解代碼。
fun=@(x,y)6-2*x-3*y;
x_min=0;
x_max=1;
y_min=0;
y_max=1;
result=quad2d(fun,x_min,x_max,y_min,y_max)
運(yùn)行結(jié)果ans=3.5000
解2:利用二重定積分定義自行編寫代碼。
x=0:0.01:1;
y=0:0.01:1;
sum=0;
for i=1:length(x)-1
delt_x=x(i+1)-x(i);
dx=x(i)+delt_x/2;
for j=1:length(y)-1
delt_y=y(i+1)-y(i);
dy=y(j)+delt_y/2;
sum=sum+delt_x*delt_y*(6-2*dx-3*dy);
end
end
sum
運(yùn)行結(jié)果與上述方法一致。
上述利用定義自行編寫代碼求解定積分的過程中,未使用求極限這一步驟,僅僅體現(xiàn)幾何圖形分割得越細(xì),計算結(jié)果越精確,它是一種計算定積分?jǐn)?shù)值解的有效方法,對理解定積分的定義及幾何意義均有所幫助。因此,在授課過程中教師應(yīng)使用數(shù)形結(jié)合和動手實踐,讓學(xué)生對所學(xué)內(nèi)容掌握得更扎實。正所謂“耳聽千遍,不如手過一遍”。
3 結(jié)語
本文以計算機(jī)類專業(yè)為例,從函數(shù)應(yīng)用場景、一元函數(shù)定積分以及二元函數(shù)定積分這3 個方面展示了MATLAB 軟件輔助高等數(shù)學(xué)教學(xué),不再停留在傳統(tǒng)的“黑板+粉筆”和多媒體授課方式,而是呈現(xiàn)知識點的具體應(yīng)用場景,利用自行編寫代碼理解定積分的定義,從而激發(fā)學(xué)生的學(xué)習(xí)興趣和動手能力,實現(xiàn)學(xué)科的交叉融合,提高教學(xué)質(zhì)量和效果。