首先我請你想像一下,如果你在電腦輸入 2/3 ,你覺得會出現什麼答案,我想很多人都會回答
0.66666666666667
正確,可是到底什麼是符號運算呢。
我們在wxmaxima輸入 2/3 看會的到什麼答案:
怎樣,沒想到吧,maxima竟然是回答分數的答案,這還沒什麼,再看一題,2x-x 等於多少:
看到了嗎,我想你現在對所謂符號運算,應該有些概念了,maxima自動將英文字母視為變數或說符號,在上式輸入 2*x-x ,maxima會計算 2 個 x 減掉一個 x 最後剩一個 x , 在數學運算中,有很多時後,我們要的是過程,而不是答案,所以一般的數值運算軟體很難合乎我們的需求,也才會產生符號軟體這種東西。
緊接著我們來練習maxima的基本運算:
可以看到maxima的運算規則跟一般是一樣的,乘除優先於加減,而括號又優先於前兩者。
接著我們再回來看 2/3 ,在預設下maxima每次都會是回答分數形式的答案,我們也可以要求輸出數值答案 :
利用float( )可以得到數值解,在%i2的float(%),括號內的 % 代表上一個執行的結果,要注意不是指上一列,是上一個的執行結果,另外%i3也是求數值解的方法之一,其中 '' 是兩個 ' , ''%i1 代表重新執行 %i1 那一列, numer 表示我們要數值解。
如果你想控制小數點後位數,可以使用bfloat()搭配fpprec:16。
下圖是 2/3 答案顯示為數值解的4種方式:
很明顯的 2/3 是無理數,除不盡的,可是每個軟體都一樣,在求數值解的時後,會在某個範圍,進行截斷,maxima預設是16,也就是面對像 2/3 這種無理數,maxima會算到第14(maxima的16是指連前面的0還有小數點都算一位),就進行截斷並四捨五入,這樣也就造成了精度遺失的問題,這是沒辦法避免的,所以在這裡我建議,在計算過程中,最好保持分數的形式,也就是符號解,到最後再把它轉換成數值解,這樣就可以把精度遺失的問題,減到最低。
接著我們再來討論一些基礎:
每一句語法是以「 ; 」或「 $ 」為結束點,如果想在語法後面加上一些註解,可以鍵入「 /* 」,然後在後面輸入你要註解的文字,MAXIMA執行到「 /* 」後會停止,而不會繼續執行後面的程式,至於「 ; 」和「 $ 」都為結束點,差別在於,使用「 ; 」MAXIMA會在下一列輸出運算結果,而如果是輸入「 $ 」,MAXIMA一樣會運算,但是不輸出結果,WXMAXIMA有個貼心的功能,你在輸入完畢後,可以直接按「Shift + ENTER」,因為WXMAXIMA會自動幫我們補上「 ; 」。
在0.7.x之前的版本,使用「/*」的註解,會有問題,這個問題在新版一樣會出現,目前的解決方法,就是暫時不要使用「/*」來做為註解,而是使用「F6」直接產生註解Cell。
下圖是四則運算的示範:
三角函數也不是問題:
複習一下(%i2)的意思,%符號代表重新執行「上一個執行結果」,不是指上一行喔,假設現在我們又執行了一個算式,依流水號它是(%i3),這時我們再重新執行(%i2),其中的%符號就不是重新執行(%i1)了,並且(%i2)會變成(%i4)。
當然,除了這種方式外,你也可以直接指定編號,以上圖的(%i4)來說,如果我要執行(%i1),可以直接輸入(%i1)或(%o1),在本例中這兩個是一樣的意義。
Maxima角度單位是「弳度(Radian)」,不是我們一般常用的「度(Degree)」。
總結:
四則運算講的有點簡單,但筆者認為,應該沒必要去強調,乘除優先於加減、括號內優先…等等東西,這是屬於數學基礎,正如筆者一再強調的,不要光用Maxima來學數學,因為這是不可能的,一定要輔以書本上、課堂上的學習,所以我也就認為不需要去說明過於常識的東西。
作業:
- 計算,以符號解顯示答案。(10%)
- 將題1中的答案,改為數值解,小數點到後3位。(20%)
- (圖1) 。(圖1)是完整的wxm檔,如果現在將(%i2)重新執行一次,答案會是多少? (20%)
- 如果將 (圖1) 中的(%i1)重新執行,(%i1)會變成(%i+流水號),請問(%i1)仍然存在嗎?為什麼?用文字簡單說明之。(20%)
- 計算 ,答案的單位必須為「度(Degree)」,小數點到後5位。提示:轉換公式 (30%)