來解看看, 用 wolframalpha:
結果答案是…. 3.141592653589…..
繼續閱讀:
https://news.tvbs.com.tw/fun/989791
https://gotv.ctitv.com.tw/2017/03/435561.htm
https://www.newmobilelife.com/2016/11/01/the-most-difficult-wifi-password-in-the-world/
來解看看, 用 wolframalpha:
結果答案是…. 3.141592653589…..
繼續閱讀:
https://news.tvbs.com.tw/fun/989791
https://gotv.ctitv.com.tw/2017/03/435561.htm
https://www.newmobilelife.com/2016/11/01/the-most-difficult-wifi-password-in-the-world/
題目: 1999 x 19981998 – 1998 x 19991999
答案是 0
算式:
設 A點座標為 a, B點座標為 b, 則 A, B 的中點座標為 (a+b)/2, 證明之.
這是國中數學一維數線上的問題, 兩點的中點為兩點座標和除以2, 如何證明呢? 其實中點就是到兩點距離相等, 所以證明的方式也就是算出 A 到中點, 與 B 到中點的距離一樣就可以了. (距離算法為兩點座標相減取絕對值)
設 C點座標為 (a+b)/2, 則 AC距離為
abs((a+b)/2 – a) = abs((b-a)/2)
另外 BC距離為
abs((a+b)/2 – b) = abs((a-b)/2)
abs((b-a)/2) = abs((a-b)/2) 所以距離相等, 故 C點為 AB的中點, 得證.
九九乘法是小學生在數學領域上需要學習的一個基本乘法準則, 主要是基於個位數乘個位數的用途, 若行有餘力, 可以再試看看二五乘二五乘法表, 能更加速一般的簡單乘法計算.
寫個小程式整理二五乘二五乘法表: http://sample.diary.tw/25×25/
PS. 原本因為要計算補足位數的函數, 使用了 Math.log10(x) 的方式來進行, 但 IE 不直援 Math.log10(), 所以修改了一下, 將其改為 Math.log(x) / Math.log(10) 即可.
之前有介紹過線上版本的數學解題工具:
現在來介紹一下微軟的工具, 是下載安裝的應用程式, 於2011年出的 Microsoft Mathematics:
http://www.microsoft.com/zh-tw/download/details.aspx?id=15702
該工具可以直接從上面網址下載安裝, 分為 x86, x64 兩個版本, 可以自行選擇適合版本安裝.
以網友問的一個問題為例:
x * y <=3
x – y >=0
若輸入到上面第二個服務 wolframalpha 解題如下:
http://www.wolframalpha.com/input/?i=x*y%3C%3D3%2C+x-y%3E%3D0
可以看到繪製出來的結果如上圖, 接下來使用 Microsoft Mathematics 來進行解題, 產生結果如下:
結果當然是一樣的, 不過在 windows 下的應用程式來解題, 十分方便好用, 大家可以試看看.
這是個古老的數學問題, 當然也有對應的解法. 在解這個數學問題之前, 我們先來看簡單一點的題目, 就是相同餘數的數字.
舉例來說, 某數除以 7 餘 4, 除以 13 也餘 4, 則某餘最小的自然數為何?
計算方式還蠻單純的, 就是 7 和 13 的最小公倍數, 再加上 4 即得, 如下:
lcm(7,13) = 91, 由於兩數互質, 所以最小公倍數就是該兩數的乘積, 故答案則為 91 + 4 = 95
另一個變形的題目, 某數除以 7 餘 5, 除以 13 餘 11, 除以 15 餘 13, 則某數的最小自然數為何?
再看一下題目, 雖然和上面的同餘數不太一樣, 不過有個規律, 就是都差 2 就會整除, 也就是雖然餘數不一樣, 但同樣少了 2, 所以計算方式也很類似, 找出 7, 13, 15 的最小公倍數, 然後減 2就是答案了, 如下:
lcm(7, 13, 15) = 1365, 故答案為 1365 – 2 = 1363
以上兩種都是比較單純的餘數問題, 再來看看這個中國餘數定理的問題:
孫子算經中的: 有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二。問物幾何?
換成數學白話, 某數除以 3餘 2, 除以 5餘 3, 除以 7餘 2, 某數為何?
這個既不是同樣的餘數, 也不是同樣的差某一值可整除, 要如何解呢? 這時會用到一些餘數的式子, 可以先參考這裡: http://www.mikekong.net/Maths/Problems/chinese_remainder02.html
所以只需要先找出 5, 7 的公倍數, 除以 3餘 1的; 再找出 3, 7的公倍數, 除以 5餘 1的; 再找出 3, 5的公倍數, 除以 7餘 1的, 如下:
找出 5, 7 的公倍數, 除以 3餘 1的: 5 x 7 x 2 = 70, 該數除以 3會餘 1
找出 3, 7的公倍數, 除以 5餘 1的: 3 x 7 = 21, 該數除以 5會餘 1
找出 3, 5的公倍數, 除以 7餘 1的: 3 x 5 = 15, 該數除以 7會餘 1
然後利用:
a ≡ b (mod m) 則 ac ≡ bc (mod m) 這個式子(注意反之不然), 得
70 ≡ 1 (mod 3) … (a)
21 ≡ 1 (mod 5) … (b)
15 ≡ 1 (mod 7) … (c)
因為要除以 3餘 2, 所以 (a) x 2:
70 x 2 ≡ 1 x 2 (mod 3) … (d)
因為要除以 5餘 3, 所以 (b) x 3:
21 x 3 ≡ 1 x 3 (mod 5) … (e)
因為要除以 7餘 2, 所以 (c) x 2:
15 x 2 ≡ 1 x 2 (mod 7) … (f)
再利用:
a ≡ b (mod m) 則 a + c ≡ (b + c) (mode m) 這個式子,
並綜合以上 (d), (e), (f) 得該數應為
x ≡ (70 x 2 + 21 x3 + 15 x 2)(mod 105)
所以最小的某數應為 23, (即 70×2 + 21×3 + 15×2 – 105×2 = 23)
相關閱讀:
http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9B%BD%E4%BD%99%E6%95%B0%E5%AE%9A%E7%90%86
http://www.mikekong.net/Maths/Problems/chinese_remainder02.html
http://www.geocities.ws/goodprimes/SCCongruence.html
之前介紹過一款: http://diary.tw/archives/720
這次這個 wolframalpha 更好用, 更有趣, 網址如下:
基本上, 輸入後, 會有美美的求解結果, 很有意思, 而且很實用, 例如以下方程式:
3x+y=4
4x-y=3
輸入 wolframalpha 後得:
http://www.wolframalpha.com/input/?i=3x%2By%3D4%2C+4x-y%3D3
畫面如下:
不僅僅是把解求出來, 還有一步一步的算式, 以及對應的方程式圖, 再來試看看其他的:
3x^3+2x^2-7x+2=0
解答如下: http://www.wolframalpha.com/input/?i=3x^3%2B2x^2-7x%2B2%3D0
真的是太好用了呢!
另外像是語意分析的查詢也很有用:
3 months ago:
http://www.wolframalpha.com/input/?i=3+months+ago
真是一堆應用啊, 其實這就是大名鼎鼎的 siri 後面用的查詢引擎呢, 很強大!
突然想到, 在唸書時有用到一套軟體叫 Mathematica, 就是這家公司 Wolfram 出品的呢: http://www.wolfram.com/mathematica/
這個網站(http://graphr.org/)利用了 html5 的 canvas 特性, 製作了一個方便的函數繪圖功能, 也將一些常用的尋解功能放在上面, 例如二元一次方程式如下:
y=x-1
y=3x-4
把資料輸入後(預設只有一個方程式, 按下[Evaluate]旁的[+]可以再多添加一個方程式), 點 [Evaluate] 後, 會把函數圖繪製出來, 再按下 [Intersect] 鈕, 把滑鼠移到交叉點附近後, 就會出現交點的解, 如下圖:
如此一來便能方便地利用圖示函數應用來解一些方程式. 上圖找出 (x, y)=(1.5, 0.5)為解.
再來看看3次函數的局部最大/最小值, 例如以下三次方程式:
y=x^3-3x^2+2
一樣的方式先輸入後, 按下 [Evaluate] 繪出圖形後, 再利用 [Local Minima/Maxima] 鈕, 找局部最大/最小值, 如下圖:
上圖找出 x=2, y=-2 的局部極小值.
很方便的函數繪圖工具.
還記得高中有學過證明累加的公式算法嗎? 利用數學歸納法來證明公式是否正確的一個方法, 為了再次熟悉以前的數學, 整理一下數學歸納法的方式.
先來看看 wikipedia 上的定義吧: http://zh.wikipedia.org/zh-tw/%E6%95%B0%E5%AD%A6%E5%BD%92%E7%BA%B3%E6%B3%95
利用數學歸納法, 可以證明數學問題的公式, 例如我們要證明平方和這個公式為 n(n+1)(2n+1)/6 於是就利用如下的步驟:
不過用這種不是數學式的寫法看起來不是很舒服, 利用 google docs 的 “公式編輯器” 來寫應該更清楚, 如下:
證明平方和公式為:
1. 當 n = 1 時,
成立
2. 假設 n = m 時, 成立
3. 則當 n = m + 1 時, 4. 利用 n = m+1 的公式展開得:
5. 3和4式結果相同, 故得證.
相信這個證明很清楚地證明了平方和的公式及驗證, 也是數學歸納法的證明方式, 是不是讓久未碰高中數學的各位, 喚起了一些些記憶呢?
寫程式到底需不需要懂數學?
筆者曾在幾年前和網友討論過有關這類問題. 恰巧今天在 Mr. & Ms. Days 那裡看到這篇: 寫程式到底需不需要懂數學? 其實正反兩方應該都可以舉出不少實例及說法來證實這些論點.
寫程式需要好的邏輯及理解能力, 至於是否需不需要懂數學, 並非一定, 但大多數的狀況是有絕的幫助, 數學會增進你的推理邏輯能力, 能有效提昇程式的品質, 但不見得程式寫得好的人數學就好, 這個應該是一個比較普遍的概念.
我之前討論狀況是為了鼓勵網友, 有興趣寫程式, 不需要一定會數學, 但邏輯能力一定要好, 不然很難寫出有條理的 code. 若不是在做數理底層或壓縮或演算法, 其實數學只需要基本概念即可, 畢竟大多數的演算法, 壓縮器等都有現成的 library, 寫一般的程式, 應該都用不太到自己實作這些東西, 反倒是如何應用, 或知道這些用法是比較重要的.
軟體IC在談的就是這個概念, 如何重用, 有效組合, 將程式實作發揮戰力, 這才是最重要的, 但多了解, 多學習, 有好的數學基礎, 好的邏輯基礎, 程式應用的 domain know-how 更能加分.
看到了 Mr. & Ms. Days 其中一張圖很感慨, 因為往往程式專案都會發生這樣類似的狀況, 但如何能更有效解決, 我想這應該需要更高深的技巧及社交能力囉..
不過就是寫程式嘛, 保持學習的心, 高度的興趣, 自然就能做得好..(應該各行業也都是這樣吧. XD)