Benjamin Chien

「創新」不是等人家告訴你,他需要什麼,而是你自已去發覺他需要什麼! 汽車大王亨利‧福特曾說過:“如果我當年去問顧客他們想要什麼,他們肯定會告訴我‘一匹更快的馬’”

關於我

我的相片
人生沒有什麼大道理!過就對了!

分類

Archives

有些教學最後會有「家庭作業」,你可以做也可以不做,我並不強迫,但是因為筆者,有開放給同學發問問題,也會針對問題下去做教學,但是筆者不喜歡那一種,什麼都不看,就只知道說「我不會,救救我」的人,因此,有沒有繳交作業,就成了日後是否擁有這項權益的標準。

作業的難度,真的不高,只是驗收你學習的成效而已,大部分的解答,會在該教學文章得到解答,如果答案不是在文章,筆者會加註☆號,表示這一題,必須要看過之前的文章,可能才會解。

因為本站是教導Maxima,所以題目就是要你操作Maxima計算,不要手工求解,再掃描給我。

另外,筆者喜歡考申論題,沒錯,數學的題目考申論題,通常就是要你,用文字解釋為什麼要這麼做?這一段代表什麼意思?諸如此類的題目,請同學不要害羞,儘量回答,有時後是送分的,筆者只是想知道同學的看法而已,這可以做為筆者教學的參考,申論題不用寫太多,並且必須用Maxima寫,寫在註解Cell。

作業繳交格式:兩種檔案,Maxima檔案(*.wxm)是必須的,另外同學最好再附上圖片檔(Gif、Jpg…),方便筆者整理,大小要適中,如果解答有多張圖,請自行加上流水號(1,2,3…),有附上圖片檔的同學,有加分。

考卷格式:不用抄題目,但需註明為第幾題,如遇不會作答的題目,也一樣要註明第幾題。

Picture-47

E-Mail:請將解答寄到designforest@yahoo.com.tw,通常大概要等一個禮拜,筆者才會通知成績,請耐心等候

評分標準:各項分數,在題目後都會註明,此外,你真的不用太擔心,分數並不是唯一。

solve是Maxima最基本的求解函數,舉凡求多項次的解,解聯立方程式,都可以使用solve來求解。簡單的東西不用說的太複雜,現在我們就用幾個實例來說明solve的使用時機。

1:解二元一次方程式

本例中,只有一個變數x,使用solve可以不指定第二個參數solve(%,x),但習慣上還是建議加上去,沒必要省這種工夫。

2:解多變數方程式,求x

本例有兩個變數x和y,所以一定要指定第二個參數。

3.解聯立方程式

Solve:

說明:

第一行的看起來好像只有(%i1),事實上第一行包含兩個Input(%i1和%i2),還記得前面說過,每一行的輸入是以; (分號)做為結束嗎,所以(%i1)只到 為止,而下一段的 則是屬於(%i2),所以(%i2)是存在的,同學可以試著輸入%i2,看看結果。

此外,還要再說明一點,每個Input一定會對應一個Output,以%i1來說,它對應的就是%o1,所以你也可以從Output得知有幾個Input。

另外我們再複習一下變數的指定,的意思是說,我們把賦給了f1變數,同學可以輸入f1看看會有什麼結果,而f2也是一樣,這樣做的好處,是方便我們後面使用,畢竟用鍵盤輸入數學式,不是一件很容易的事,如果每次我們要用到就重打一遍,既不方便也不聰明。筆者建議同學們,要養成將算式指定給變數的好習慣。

接著來到%i3,本例是解聯立方程式,所以第一個參數會是一個以上的方程式,要注意是以[](方框號)把方程式括起來,而方程式之間是以「」(逗號)做區隔,而第二個參數,我們要求兩個不同變數的解,也是要用[](方框號)括起來,「」(逗號)做區隔。接著直接看%o3,我們得到

在%i3和%o3之間的一堆 'rat' replaced xxxxxxx,是因為浮點數轉換產生的訊息,不影響計算,但如果想關閉的話,你可以使用ratprint函數(預設是true),將它改為false。如下圖所示:

現在那些訊息不會出現了。

總結:

有關solve()函數,就是這三種用法,當然你可以計算的更複雜,例如計算3個方程的聯立,或是更多,隨你高興。

另外在例3提供一些概念,讀者要注意,反覆思考,這一些對你在往後的Maxima操作都會有所幫助。

作業:

.小明身上恰有23枚硬幣,共180元;其中5元硬幣有x枚,10元硬幣有y枚。

  1. 列出聯立方程式,並將其指定給var1和var2。(30%)
  2. 請想像,原先指定var1和var2變數的Input不見了,我們只知道這兩個變數確實存在,但不知道各自代表什麼,請問在Maxima,你會怎麼做,來知道var1和var2代表的意義?(20%)
  3. 求出5元硬幣有幾枚,10元硬幣又有幾枚?(20%)
  4. ☆請將先前指定的var1和var2變數刪除,並證明刪除成功。(30%)

提到Maxima函數,就令我有點頭痛,所謂的Maxima函數與數學所說的函數是有所不同的,也許有些人會建議特地用兩個不同的名稱來稱之,但筆者認為,其實都叫函數是恰當的,因為本質上是相同的,用不同的名稱來稱之,反而會令同學產生混淆,不過筆者還是儘量(有時會忘記)用「函數(指數學上)」和「Maxima函數(指程式語言)」來區分。

所謂Maxima函數,指的是將一連串Maxima指令(程式),集合成一個可執行特定動作的功能。下圖示範「factor(因式分解)」函數。

以上圖來說,使用factor(exp),可以對方程式進行因式分解,如果該方程式為不可分解,則保持原狀不變。

我不想把函數說的太複雜,簡單來說,就是你可以「簡單」的運用相同多的Maxima函數,來進行各種數學運算和操作,往後還會介紹到許多同學的最愛,微積分函數。

上面我們對二元一次方程式進行了因式分解,從%o2我們可以知道x=5或x=-3,但是有沒有辦法,可以使Maxima直接算出答案來呢?有的!

solve函數是maxima最基本的「求解」函數,使用solve來求解上面的題目,我們可以輕易的得到答案。

使用方式:solve(exp,variable)

說明:

使用solve,需要兩個參數,第一個是欲求解的方程式,第二個是要求出方程式中的哪個變數,很明顯的本題是要求x,以本題來說,因為只有一個變數,所以你也可以省略第二個參數x,但如果有兩個以上的變數,則第二個參數不可省略,如下圖所示:

有關solve函數,後面會再詳細說明。

Maxima函數非常多,很難從中快速找到想要的函數,所幸,Maxima已經幫我們做好了分類,以factor來說,Maxima將其分類成Simplify(簡化),你可以在功能列上找到Simplify,點選它,在選單中都是Maxima分類好為「簡化」類的函數。

而solve函數,則是屬於「Equations(方程式)」。

除了以手打和功能列兩種方式外,另外Maxima還建立了一些快速按鈕,在wxMaixma畫面下方。

然而,Maxima的函數實在是太多了,功能列和快速按鈕的方式雖然方便,但仍無法涵蓋所有函數,因此,正確的Maxima操作方式,還是以手動輸入為正統,其次為功能列,有些函數,我會建議使用功能列,因為在功能列的函數,通常會加上視窗,在輸入上會更人性化,往後有機會,會特別強調,而快速按鈕,只能說是聊備一格,在操作上,請以手動輸入和功能列方式為主。

筆者的教學是以微積分、工程數學為主,所以會有很多你需要用到,可是筆者沒介紹到的函數,這部分,就需要讀者,自行到Maxima的幫助說明(F1)尋找,想要的函數。

Maxima的目錄

Maxima入門
  1. 0.8.X版wxMaxima,安裝方式
  2. 界面介紹
  3. 基本操作
  4. 認識(符號運算軟體),和基本四則運算
  5. 基礎-1-(特殊符號-π-Ω....)
  6. 函數和變數的定義
  7. Maxima函數
  8. solve()-基本求解函數
  9. diff-微分;integrate-積分
  10. limit()極限
  11. plot-函數繪圖基礎
Maxima在微積分的運用
  1. 章節說明(微積分運用)
編寫Maxima函數
  1. 初級(1)-Maxima函數


在MAXIMA我們可以用 「 : 」來定義一個變數,上圖表示我們將 3y 定義給 x, 在%i2 我們直接呼叫x,maxima 跑出 3y,因為我們前面已經定義了 x=3y, 要清除變數我們可以使用 kill():


要清除所有變數,可以輸入 kill(all)。

要查詢設定了哪些變數,可以使用 values:

前面是定義變數,接著我們要定義一個「函數」;


跟定義「變數」不同,使用的是「:= 」。

我們也可以定義一個函數有兩個變數


要清除函數,一樣是使用 kill( )。

變數和函數的名稱,是區分大小寫的,在使用的時後要注意。

在做數學運算的時後,常會用一些數學符號,例如在計算圓的半徑,我們就會用到 π , π  為3.14....這個大家都知道,可是每次都要打一次就太不方便了,maxima就內建了π 的函數,當我們需要用到的時後,只需要輸入 「%pi」,maxima就會知道我們現在要的是「3.14159............」,而且maxima不會出現數值解,而是會出現「符號解」就是「π」這個符號,見下圖操作。

另外要注意一點,MAXIMA是有分大小寫的,預設數字大多是小寫,「%pi」 跟 「%PI」是不一樣的變數,大小寫要注意,建議要自定變數時,儘量以小寫為主,其次以筆者目前用的介面(wxmaxima)為例,預設是沒有開啟「希臘字型」,以上圖為例,如果沒開啟「希臘字型」就會出現下圖的顯示:

wxmaxima還是認的出「 %pi 」,只是顯示是以純文字來顯示,如果覺得這樣不美觀的話,可以去開啟「希臘字型」,開啟的方法:

「Edit」—>「Configure」

完畢後就可以見到「%pi」變成「π」,不過目前筆者「 %e」(指數)一直沒辦法正確顯示「 e 」,不過操作不成問題。

下面列出部分特殊符號對照語法:

一般數學常用的x,y,z,只需要就是輸入x,y,z即可,不用再加%。

此外,再提供一個希臘文字符號表:

使用方式,只需在符號的讀音前加上%,首字母大寫代表大寫的符號,小寫代碼小寫符號,以Ψ為例:

首先我請你想像一下,如果你在電腦輸入 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來學數學,因為這是不可能的,一定要輔以書本上、課堂上的學習,所以我也就認為不需要去說明過於常識的東西。

作業:

  1. 計算,以符號解顯示答案。(10%)
  2. 將題1中的答案,改為數值解,小數點到後3位。(20%)
  3.   (圖1) 。(圖1)是完整的wxm檔,如果現在將(%i2)重新執行一次,答案會是多少? (20%)
  4. 如果將 (圖1) 中的(%i1)重新執行,(%i1)會變成(%i+流水號),請問(%i1)仍然存在嗎?為什麼?用文字簡單說明之。(20%)
  5. 計算 ,答案的單位必須為「度(Degree)」,小數點到後5位。提示:轉換公式 (30%)

Recent Posts

Recent Comments

訪客