楊厚平 王洪蘭
摘要:數(shù)學(xué)是一門(mén)工具化的科學(xué)語(yǔ)言,我們用數(shù)學(xué)解決很多問(wèn)題。然而在學(xué)習(xí)數(shù)學(xué)的同時(shí),有很多空間曲面難以用手工畫(huà)出它們的圖形。例如:有一些多元函數(shù),對(duì)于其圖形卻難以用人工畫(huà)出。而MATLAB的繪圖語(yǔ)言正是解決這種難題的最好工具,方便并且直觀。
關(guān)鍵詞:多元函數(shù) MATLAB語(yǔ)言 繪圖
0 引言
高職數(shù)學(xué)教學(xué)中,講授空間曲面與曲線這個(gè)內(nèi)容時(shí),總感到“虛”,不直觀、具體,利用Matlab強(qiáng)大的繪圖功能,可方便地展示空間曲面與曲線。
1 Matlab繪圖功能
Matlab繪圖功能非常強(qiáng)大,這里只介紹幾個(gè)常用函數(shù)的調(diào)用,拋磚引玉,希望對(duì)空間解析幾何及多元函數(shù)部分的教學(xué)有所幫助。
1.1 產(chǎn)生三維數(shù)據(jù) 在MATLAB中,利用meshgrid函數(shù)產(chǎn)生平面區(qū)域內(nèi)的網(wǎng)格坐標(biāo)矩陣。其格式為:
x=a:d1:b;y=c:d2:d;
[X,Y]=meshgrid(x,y);
語(yǔ)句執(zhí)行后,矩陣X的每一行都是向量x,行數(shù)等于向量y的元素的個(gè)數(shù),矩陣Y的每一列都是向量y,列數(shù)等于向量x的元素的個(gè)數(shù)。
1.2 繪制三維曲面的函數(shù) surf函數(shù)和mesh函數(shù)的調(diào)用格式為:
mesh(x,y,z,c)
surf(x,y,z,c)
一般情況下,x,y,z是維數(shù)相同的矩陣。x,y是網(wǎng)格坐標(biāo)矩陣,z是網(wǎng)格點(diǎn)上的高度矩陣,c用于指定在不同高度下的顏色范圍。此外,還有帶等高線的三維網(wǎng)格曲面函數(shù)meshc和帶底座的三維網(wǎng)格曲面函數(shù)meshz。其用法與mesh類(lèi)似,不同的是meshc還在xy平面上繪制曲面在z軸方向的等高線,meshz還在xy平面上繪制曲面的底座。
1.3 標(biāo)準(zhǔn)三維曲面 sphere函數(shù)的調(diào)用格式為:
[x,y,z]=sphere(n)
cylinder函數(shù)的調(diào)用格式為:
[x,y,z]= cylinder(R,n)
MATLAB還有一個(gè)peaks函數(shù),稱為多峰函數(shù),常用于三維曲面的演示。
2 Matlab繪圖案例
2.1 空間曲面的三維網(wǎng)線圖與三維曲面圖 案例1、函數(shù)z=10-2x2-y2的三維網(wǎng)線圖。
用MATLAB作圖的程序?yàn)?/p>
clear; x=-1:0.1:1;
y=-1:0.1:1; [X,Y]=meshgrid(x,y);
Z=10-2*X.^2-Y.^2; mesh(X,Y,Z);
title('空間曲面')
運(yùn)行結(jié)果(略)。
案例2、函數(shù)z=xy的三維曲面圖。
用MATLAB作圖的程序?yàn)?/p>
clf
ezsurf('x*y','circ'); shading flat;
view([-18,28]) title('空間曲面')
運(yùn)行結(jié)果(略)。
2.2 旋轉(zhuǎn)曲面 案例3、畫(huà)出函數(shù)y=的圖形,其中(x,y)∈[-3,3]×[-3,3]。
用MATLAB作圖的程序?yàn)?/p>
clear; x=-3:0.1:3;
y=-3:0.1:3; [X,Y]=meshgrid(x,y);
Z=sqrt(X.^2+Y.^2); mesh(X,Y,Z);
運(yùn)行結(jié)果(略)。
案例4、曲線r=5+cosx 0≤x≤3π繞x軸旋轉(zhuǎn)而形成的旋轉(zhuǎn)曲面。
用MATLAB作圖的程序?yàn)?/p>
x=0:pi/20:pi*3; r=5+cos(x);
[a,b,c]=cylinder(r,30); mesh(a,b,c)
title('旋轉(zhuǎn)曲面')
運(yùn)行結(jié)果(略)。
案例5:繪制母線方程為y=2+sinx的旋轉(zhuǎn)曲面(空心)
用MATLAB作圖的程序?yàn)?/p>
x=0:pi/10:2*pi;
y=2+sin(x);
[x,y,z]=cylinder(y,30);
mesh(x,y,z)
title('旋轉(zhuǎn)曲面')
運(yùn)行結(jié)果(略)。
2.3 柱面 案例6、繪制柱面x-1+y-2-9=0。
用MATLAB作圖的程序?yàn)?/p>
[x,y,z]=cylinder([3,3],20); x1=x+1;
y1=y+2; z1=z;
surf(x1,y1,z1)
運(yùn)行結(jié)果(略)。
2.4 二次曲面 案例7、二次曲面的函數(shù)如下=d討論參數(shù)a,b,c對(duì)其形狀的影響。
用MATLAB作圖的程序?yàn)?/p>
a=input('a=');b=input('b=');c=input('c=');
d=input('d=');N=input('N=');%輸入?yún)?shù),N為網(wǎng)格線數(shù)目
xgrid=linspace(-abs(a),abs(a),N);%建立x網(wǎng)格坐標(biāo)
ygrid=linspace(-abs(b),abs(b),N);%建立y網(wǎng)格坐標(biāo)
[x,y]=meshgrid(xgrid,ygrid);%確定N×N個(gè)點(diǎn)的x,y網(wǎng)格坐標(biāo)
z=c*sqrt(d-y.*y/b^2-x.*x/a^2);u=1;%u=1,表示z要取正值
z1=real(z);%取z的實(shí)部z1
for k=2:N-1;%以下7行程序的作用是取消z中含虛數(shù)的點(diǎn)
for j=2:N-1;%定義變量
if imag(z(k,j))~=0 z1(k,j)=0;
end
if all(imag(z([k-1:k+1],[j-1:j+1])))~=0 z1(k,j)=NaN;
end
end
end
surf(x,y,z1),hold on %畫(huà)空間曲面
if u==1 z2=-z1;surf (x,y,z2);%u=1時(shí)加畫(huà)負(fù)半面
axis([-abs(a),abs(a),-abs(b),abs(b),-abs(c),abs(c)]);%選擇坐標(biāo)軸的范圍
end
xlabel('x'),ylabel('y'),zlabel('z');%X,Y,Z軸的說(shuō)明
hold off %停止
運(yùn)行結(jié)果(略)。
案例8、橢球面的繪制。
用MATLAB作圖的程序?yàn)?/p>
ellipsoid(1,2,3,5,4,3,20)%橢球面繪制函數(shù)
運(yùn)行結(jié)果(略)。
案例9、繪制雙葉雙曲面。
用MATLAB作圖的程序?yàn)?/p>
a=5;b=4;c=10;
[x,y]=meshgrid(-20:1:20,-20:1:20);
z=sqrt(c*(1+x.^2/a^2+y.^2/b^2));
mesh(z)
hold on
mesh(-z)
運(yùn)行結(jié)果(略)。
2.5 二元函數(shù)的圖象,二元函數(shù)的定義域 案例10、作出函數(shù)z=xy的圖形
用MATLAB作圖的程序同案例2。
運(yùn)行結(jié)果(略)。
2.6 偏導(dǎo)數(shù)的幾何意義 案例11、函數(shù)z=2-2x2-y2在點(diǎn)(0.5,0.5)處的偏導(dǎo)數(shù)的幾何意義。
用MATLAB作圖的程序?yàn)?/p>
clear; x=-1:0.1:1;
y=-1:0.1:1; [X,Y]=meshgrid(x,y);
Z=2-2*X.^2-Y.^2; mesh(X,Y,Z);
運(yùn)行結(jié)果(略)。
圖1、2分別是函數(shù)z=2-2x2-y2在點(diǎn)(0.5,0.5)處對(duì)x、y的偏導(dǎo)數(shù)。
參考文獻(xiàn):
[1]于萬(wàn)波編著.基于MATLAB的計(jì)算機(jī)圖形與動(dòng)畫(huà)技術(shù)[M].清華大學(xué)出版社,2007-6.
[2]趙靜,但琦主編.數(shù)學(xué)建成模與數(shù)學(xué)試驗(yàn)[M].高教出版社,2009-1.
[3]薛定宇,陳陽(yáng)泉著.高等應(yīng)用數(shù)學(xué)問(wèn)題的MATLAB求解[M].清華大學(xué)出版社,2008-3.
基金項(xiàng)目:湖南省高等學(xué)校教育科學(xué)研究項(xiàng)目(12C1081)。