教您如何設計解方程式的程式!
曾經有人問我(有人想徵求我同意拿去科展,
或在網頁上提供給他的學生用)
如何設計出解方程式的程式,
而這方程式是由使用者自己任意撰寫,
而非該程式作者內定的,
即使用者可自己指定為二元一次方程式、
三角函數式、分式.....
原始碼因程式語言的關係不便張貼,
是我 20 年前設計的, 在此提供點子指引各位:
1.首先要選對撰寫用的程式語言:
我的建議是選用解譯式語言,
因為既然方程式要能讓使用者撰寫, 一定是外叫,
即您的程式將使用者寫的程式當做副程式
叫進來執行,
而想運算叫進來的副程式就得利用解譯功能,
如早期的 BASIC 語言,
以及我唸大學時教授推薦的 derive,
後者就是內建了陽春式的解譯器及文書編輯器.
2.熟讀微積分, 尤其是數值分析部份:
解方程式對大學生而言最萬能的方法
就是 Honer 及 Newton,
但是初出茅蘆的大一生不知它們
各自的強處及弱點.
對絕大多數的大一生會很討厭數值分析,
因為會算個半死,
但我卻非常佩服 Honer 及 Newton 的眼光,
因為他倆的發明非常適合用電腦去算,
尤其是寫成程式.
Honer 的強處是越算越精確、越接近標準答案,
缺點是計算者眼光要很敏銳, 要選對種子,
若搜索範圍太寬, 可能有個峽谷, 內藏個根,
會被跳過去.
Newton 的強處是懶人喜歡用,
因為它會自己找答案,
缺點是只能用於曲線, 或遇到不可微分處
(如尖角)也算不出,
此外它常常在根附近打轉, 就是不接近精確值.
我的建議是要截長補短, 同時搭配兩法.
3.善用你的資料精度:
其實在電腦時代還有一招萬用解法,
是我自創的, 特別適合超級電腦,
那就是以您的資料精度為單位逐一搜索.
舉個例子, 您寫了個會畫出函數圖的程式,
想由圖中解根,
假設您螢幕的解析度是 1024 x 768,
那麼就設個雙重迴圈,
for(x=0; x<1024; x++) 及 for(y=0; y<768; y++)
然後一點一點去試, 一定找得到解,
差在精度不同而已.
為何說它適合超級電腦呢?
因為您可能是為了算氣象或宇宙現象,
資料龐大又有時間限制,
且有很多方程式目前數學家還不會算.
4.程式設計原理:
很簡單, 把自變量(x)代進副程式求因變量(y),
差異越小表示越接近根了.
--
還在用文字模式勉強表達數學式嗎?
歡迎參觀第四代繪圖模式BBS!
微積分、相對論都難不倒它喔!
下列是提供連線用程式(client)軟體的抓取網址
(2010/01/31後消失):
http://rapidshare.com/files/316447854/BraveClient_1_1_0.rar.html
推
12/06 23:15, , 1F
12/06 23:15, 1F
→
12/06 23:39, , 2F
12/06 23:39, 2F
噓
12/06 23:57, , 3F
12/06 23:57, 3F
噓
12/07 00:03, , 4F
12/07 00:03, 4F
噓
12/07 06:15, , 5F
12/07 06:15, 5F
→
12/07 06:19, , 6F
12/07 06:19, 6F
噓
12/07 10:53, , 7F
12/07 10:53, 7F
→
12/07 20:28, , 8F
12/07 20:28, 8F
→
12/07 20:28, , 9F
12/07 20:28, 9F
→
12/07 20:28, , 10F
12/07 20:28, 10F
推
12/15 07:53, , 11F
12/15 07:53, 11F
→
12/15 07:53, , 12F
12/15 07:53, 12F
→
12/15 07:53, , 13F
12/15 07:53, 13F