最近更新: 2005-10-22

Re~ 語言的使用,會訓練並影嚮我們的思考方式。

在《語言的使用,會訓練並影嚮我們的思考方式》一文中,我說只要有人拿什麼函數模型來請我幫他寫出電腦程式,我就會要他先把模型中的所有運算過程 (特別是微積分的) ,全部轉成只有加減乘除及邏輯運算的型式 (連指數、對數都不能用) ,我才能幫他寫程式。幾乎每個人都被這要求打退堂鼓。我數學不好,不了解原因。有任何數學好的人,可以告訴我這要求很難做到嗎?

因為指數(以上...)都是用來描述狀態 而不是單純的數量計算
[回應] Posted by Leaies at 2005年10月20日

是這樣嗎?

邏輯系統是二進位系統,偽與真,0與1。以我對數學的理解,數學家普遍認為偽與真是邏輯原子,所有數學式與數學分子都是由邏輯原子結構而成,也必然可解析回邏輯原子的型式,亦即解析回只用偽與真來表達的型式。

我所要求的,不過是要對方把微積分或含指數、對數等高級數學分子的數學式,解析回基礎的數學分子與邏輯原子的型式。在邏輯系統中,我亦十分堅信所有數學式必能以邏輯原子的型式表達。如果有任何人說他寫的數學式不能解析回去,那我便認為那個數學式是偽的、如小孩子塗鴉一般的圖案,那不能稱為一個數學式。

另一方面,將現象或狀態定質,定質而後定量,定量而後能計算,卻是不少實證主義的社會科學家所堅信的正確科學研究方法。這正對應到將指數、對數等高級數學分子解析回基礎數學分子的過程。我並不信社會科學中實證主義那一套,其中一個理由在於,他們連我上述的要求都做不到。

樂多舊網址: http://blog.roodo.com/rocksaying/archives/625033.html

樂多舊回應
未留名 (#comment-3335898)
Sun, 15 Oct 2006 21:42:29 +0800
我想你應該先示範一下,比方說如何把 log(x) 解析成加減乘除及邏輯運算的形式. 是說要弄成 泰勒展開式那樣嗎?

另一方面,這還是我第一次聽過這種要求... 不知有何特殊用處?
未留名 (#comment-3353824)
Wed, 18 Oct 2006 00:10:12 +0800
我不是說了我數學不好嗎?如何展開 log() ?

我想 bxxl 不清楚計算機原理吧。 Computer 不會算術的,所有算術包括加減乘除,都是運用基本的邏輯操作 (AND, NOT, OR, etc.) 以及位元進位而實現。數學家羅素和維根斯根當年合作發展出來的真值表,就是為了以最基本的邏輯關係,證明加減乘減等算術方法符合邏輯系統。承原文《語言的使用,會訓練並影嚮我們的思考方式》,我說過學過組合語言的人,在處理計算問題時的思考方式不同於數學,我們甚至可以組合語言證明如何不用 Add (加法) 指令計算 1 + 1 = 2 ,這是組合語言的基礎練習。

再者,我也不是故意刁難,而是確有需要。我上述提到我幫一位教授寫過統計模型軟體。當時考慮開發時程,是用 Microsoft VisualBASIC 開發的,在開發過程中,我碰到了兩個限制:其一、開發工具的內建數學函數庫的精確度不足;其二、統計模型的數學方程式遞迴太深,當試驗次數超過一定數值時,會超過開發工具容許的遞迴深度而導致 overflow 的程式錯誤。要解決這兩個限制,只有兩種方法。其一是變更開發工具,使用專業的數學模型工具,例如 Fortran 。另一個就是把數學方程式解析成更基礎的算術操作,自行撰寫更精確而且遞迴深度較淺的計算函數。

再舉一例。當一般人習慣用積分計算圖形面積時,我這 programmer 卻是用迴圈去累計面積,而精確度則視變數型態而定。如果我用整數去累計 (切割的最小單位是 1 ),則我的面積就會是整數的。如果我要更精確的答案,就要用將最小單位切的更小的數值型態。一般人不習慣用如此細緻的描述方式。
未留名 (#comment-14997031)
Wed, 14 Nov 2007 19:46:43 +0800
to bxxl:
就是那樣了,不過不一定是泰勒展開式,還有很多方式是更適合電腦的。
這好像是數值分析的研究範圍。