顯示具有 數學 標籤的文章。 顯示所有文章
顯示具有 數學 標籤的文章。 顯示所有文章

星期二, 11月 20, 2012

鉅亨網的怪怪新聞【億萬富翁神奇公式:1.4萬×(1+20%)40=1.0281億】

鉅亨網有一則神奇的數學公式:
億萬富翁神奇公式:1.4萬×(1+20%)40=1.0281億_新聞_鉅亨網
\begin{align}\Large 1.4萬\times (1+20\%)^{40}=1.028億 \end{align}
但仔細計算以後,也才2057.6萬多而已,1億到底是哪來的?
其實,上面的公式指的是第一年存入1.4萬後,放個40年以後會得到的錢。但這則新聞裡講的是"每年1.4萬",所以上面的公式是錯誤的。要改成這樣才對…
\begin{align}\Large\sum_{n=1}^{39}14000\times(1.2)^n\end{align}
也就是…
\begin{align}\Large 14000\times 1.2^1 + 14000\times 1.2^2 + … + 14000\times 1.2^{39} = 1.028億 \end{align}
我們可以用計算機或數學軟體來計算:

圖為用 Maxima 來計算 \( \sum_{n=1}^{39}14000\times(1.2)^n \)

為什麼新聞會犯這種排版錯誤呢?我想,大概是因為新聞的發佈介面裡,沒辦法輸入數學公式的關係吧。我的這個 Blog 也是因為外掛 MathJax 的關係,才能勉強顯示比較工整的數學公式。

星期三, 1月 19, 2011

Excel 實戰筆記之一,用 MS Excel 整理從網路上copy下來的通訊錄資料

上週末,我以前的同事她在工作上遇到了一些需要處理的資料——這應該是從哪裡的網站上蒐集下來的吧!
2011-01-19_181925
而她要整理成如下面的樣式:
2011-01-19_183504
身為童子軍的我的,當然要日行一善、伸出援手⋯(謎之音:我看你是寒假吃飽太無聊了,在找機會練功吧!)

首先,我們來分析看看這個問題,「應該」會需要作的步驟:
  1. 需要刪掉所有資料間的「-------------------------------------------------------」一串無意義的符號
  2. 刪掉所有多餘的空隔
  3. 刪掉電話號碼前的「TEL:」
  4. 將資料以每三列為一組整理成一列資料表

首先前三個步驟,很容易完成,因為資料來源很單純,所以不需要用的複雜的正規表示法(Regular Expressions),只要用普通的「尋找及取代」就可以了。
刪掉每一行的「-----------------------------------------------------------------」
2011-01-19_182049
刪掉多餘的空格(註:因為中文的文句中,本來就不會出現空格,所以我用很簡單的方法刪掉各個資料頭尾多餘的空格,但不一定試用於英文的文句中,因為英文地址間本來就容許空格,如用此方法則會連句子中應有的空格也被刪除。)
2011-01-19_182143
刪除「TEL:」
2011-01-19_183206
完了嗎?還沒!出來的資料還不夠整齊,我還要刪掉多餘的空行。
首先我在最上面的第一列插如一列空行,等一下我才可以用「自動篩選」找出所有的空行,並刪除所有的空行。
2011-01-19_182551
2011-01-19_182608

在這要用「自動篩選」前,請注意,我們要先選取一整欄的資料欄,否則「自動篩選」只會選到前面的幾列資料。
2011-01-19_182703

在「自動篩選」的下拉式方塊裡,我們只要選擇顯示「空格」就可以了,其它的資料都不要勾選。
2011-01-19_182814
選取藍色列號的資料列,按滑鼠右鍵選取「刪除列」。
2011-01-19_182914
取消「自動篩選」按鈕,我們應該可以看到如下圖的資料:
2011-01-19_183136
但是到這裡我們還沒有完成,我們還沒有把這些資料變成一列一列的資料表。但是,接下來我們應該怎麼作呢?我們先來想想看這些資料有什麼規律:
每三列為一組,第一列是店名、第二列是地址、第三列是聯絡電話。
所以第一筆資料的店名是在A1、第二筆資料的店名是在A4、第三筆資料的店名是在A7⋯
所以第n筆店名資料所在儲存格位置的關係是:
第n筆店所在儲存格=n3-2
我新建立一個工作表,在A欄的位置拉出從1開始的連續數字(這個實例中大約到400多就夠了),而在B欄的第一格(B1)填入
=A1*3-2
並下拉複製填滿B欄(大約到400多列就夠了)
2011-01-19_183906

接下來我們需要在C欄第一列(C1)叫用我們的 Excel 函數 INDIRECT ,它可以參照到傳給它的文字,只要該文字符合一定的樣式
2011-01-19_184158
例如我這裡填入的
=INDIRECT("'1'!A1")
所出來的效果就相當於
='1'!A1
只是用 INDIRECT 我可以賦予它更多的變數。
2011-01-19_184533
例如在我這個個案中,我的 C1 填如的函數是:
=INDIRECT("'1'!A"&B1)
其中的 B1 就是一個變數,當我下拉填滿其它儲存格時,會隨著我每一列的B1、B2、B3⋯⋯資料而改變。而指向它們所代表的數字 1 、 4 、 7 ⋯⋯ 整個函式就相當於變成了 ='1'!A1 、 ='1'!A4 、 ='1'!A7 ⋯⋯ 只是後面的函式不再需要我一個一個去填,只要用 Excel 就可以搞定了。(註:其中的& 符號代表的是字串的連結符號)
2011-01-19_184814
另外後面代表地址的 D1 和代表聯絡電話的 E1 則只要分別在 B1 的後面 +1 和 +2 ,並填滿其它資料列即可:
=INDIRECT("'1'!A"&B1+1)
=INDIRECT("'1'!A"&B1+2)

後記:或許有人會問我為什麼不用程式再加正規表示法(Regular Expressions),首先,因為我不會用 RE ,也不知道那是什麼,能不能用來解決這個問題。再者,我想,這個問題應該沒有困難到要寫程式來解決= =|||

星期五, 12月 18, 2009

用 OpenOffice.org Calc 替代 Excel 求解線性規劃問題

前面曾經提到過使用免費、自由的數學計算軟體 Maxima / wxMaxima 解線性規劃問題
用Maxima計算線性規劃Linear Programming問題
現在,我要用免費的辦公室軟體 OpenOffice.org 來求解線性劃,同前面的範例,我們有一組線性規劃模式:


我們打開 OpenOffice.org Calc 先輸入目標式:
openoffice_linear_Programming_01
線性規劃求解工具,它會自動編更 x,y (B2和C2兩儲存格)裡的值,為了方便,我們可以先在B2和C2兩儲存格裡各先填入數值1。
E3儲存格為目標函數你可以參考上圖裡我的寫法,也可以直接寫成:
=2400*B2+1800*C2
接下來輸入條件式就比較囉嗦一點可參考下面圖解:
openoffice_linear_Programming_02
再叮嚀一次,在這裡,我們的 x,y 已經被代換成 B2 和 C2 了,所以

條件式1的係數
B4儲存格=3*B2
C4儲存格=1.5*C2
條件式2的係數
B5儲存格=1*B2 或 =B2 (因為1乘上任意數還是等於原數值)
C5儲存格=2*C2
下面E4和E5這兩個儲存格,則分別填入完整的條件函式
E4儲存格=B4+C4
E5儲存格=B5+C5


快完成了,我們再來找出 OpenOffice.org Calc 求解線性規劃的工具
openoffice_linear_Programming_03

openoffice_linear_Programming_04
接著我們參照上圖,依序填入。
#這裡比較重要的是,除了「依變更儲存格」以外,我們都只能輸一個儲存格欄位。
完成後,我們按下「解決」。

openoffice_linear_Programming_05
從上圖,我們可以得知,當 x=2 , y=4 時,我們有最大值 12000

重點提示:
求解工具會嘗試組合「依變更儲存格」裡的數值(在這裡,我們是B2和C2儲存格),再因B2和C2儲存格數值的變動,連帶條件式一的 B4、C4、E4 和條件式二的 B5、C5、E5 連帶變動。

常見錯誤:
「目標儲存格」(範例中為E3)忘了填寫函數,使得與「依變更儲存格」沒有連動。
「儲存格參照」(範例中為E4和E5)填寫進去的也不是函數,使得與「依變更儲存格」沒有連動。

星期三, 12月 16, 2009

用Maxima計算線性規劃Linear Programming問題

最近管理數學在教比較像商科學生應該學的線性規劃了,我迫不及待拿開源的 wxMaxima 來計算課本裡的問題,但找了 gui 的介面老半天,卻找不到計算線性規劃的函數。後來在 http://maxima.sourceforge.net/docs/manual/en/maxima_70.html#SEC290 找到了詳細的說明手冊。
我們必需在指令中載入 simplex 這個模組,才能使用求目標函式最大值的 maximize_lp() 和求最小值的 minimize_lp() 這兩個函式。
範例如下:

Maxima 指令如下:
load("simplex")$
maximize_lp(2400*x+1800*y, [3*x+(3/2)*y<=12, x+2*y<=10]) , nonegative_lp=true;


其中第一行的 load("simplex")$ 是指載入 simplex 這個用來計算線性規劃問題的模組。
maximize_lp()是用來計算目標式為最大值的線性規劃問題,其使用的形式如下
maximize_lp(目標式[條件式1, 條件式2, 條件式3,....])
範例中的條件式只有兩個,所以我寫成
[3*x+(3/2)*y<=12, x+2*y<=10]
並以中括弧包起來。
按wxMaxima裡的Evaluate All Cell (執行的意思),應該就會算出下面的解答
[12000,[y=4,x=2]]
意思為,當 x=2,y=4 時,可以滿足目標式最大化的值為12000

星期五, 9月 25, 2009

管理數學隨堂筆記—函數的定義

本週管理數學的暖身題是—判段下列函數的定義域及值域之範圍,並分析哪些f(x)是不存在的:
第一題:

這一題比較簡單,只要畫圖出來就可以看得出其定義域為全部的實數範圍。
我們可以用幾個數字代入x,就可以容易畫出圖形了。
當

x=±0, y=-4
x=±1, y=-3
x=0, y=-4

所以圖形為
math09092501
所以
定義域為全部實數 R
值域則為 [-4,∞)

第二題:

這題的關鍵在於—在一個分數當中,其分母不能為零,因為任意實數除以零是沒有實數解的。在本題中,我們可以得知當 x=±2 的時候,該函數不存在實數,所以沒有定義。
我們先畫出(-1,1)之間的圖形,一樣先代入x找出幾個點的值
當



這一段,為一個開口向下的曲線圖形
最大值在-1/4,兩端逐漸平行於x為±2時的垂線
再來,我們繼續找出大於2或是小於-2的範圍
當



可以知道,當x大於2時,它的數線右端會越來越小,逐漸趨近於零
(當x小於-2時,它的數線左端會越來越小,逐漸趨近於零)
當x大於2時,它的數線左端會越來越大,逐漸趨近於x=2的垂線
(當x小於-2時,它的數線右端會越來越大,逐漸趨近於x=-2的垂線)
math09092502
所以,定義域為除了以外的實數,可以寫作 R-{-2,2}
值域則為 R-(-1,0]
第三題:

這一題我們仍然先嘗試畫出圖形,再判斷其域。
在我們的數學中,虛數是沒有意義的,所以根號內的數不能為負數,也就是必需滿足這個條件,所以定義域,必定是或,亦可以寫作 R-(-2,2)
而值域必定為大於等於零的實數。
(繪圖過程省略)

math09092503
創用 CC 授權條款
瑀的貓、田園與電腦點點滴滴由何崧瑀製作,以創用CC 姓名標示-非商業性-禁止改作 3.0 台灣 授權條款釋出。