11/06/2006

9.5 函數繪圖指令

以函數為對象之繪圖指令有兩個,即ezplot 與fplot。前者以一般簡單函數進行繪圖;後者以自訂函數為主。茲就此兩種指令加以說明。

9.5.1 EZPLOT指令


以函數為對象這個指令,看起來雖然很 ”Easy” 但要深入應用,也沒有那容易,必須經常使用,才能純熟。

ezplot(f) 是繪製函數 f(x) 之關係,其自變數x則需給予適當範圍。若在指令的參數項中未陳述範圍時[a,b],其預設值為 -2*pi < x < 2*pi,顯然其變數為弧度,故函數性質較接近三角函數。若要自行設定範圍,則可在f之後增加一個列矩陣參數,以表示其區間,如:

ezplot(f, [a,b])


首先以f = sin(x),但不指定範圍。表示其範圍自動設定為-2*pi < x < 2*pi:

ezplot('sin(x)')





圖9.25中之橫座標為x ,並且自動標出。圖的標題則自動標出函數之內容。以下為較複雜的例子,令f=cos(x)+sin(x) ,則:

ezplot('cos(x)+sin(x)', [0, pi])





除三角函數外,其他函數型式亦可使用,以對數為例,其函數設為f(x)=log(x) +x +5,同樣可以不設範圍:


ezplot('log(x)+x + 5')






若自變數為x, y時,亦可使用,若不說明其範圍,則兩者均預設為-2*pi < x < 2*pi,其語法如下:

ezplot(f)

若 f(x,y) = 0 ,其範圍自動設為 -2*pi < x < 2*pi及-2*pi < x < 2*pi

ezplot(f, [xmin,xmax,ymin,ymax])


此為 f(x,y) = 0 之函數範圍x與y分別為 xmin 2*pi < x < xmax及ymin < y <ymax;但此兩範圍若相同,則僅提供[xmin,xmax]即可,如:

ezplot(f, [a,b])

下面之例係設f(x,y)=sin2(x)+cos2(x)-1=0:

ezplot('sin(x).^2 + cos(y).^2-1'); axis equal





此例之結果變成一個直線網絡,但其橫座標與縱座標分別為x與y。為使兩軸之比例相同,在指令後面同時宣告為axis equal。這個指令在繪圓時常需要使用到。

以繪圓為例,則需要利用兩軸之變數x與y,設其範圍為[-2,2 -2,2]。由於兩變數之範圍均相同,故僅取其一即可,即[-2,2]:


ezplot('x.^2 + y.^2 - 4',[-2,2]); axis equal






前面討論之自變數均為x, y,若改變其他名稱MATLAB也有辦法辨別,下面為函數改以 u, v為變數之情形,下述之例子以f(u,v)=u*sin(u)+v*cos(v)-2=0,其結果:


ezplot('u*sin(u)+v*cos(v)-2')



這是一個哭臉的圖像,但其變數則以u,v構成,顯然使用其他變數之名稱亦可達到同樣的功能。

類似上述不同變數之應用,有時可以將函數f=0分為兩個變數,即x(t)與y(t),兩者均以t為自變數。此時,ezplot內前二參數為此二項座標,其後則為其自變數之範圍。最後一項參數fig則是指定圖號。其語法如:

ezplot(x(t),y(t), [tmin,tmax], FIG)

下面之例子為x(t)=sin(3*t)*cost(t); y(t)=sin(3*t)*sin(t),在變數範圍為為[0 pi]之情況下形成三葉片:

ezplot('sin(3*t)*cos(t)','sin(3*t)*sin(t)',[0,pi])




下面之例子為螺線,利用變數t:

ezplot('t*cos(3*t)','t*sin(3*t)',[0,4*pi])



如前所述,函數也有手把,可以供繪圖函數呼叫。所以利用ezplot亦可使用函數手把,如在函數之名稱前加@符號:

f=@(x,y) (x.^3 + y.^5 -7*x.*y +1/7)
ezplot(f,[-3,3])
f =
@(x,y) (x.^3 + y.^5 -7*x.*y +1/7)





所以利用隱函數的表示方式亦可搭配使用。上述塗上顏色是採用fill的指令,讀者可自行嚐試其效果。

利用MATLAB自行提供的函數亦可使用,例如:


ezplot(@humps,[-6 6 -6 50])