在數學領域中,圖形佔有很重要的地位,很多公式都是由圖形推導出來的。一般公式看起來艱澀難懂,如果能夠轉化成圖形,常能幫助理解,這是我學習數學以來的深刻體會。
maxima提供plot2d(2D繪圖)和plot3d(3D繪圖),兩種繪圖函數,另外,在最近的版本中,還新增了draw繪圖套件(一樣是draw2d和draw3d),不管是plot還是draw,通通都是採用Gnuplot當做繪圖程式,簡單來說,plot和draw是負責maxima和Gnuplot之間的溝通工作,真正負責繪圖的Gnuplot。Gnuplot在自由軟體界非常有名,本身就是可單獨運作的數學繪圖軟體,也有許多需要使用到函數繪圖功能的軟體,選用Gnuplot當做它的繪圖程式。
但是這種兩個不同設計的軟體,彼此間是很難做到很完美的搭配,Gnuplot是相當強大的繪圖程式,但以使用plot等方式,很難完全發揮它的功能,這一點同學要有所了解,plot不是負責繪圖的,它是負責把Maxima的數據轉換成Gnuplot看的懂的數據,然後Gnuplot再將它畫出來。
Gnuplot不用再另外安裝,因為在安裝Maxima的時後,就已經包含了Gnuplot,如果要單獨開啟Gnuplot,請到 (安裝目錄)\Maxima-版本號\bin\ 底下開啟 wgnuplot.exe。不過gnuplot的操作不是我們的重點,現在我們就來看看使用maxima操作gnuplot的方式:
- plot2d (expr, x_range, ..., options, ...)
- plot2d ([expr_1, ..., expr_n], ..., options, ...)
- plot2d ([expr_1, ..., expr_n], x_range,..., options, ...)
plot2d (expr, x_range, ..., options, ...)
提醒一點,如果要回到Maxima繼續你的操作,請記得要將gnuplot視窗關閉,因為maxima會等到gnuplot關閉了才會執行動作,可是問題是,沒有關閉,一樣可以進行輸入,所以筆者常常忘了這一點,在maxima打的很開心,按了Shift + Enter,卻沒反應,這時才想到忘了關gnuplot了。關閉的方法很簡單,有沒有看到右上角的「紅色打叉」按鈕,給它按下去就對了。
說明:
plot2d(sin(x),[x,-5,5],[nticks,100])$
第一個參數是要繪製函數,本例是繪製sin()正弦波形,第二個參數是x軸的顯示寬度,如果覺得x軸太小或太大,無法完整表現圖形的重點,可以視需要更改,要注意的是指定的數值是由小到大,以本例來說,你不可以寫成 [x,5,-5] 。函數的第1個跟第2個參數都是必須的。其它的參數是可選的,例如你也可以設定y軸的高度,如果不設定,則由系統決定適當的值,還有本例中的[nticks,100]:ntics是函數的取樣值,簡單來說,就是控制圖形的精細度,數值愈大,取樣愈多,圖形也就更精細,預設值是30,但是如果設的太多,運算時間也就愈長,這點同學要注意。
plot2d ([expr_1, ..., expr_n], ..., options, ...)
你也可以一次繪製多個函數,函數用[ ](中括弧)括起來,函數之間用, (逗號)區隔開。
maxima會自動為不同的函數配上不同的顏色。
此外,plot還提供許多選項設定,如nticks就是其中之一,不過不是每個選項都是需要在程式中指定。在Gnuplot視窗中左上角的圖案,點選它,出現功能表,如下圖所示:
你可以在「Options」中,設定Background(背景色)、Choose Font(字型)、Line Style(線型),雖然不多,但有需要的話,還是很方便。
另外,使用功能列上的「Plot」也是方便的操作方式,點選「Plot」—>「Plot 2d ...」:
接著跳出Plot 2D 設定視窗:
這種設定方式,讀者應該會比較喜歡吧,在功能列上的大部分指令,都搭配了這種視窗來讓用戶輸入。從這張圖中,同學自已從前面的教學,找出對應的選項出來。
繪圖預設上,都是跳出gnuplot來顯示函數,但也可以選擇,在工作區上顯示,在「Format」:的下拉功能表中,選取「inline」:如下圖所示。
按下「OK」。現在不再跳出gnuplot視窗,而是直接在工作區上顯示圖形,如下圖所示:
另外,在「Options」也有許多選項可供設定,讀者可以自行去測試(後面的作業會考)。
最後是「File」選項,你可以將繪製的函數圖儲存為eps圖片檔,可惜並沒有辦法選擇一般的jpg,gif檔。注意一點,如果你有設定輸入,那麼就不會在工作區上顯示圖形。
總結:
本章介紹的都是2D繪圖的方法,3D部分,筆者要留到後面,有搭配需要3D圖形的函數時,再來介紹。同學目前有需要可以試著參照Help的說明來操作3D。另外,本章沒有討論到draw,是因為它和plot大致上是相同的,差別在於程式書寫的方式不同,同學一樣參照help中的說明,來區分不同之處。
作業:
- 。繪製左圖四個函數圖形,使用inline方式。(40%)
- (☆)求出 在 趨近於無限大時的極限值,再將函數繪製成下圖,圖形顯示需與下圖相近,如果差別很大,同學必須調整,下圖中的x,y座標值,因為跟答案有關,所以我塗掉了,解答中必須出現x,y座標值:(60%)
提示:本題有點困難,首先同學要知道,函數圖形要表達的是什麼。本題函數圖形,要表達的是,當 趨近於無限大時的,函數值會趨近於某個值,用圖形來說明的話,就是說當「青色線(x值)」一直往右跑時(愈來愈大),線段會接近於「紅色線(函數值)」,但不會重合,只會愈來感接近。本題就是希望你表達出這種感覺。
在本題會用到沒教到的plot函數(畫紅色線段用的), [discrete,x,y] ,為了不為難同學,提示再清楚一點,本題中應該是輸入成這樣: [discrete,[x1,x2],[y1,y2]] 。
題目不想弄的太困難,但是同學,如果可以加上更多效果,來突顯要表達的意義(如線段加粗、文字說明...等),會獲得加分。相關函數,自行到help尋找,但是不要偏離要表達的意義。