跳到主要內容

發表文章

目前顯示的是 2025的文章

圓弧切割正方形

如圖,一個邊長為 $l$ 的正方形,被四個圓弧切割,求 $C$ 的面積。 當然,使用積分可以機械化地求出答案。如下圖,以正方形左下角為原點,紅色弧線的方程式為 $y=\sqrt{l^2 - (x-l)^2}$,交點座標 $s(l - \frac{\sqrt{3}}{2}l,\frac{l}{2})$,$t(\frac{l}{2},\frac{\sqrt{3}}{2}l)$ 如下圖,紅色區塊的面積為 $$ \int_s^t \sqrt{l^2 - (x-l)^2} - \frac{l}{2} dx = l^2(\frac{\pi}{12} + \frac{1}{4} - \frac{\sqrt{3}}{4}) $$ 根據圖形的對稱性, $C$ 的面積為 4 倍紅色區塊的面積 $$ C = l^2(\frac{\pi}{3} + 1 - \sqrt{3}) \approx 0.315l^2 $$ 不到圓的 $\frac{1}{3}$。 能不能不用積分,用國小學生能了解的方法解答? 先看一個類似的、單純一點的問題: 一個邊長為 $l$ 的正方形,被兩個圓弧切割,求 $R$ 的面積。 可以看出 $R$ 是兩個 $\frac{1}{4}$ 圓交集的部分 兩個 $\frac{1}{4}$ 圓交疊,面積總和等於正方形的面積再加上 $R$ 的面積,因此 $R$ 的面積,等於兩個 $\frac{1}{4}$ 圓的面積,減去正方形的面積 $$ R = 2 \cdot \frac{\pi l^2}{4} - l^2 \\ = l^2(\frac{\pi}{2} - 1) \approx 0.57l^2 $$ 比正方形的一半大一些。 回到原本的題目,如果只知道正方形、三角形、圓形(扇形)的面積公式,要怎麼切出 $C$ 呢? 如下圖,兩個 $R$ 的交集就是 $C$ $$ 2R - C + 4B = l^2 \label{a-1} \tag{1} $$ 我們還不知道 $B$ 的面積,需要更多的等式。 如上圖,基於對稱性,左右兩圖藍色區域的面積相同(移動一塊尖角)。定義藍色區域的面積為 $E$,則 $$ E = R + B \label{a-2} \tag{2} $$ 以左圖計算 $E$ $\triangl...
$9^{100}$ 和 $10^{99}$ 哪一個比較大? 因為 log 函數是個遞增函數,也就是說,如果 $0 \lt x \lt y$,則 $\log x \lt \log y$。 我們看兩個函數,$a \gt 1$ $$ f(x) = a^{x+1} \\ g(x) = (a+1)^x $$ 兩個函數取 log $$ \log f(x) = (x+1)\log a = x\log a + \log a\\ \log g(x) = x \log(a+1) $$ 得到兩條直線, $\log f(x)$ 對應的直線,斜率是 $\log a$ $\log g(x)$ 對應的直線,斜率是 $\log(a+1)$ 斜率較大的直線函數,隨著 $x$ 愈大,一定會在某個點超越斜率較小的直線函數,分道揚鑣之後一去不回頭。 因此 $$ 10^x $$ 會在 $x$ 大於某個值之後,比 $$ 9^{x+1} $$ 大。 這個值透過等式 $$ x\log 9 + \log 9 = x\log 10 $$ 可得 $$ x = \dfrac{\log 9}{\log 10 - \log 9} \approx 20.85 $$ 因此,$9^{21}\gt 10^{20}$,$9^{22}\lt 10^{21}$,$9^{23}\lt 10^{22}$、、、, 原本的問題,$9^{100}\lt 10^{99}$。 事實上,由於斜率的絕對性影響,$9^{x+b}$,不論 $b$ 多大,終究會被 $10^x$ 超越。 例如,連 $9^{103}$ 都還比 $10^{99}$ 小。 底比別人大一點,只要時間夠久,晚一點起步還是會贏。 $$ \lim_{x\rightarrow\infty} ((a+1)^x - a^{x+b}) = \infty\hskip2em a\gt0,b\gt0 $$ 再看一個特殊的情況。 $x^{x+1}$ 和 $(x+1)^x$,何者較大? 解以下的等式 $$ x^{x+1} = (x+1)^x $$ 整理可得 $$ x = (1 + \dfrac{1}{x})^x $$ 視為求兩個函數圖形的交點 $$ \begin{eqnarray} \left\...

換不換有差嗎

有個著名的問題,Monty Hall Problem。Monty Hall 是一位電視節目(Let's Make a Deal)主持人。節目中有個遊戲,三道門的其中一道,門後是一輛車,其他兩道門,門後是一隻羊。遊戲參賽者要猜哪一道門後是車,猜中即可獲得一輛車作為獎品。若猜中的門後是羊,則沒有任何獎品。 🚗 🐐 🐐 參賽者先選一道門,接著主持人打開另一道門,後面是一隻羊,然後問參賽者要不要換。參賽者可以維持原本的選擇,或選另一道門。 令人驚訝的是,選另一道門會大大提高抽中車的機會。 我們先用電腦模擬一下(javascript): function runSimulation() { const numRuns = parseInt(document.getElementById('numRuns').value, 10); let C1 = 0; // count keeping choice and winning the car let C2 = 0; // count switching choice and winning the car for (let i = 0; i 模擬次數: 開始模擬 讓車子、羊的位置固定,隨機抽一個位置。抽中的位置可能是車子,可能是羊。如果抽中車子,不換才能中車子;如果抽中羊,主持人會打開另一道有羊的門,換了一定中車子。這是抽中車子唯二的方式,且兩者互斥。 等一下!這個模擬好像不太對?讓車子固定在第一個位置,和真實的情況不同。 把車子的位置也隨機換一下: function runSimulation() { const numRuns = parseInt(document.getElementById('numRuns').value, 10); let C1 = 0; // count keeping choice and winning the car le...

越不可能的證據越有效

貝氏定理(Bayes' theorem)是一個用途很廣的規則。Google 一下關鍵字,會發現有非常多相關的資料。 定理長這個樣子: $$ P(A|B) = \dfrac{P(B|A)P(A)}{P(B)} $$ 其中 $P(\cdot)$ 表示機率,其值在 0 到 1 之間。$A$、$B$ 表示隨機事件,可以想成某一件事,某一種狀態,且事件之間沒有特定的相依關係。 $P(A|B)$ 稱為條件機率,顧名思義,它是帶有條件的機率定義,代表事件 $B$ 成立的前提下,$A$ 事件成立的機率: $$ P(A|B) = \dfrac{P(A\cap B)}{P(B)} $$ 貝氏定理是集合論導出的結果,意義上的重點是,在事件 B 成立的前提下,事件 A 的機率可以藉由「若事件 A 發生,事件 B 發生的機率」來算出。你買樂透中頭獎的機率,可以從中頭獎的話,你買樂透的機率算出?這兩種機率感覺一樣低啊!當然,這不是一個好的例子,因為買樂透和中樂透有相依性,不買一定不會中!一個比較好的例子是,果農採收了蘋果、番茄、芭樂各若干顆,閉著眼睛從裡面拿一顆,「如果是紅的,則它是蘋果的機率」,可以從「如果是蘋果,它是紅色的機率」來算出,是不是好算多了? $P(A)$ 和 $P(A|B)$ 的大小沒有絕對的關係。其實,$P(A) = P(A|B\cup \overline B)$。 $P(A\cap B)\le P(A)$ 沒錯,因為條件越嚴格,符合條件的情況越少。但 $P(B)$ 可大可小。 例如,$A$ 表示路上經過你眼前白色的車子,$B$ 表示路上經過你眼前的休旅車。假設 $P(A) = 0.3$ $P(B) = 0.4$ $P(A\cap B) = 0.2$ 則 $$ P(A|B) = \dfrac{0.2}{0.4} = 0.5 $$ 也就是說,路上經過你眼前白色的車子的機率是 0.3。 而路上經過你眼前的是休旅車的話,白色的機率是 0.5。也就是說,只看休旅車,平均兩台就有一台是白的。 把貝氏定理寫成這樣 $$ P(A|B) = P(A)\dfrac{P(B|A)}{P(B)} $$ 假設有某個隨機事件 $H$ 表示某個猜測,隨機事件 $E_1, E_2, \cdots$ 表示某種與 $H$ 相關的證據,根據貝氏定理 ...

等號不等

看一個計算過程: $$ x -1 = x + 2 \\ \Rightarrow (x-1)^2 = (x+2)^2 \\ \Rightarrow x^2 - 2x +1 = x^2 + 4x + 4 \\ \Rightarrow -6x = 3 \\ \Rightarrow x = -\dfrac{1}{2} $$ 每一步似乎都合理。但是,將答案代回原本的等式 $$ -\dfrac{1}{2} - 1 = -\dfrac{3}{2} \neq -\dfrac{1}{2} + 2 = \dfrac{3}{2} $$ 並不成立,答案是錯的。 事實上,原式是無解的 $$ x -1 = x + 2 \\ \Rightarrow -1 = 2 \text{ (不成立)} $$ 不論 $x$ 是什麼數,原式都是錯的。 為什麼第一種算法能算出 $x = -\dfrac{1}{2}$ ?因為「等號兩邊同時平方」改變了原本等式 $$ p = q $$ 兩邊平方 $$ p^2 = q^2 $$ 等號依然成立,但同時增加了另一種可能 $$ p = -q $$ 因為 $$ p^2 = (-q)^2 = q^2 $$ 所以 $p^2 = q^2$ 包含了兩種情況 $$ \begin{eqnarray} \left\{ \begin{array}{l} p = q \\ \text{or} \\ p = -q \end{array} \right. \end{eqnarray} $$ 對照原本的問題,經過等式兩邊平方,擴大了原本的等式,變成 $$ \begin{eqnarray} \left\{ \begin{array}{l} x-1 = x+2 \\ \text{or} \\ x-1 = -(x+2) \end{array} \right. \end{eqnarray} $$ 其中,擴大而來的第二種情況 $x-1 = -(x+2)$,對應了 $x = -\dfrac{1}{2}$,並非原本的等式。 對等式兩邊進行相同的運算,可...

What do you mean

如何用一個數字代表一群數字? 一個方法是,從中挑選一個。挑選的依據可以是 隨機挑選 最小值 中間值 最大值 第 $k$ 個值 出現次數最少的值 出現次數最多的值 出現次數為 $k$ 的值 不連續的值 最接近某個數的值 ... 或者透過某種運算得到,例如 算術平均數:$AM(x_i) = \dfrac{x_1+x_2+\cdots+x_n}{n}$ 幾何平均數:$GM(x_i) = (x_1\cdot x_2 \cdots x_n)^\frac{1}{n}$ 調和平均數:$HM(x_i) = n\cdot\dfrac{1}{\dfrac{1}{x_1}+\dfrac{1}{x_2}+\cdots + \dfrac{1}{x_n}}$ 平均數在某些條件下保留了群體的性質。 算術平均數可以反推群體的總和: $$ AM(x_i) \cdot n = x_1+x_2+\cdots+x_n $$ 幾何平均數可以反推群體的總乘積: $$ GM(x_i)^n = x_1\cdot x_2 \cdots x_n $$ 調和平均數可以反推群體的倒數總和: $$ \dfrac{n}{HM(x_i)} = \dfrac{1}{x_1}+\dfrac{1}{x_2}+\cdots + \dfrac{1}{x_n} $$ 算術平均數在日常生活中經常被使用。一群人用餐,分擔餐費時,若希望每人付一樣的金額,可用算術平均數算出金額。最棒的是,餐廳可以拿到正確的總額。 幾何平均數比較不常用。 一個長、寬、高分別為 8cm,25cm,5cm 的蛋糕,若希望用相同份量的材料,製作正方體形狀的蛋糕,正方體的邊長是幾何平均數 $$ \sqrt[3]{8 \times 25 \times 5} = 10 $$ 為 10cm。 投資股票,第一年、第二年、第三年的報酬率分別是 5%,12%, 7%,則平均報酬率是個幾何平均數 $$ \sqrt[3]{1.05 \times 1.12 \times 1.07} \approx 1.08 $$ 約 8%。最棒的是,平均報酬率可以算出歷年累積的總報酬率。 $$ 1.08^3 = 1.05 \times 1.12 \tim...

剩者為王

問題: A、B 兩隊各有 3 人,照順序一對一比腕力,A 隊 1 號和 B 隊 1 號比,如果 A 隊 1 號贏了,就繼續和 B 隊 2 號比,輸了,就換 A 隊 2 號和 B 隊 1 號比。一定有輸贏,沒有平手。如此進行,直到其中一隊所有隊員都輸了為止。問:總共有多少種比賽結果? 分析: 先找幾個例子,看 B 隊輸的結果有哪些。 一個最簡單的情況,A 隊 1 號 (簡稱 $A_1$,以此類推)一路過關斬將,打敗所有 B 隊成員。若列出敗者,就表示一種結果: $$ B_1 B_2 B_3 $$ 接著考慮 A 隊只有 $A_1$ 比輸的情況下,B 隊輸。$A_1$ 可能在第 1 場輸,第 2 場輸,或第 3 場輸,分別對應以下的敗者序列: $$ A_1 B_1 B_2 B_3 \\ B_1 A_1 B_2 B_3 \\ B_1 B_2 A_1 B_3 $$ 可看出是把 $A_1$ 插進 $B_1 B_2 B_3$ 之中 $$ \Box B_1 \Box B_2 \Box B_3 $$ 共有 3 種選擇。 仿照以上方式,再來考慮 A 隊只有 $A_1$,$A_2$ 比輸的情況下,B 隊輸。如前述,$A_1$ 可能在第 1 場輸,第 2 場輸,或第 3 場輸,每一種情況皆對應多種 $A_2$ 輸的順序: $$ \begin{matrix} A_1 A_2 B_1 B_2 B_3 \\ A_1 B_1 A_2 B_2 B_3 \\ A_1 B_1 B_2 A_2 B_3 \\ \hline B_1 A_1 A_2 B_2 B_3 \\ B_1 A_1 B_2 A_2 B_3 \\ \hline B_1 B_2 A_1 A_2 B_3 \end{matrix} $$ 共有 $3+2+1 = 6$ 種。 不可能發生 $A_1$、$A_2$、$A_3$ 都比輸而 B 隊輸的情況。因此 B 隊的輸法共有 $1 + 3 + 6 = 10$ 種。 由於 A 隊、B 隊人數一樣,基於對稱性,A 隊的輸法一樣是 10 種。不是 A 隊輸,就是 B 隊輸,所以比賽的結果共有 20 種。 另一種想法。 一種「輸法」,剛好有一個「兩隊所有隊員的排列」對應。例如,以下 B 隊的輸法 ...

為什麼要學數學

我們從小到大,學語文,學數學。學了語文,可以溝通。學了白話文,還要學文言文。學了中文,還要學英文、日文、、、等等外語,還有各式各樣的程式語言。為什麼要學這麼多種語文?因為溝通的系統不只一種,且由不同人或個體,在不同場景使用。使用相似系統,才能有效溝通。溝通是什麼?在最基本的層次,溝通是物質或能量的傳遞,在更高的層次,溝通可以是任何有形或無形的傳遞。一般語文的使用場景,多半是感官所及之處的直接或間接對應:看到的、聽到的、聞到的、想到的、感覺到的,與外界進行物質或能量的傳遞。數學呢?數學能做什麼?算術可以讓我們買東西的時候,知道把整個購物車帶出去要花多少錢,知道收銀員找給你的錢對不對;和朋友聚餐,知道一個人要分擔多少錢。生活中似乎這些數學就夠用了,為什麼還要學幾何、代數、微積分?其實,數學也是一種語文,學數學一樣是為了溝通,溝通的是世界萬物的法則。數學的使用場景和一般的語文有些不同,是抽象的法則。這些法則當然是人直接或間接想出來的,有些來自感官的發現,有些來自憑空的想像,而法則之間必須維持毫無妥協的一致性,這種一致性,一般的說法就是邏輯,也就是所謂的真與假。法則之間存在堅不可摧的邏輯。算術的法則如加、減、乘、除,是非常明確的,1+1永遠等於2,$\dfrac{1}{2}$ 永遠等於 $\dfrac{3}{6}$,0 永遠不等於 1。在邏輯的基礎上,數學的法則與世界萬物的運作極度相似,拿 1 個橘子,再拿 1 個橘子,就得到 2 個橘子;1 個披薩平分給 2 個人,每個人分到的量,和 3 個披薩平分給 6 個人,每個人分到的量一樣多。在某種程度上,數學的法則可以用來模擬萬物的運作,能夠模擬,就能夠預測。這種預測的能力,解決了某些問題,為人們帶來安全感。為了預測更多、更準確,更快,就需要更合適的法則。學數學的目的,在於得到預測萬物運作的能力。 有人會說,我不想預測,不想知道那麼多,所以我不想學數學!這是完全沒有問題的,人算不如天算,感受萬物的運作並做出回應,是很自然的生活方式。然而,預測的能力帶來權力,有權力就有影響力。總會有些人渴望影響力。權力的來源很多,財富也能帶來權力。不同的權力帶來不同的影響力。因此,如果你渴望預測能力帶來的影響力,又不想學數學,透過財富,可以讓渴望財富的人幫你學數學,幫你間接得到預測的能力。 很多人認為數學很難,其實這是一個相對性...

靠近,不只一種方法

$\dfrac{1}{3}$ 可以表示為無窮循環小數 $0.333\cdots$,我們再熟悉不過。 這是十進位的表示方法,也就是 $$ \dfrac{1}{3} = 3 \cdot \dfrac{1}{10} + 3 \cdot \dfrac{1}{10}^2 + \cdots + 3 \cdot \dfrac{1}{10}^k + \cdots $$ 一個 $\dfrac{1}{10}^k$ 的項,對應一個小數的位置,前面的數字 $(3,3,\cdots)$ 拉出來成為小數的數字。 3 3 3 $\cdots$ $\dfrac{1}{10}$ $\dfrac{1}{10}^2$ $\dfrac{1}{10}^3$ $\cdots$ 等號右邊是一個無窮等比級數,利用等比級數公式 $$ 3 \cdot \dfrac{1}{10} + 3 \cdot \dfrac{1}{10}^2 + \cdots + 3 \cdot \dfrac{1}{10}^k = 3\cdot\dfrac{1}{10}\cdot\dfrac{1-\dfrac{1}{10}^k}{1-\dfrac{1}{10}} $$ 當 $k$ 越大,$\dfrac{1}{10}^k$ 越接近 0, $3\cdot\dfrac{1}{10}\cdot\dfrac{1-\dfrac{1}{10}^k}{1-\dfrac{1}{10}}$ 越接近 $3\cdot\dfrac{1}{10}\cdot\dfrac{1}{1-\dfrac{1}{10}} = \dfrac{3}{10}\cdot\dfrac{10}{9} = \dfrac{1}{3}$ 結果一致。 有另一種方法,可以把 $\dfrac{1}{3}$ 表示成形如 $a_k \cdot 5^k$ 的級數,也就是 $$ \dfrac{1}{3} = a_0 + a_1\cdot 5 + a_2\cdot 5^2 + \cdots + a_k \cdot 5^k + \cdots \\ 0 \le a_k \lt 5 $$ 怎麼可能?等號右邊的項一個比一個大,一路加下去肯定不會靠近任何數啊!也就是說,這是一個發散的級數。 ...

用加法開根號

有一種快速開根號的方法,例如 $ \sqrt{81} $ 等於兩個數字相加 $ 8+1=9 $ 。 太簡單了!老師怎麼沒教?試試看其他數字, $ \sqrt{36} = 6 $,不等於 $3+6=9$ ! 原來 $\sqrt{81} = 8 + 1 = 9$ 只是一個特例。 還有多少特例?寫個程式來試試(python): for a in range(10): for b in range(10): if (10*a+b == (a+b)*(a+b)): print(a,b) 0-99 只有三個數符合:00,01,81。 100-9999 也只有三個數符合: for a in range(100): for b in range(100): if (100*a+b == (a+b)*(a+b)): print(a,b) $$ \begin{array}{r|c} n & \sqrt{n} \\ \hline 2025 & 45=20+25 \\ 3025 & 55=30+25 \\ 9801 & 99=98+01 \end{array} $$ 可以證明這樣的數有無限多個:例如,形如 $\underline{99...98}\hphantom{-}\underline{00...01}$ 的數字都能用加法算根號,如 $$ \begin{array}{ccc} \sqrt{81} & = & 8+1 = 9\\ \sqrt{9801} & = & 98+01 = 99\\ \sqrt{998001} & = & 998 + 001 = 999\\ \sqrt{99980001} & = & 9998 + 0001 = 9999 \\ \cdots \end{array} $$ 因為 $\sqrt{10^n\underline{(10^n-2)}+\underline{1}} = \sqrt{10^{2n}-2(10^n)+1} = ...

祖孫關係

問題: 奶奶的年齡和孫子的年齡剛好顛倒(例如:奶奶 81 歲,孫子 18 歲),在兩人的一生中,最多可能出現幾次年齡顛倒? 先假設兩人最多活到 99 歲,對於人類來說,算是合理的假設。如此,兩人的年齡可以用一個兩位數的十進位數字表示 假設奶奶的年齡的十進位表示為 $ab$,$0\le a,b \le 9$,孫子的年齡則為 $ba$。 這樣的表示之下,奶奶的年齡為 $10a+b$ 歲,孫子的年齡為 $10b+a$ 歲 若兩人的年齡差為 $c$ 歲,則 $$ 10a + b - (10b + a) = c \\ \Rightarrow 9a - 9b = c \\ \Rightarrow 9(a-b) = c $$ 得到一個重要的結果:兩人年齡的差距必須是 9 的倍數! 如前面的例子,奶奶 81 歲,孫子 18 歲,兩人相差 81 - 18 = 63 歲。 可以猜測,符合這樣條件的組合,不會太多。整理成表格: $$ \begin{array}{c|c|l} c & a - b & [a,b] \\ \hline 0 & 0 & \text{兩人同年齡,不合理} \\ 9 & 1 & \text{兩人只差 9 歲,不合理} \\ 18 & 2 & \text{兩人只差 18 歲,不合理} \\ 27 & 3 & \text{兩人相差 27 歲,有點勉強} \\ 36 & 4 & [4,0],[5,1],[6,2],[7,3],[8,4],[9,5] \\ 45 & 5 & [5,0],[6,1],[7,2],[8,3],[9,4] \\ 54 & 6 & [6,0],[7,1],[8,2],[9,3] \\ 63 & 7 & [7,0],[8,1],[9,2] \\ 72 & 8 & [8,0],[9,1] \\ 81 & 9 & [9,0] \end{array} $$ 可知兩人的年齡差距越小,一生中年齡互為顛倒的次數越多,似乎符合常理。 在設定的條件下,當兩人的年齡差 36 歲時(例如,奶奶 ...

遺漏的條件

一個國中數學問題:等腰梯形 $ABCD$,$\overline{AB} = \overline{CD} = 3$,$\overline{BC} = 4$,$\overline{AC}$ 與 $\overline{BD}$ 垂直,求 $ABCD$ 面積。 先利用幾何的方法。因為 $\overline{AC}$ 與 $\overline{BD}$ 垂直,且 $ABCD$ 是等腰梯形,因此 $\triangle BEC$,$\triangle AED$ 都是等腰直角三角形,根據畢氏定理,可得 $\overline{BE} = \overline{EC} = \frac{4}{\sqrt{2}}$。 因為 $\triangle{ABE}$ 是直角三角形,根據畢氏定理,可得 $\overline{AE} = 1$,以及 $\overline{AD} = \sqrt{2}$。過 $E$ 做一直線分別交 $\overline{AD}$、 $\overline{BC}$ 於 $F$、$G$,且垂直 $\overline{AD}$、$\overline{BC}$ 可知 $\triangle AFE$,$\triangle BGE$ 都是直角三角形,且 $\overline{FG}$ 垂直平分 $\overline{AD}$、$\overline{BC}$。根據畢氏定理,可求得 $\overline{FE} = \frac{1}{\sqrt{2}}$,$\overline{EG} = 2$ 至此,等腰梯形 $ABCD$ 的上底 $\overline{AD} = \sqrt{2}$,以及高 $\overline{FG} = 2+\frac{1}{\sqrt{2}}$ 皆已求出,帶入梯形面積公式,可得面積為 $\big(\sqrt{2} + 4\big)\big(2+\frac{1}{\sqrt{2}}\big)\times\frac{1}{2} = \frac{9}{2} + 2\sqrt{2}$。不是很複雜的推導。 另一種求解的方法更簡單。因為梯形 $ABCD = \triangle ABC + \triangle ADC$, $\triangle ABC$ 中,$\overline{AC} \perp \overline{BE}$,$\triangle ADC...

殊途同歸

$0.999\cdots$ 和 1 是相等的嗎! 看起來似乎不太像呀! $0.999\cdots$ 可以分解成 $$ 0.9 \\ 0.09 \\ 0.009 \\ \cdots $$ 的總和。一項一項加起來,與 1 的差距越來越小 $$ \begin{array}{c|l|l} 項數 & 部分和 & 與 1 的差距 \\ \hline 1 & 0.9 & 0.1 \\ 2 & 0.99 & 0.01 \\ 3 & 0.999 & 0.001 \\ \cdots & \cdots & \cdots \\ \end{array} $$ 數學上的說法是,對於一個實數的數列(或級數,級數的部分和可以視為數列)而言,如果數列可以任意接近一個數 $a$,那數列的極限值就是 $a$。 「可以任意接近」是什麼意思?就是「要多接近就可以多接近」。接近就行,不必相等。例如,$0.999\cdots$ 可以和 1 差距小於 $0.000\cdots\text{(1萬個 0)}1$ 嗎? 可以,第一萬零一項就可以符合條件。 因此 $0.999\cdots = 1$ 。 如果用畫圖的方式,這個數列 $$ \begin{array}{c|l|l} 項數 & 部分和 \\ \hline 1 & 0.9 \\ 2 & 0.99 \\ 3 & 0.999 \\ \cdots & \cdots \\ \end{array} $$ 第一項 0.9,就是把一段長度為 1 的線段,分成 10 等分,取其中的 9 等分 第二項 0.99,第一項加上 0.09,就是把剩下的 0.1 分成 10 等分,取其中的 9 等分,加上 如此重複下去,箭號越來越靠近 1。 把 $0.999\cdots$ 定義為 1 的合理性,可以透過其他方式驗證。 $$ 1 \div 9 = 0.111\cdots $$ 我們預期 $$ 0.111\cdots \times 9 = 0.999\cdots $$ 另一方面 $$ 1 \div 9...

三角網格壓縮

三角形是平面上最簡單的多邊形。三角形有許多「好性質」,例如,任何三角形在空間中,三個頂點一定共平面;三角形一定是凸多邊形(多邊形上任取兩個點的連線,若線上的所有點都在此多邊形內,稱為凸多邊形);任何兩個頂點的連線一定不會交叉,等等。因此三角形常做為電腦繪圖的基本元件。 多個三角形可以組成三角網格: 有一種三角網格的變換,把兩個相鄰的頂點合併,如下圖左,$v_1$ 合併至 $v_2$,變成下圖右,$\overline{v_1 v_2}$ 兩邊的兩個三角形消失: 一個方形三角網格可以透過一連串的頂點合併,在整體外型不變的前提下,化簡成兩個三角形: 合併的順序端視規則,例如,應用在地形模塑,每個網格的頂點都對應一個高度資訊,頂點合併的順序可以是,頂點合併後,三角形上的高度誤差最小的頂點先合併。頂點合併前後的誤差,舉例如下圖: 將合併的結果反過來看,原始的三角網格變成一個簡化的三角網格,加上一連串頂點合併的反運算,即頂點分裂: $$ M = M_0 + vsplit(v_{i_1}, v_{i_2}) + vsplit(v_{i_2}, v_{i_3}) + \cdots $$ 如此,$M_0 + \sum_{k=1}^n vsplit_k$ 可視為 $M$ 的一種壓縮格式,隨著 $M_0$ 加上越多的 $vsplit_k$ 而越接近 $M$ 。 並非所有任意的頂點合併都是合法的。例如,一般希望頂點合併後,三角形不會發生重疊。下圖是一個頂點合併後發生三角形重疊的例子: 如何知道是否發生三角形重疊?一種方法是把三角形放在一個三維空間,計算三角形的法向量(normal vector)在頂點合併後是否改變方向: 法向量 $\vec{n}$ 的計算,可透過外積: $$ \vec{n} = \overrightarrow{v_av_b} \times \overrightarrow{v_av_c} $$ 若三角形放在 $x-y$ 平面 ($z=0$),則 $\vec{n}$ 可表示為一個數字 $$ \vec{n} = [0, 0, n] \\ n = (v_{b_x} - v_{a_x})(v_{c_y} - v_{a_y}) - (v_{b_y} - v_{a_y})(v_{c_x} - v_{a_x}) $$ 另一種...

羊狼過河

問題: 人、狼、羊、白菜要從河的此岸藉由一艘船渡河至另一岸,其中只有人會划船,每次人只能帶一件東西搭船渡河, 且狼和羊、羊和白菜不能在無人監視的情況下放在一起。 在這些條件下,在最小渡河次數下,如何才能讓大家都渡河至另一河岸? 分析: 一般常用圖論(graph theory)的方式求解。我們用暴力法試試,利用電腦程式搜尋可能的解答。 (使用 python) 先給各個角色一個代號: c_cabbage = 1 c_sheep = 2 c_wolf = 3 因為人負責划船,而划船是搬運的唯一方法,人必定是最後到對岸的,因此不需代號。 使用兩個 list 表示兩岸的到貨狀態,例如 $$ [1,2,3],[] $$ 表示白菜、羊、狼在起始岸,目的岸空無一物。 使用一連串的 list 即可表示搬運的過程,例如: $$ [[1,2,3],[]], \\ [[1,3],[2]] $$ 表示人划船把羊載到目的岸。 以下函式檢查合法性,也就是某一岸邊的狀況是否安全,沒有發生吃貨的情況: def constraint_check(grp): return not ((c_cabbage in grp and c_sheep in grp) or (c_sheep in grp and c_wolf in grp)) 以下函示列舉可能的搬運過程,交錯反覆地從起始岸載一個物體到目的岸,或從目的岸載一個物體到起始岸。從目的岸返回時也可空手。為了防止無限循環,要排除重複的搬運,以及,除非發生吃貨風險,不從目的岸載運物體回起始岸。 def new_move(curr, pt): for i in curr: if (pt == i): return False return True def part_enum(st): if (len(st) == 0): return [] que = [[ st.copy() ]] ans = [] while(que): head = que.pop(0) if (head[-1][0] =...

最後的輸

一個簡單的遊戲:數個方格,不一定組成方形,由兩人依序在格子內劃 X,可沿水平或垂直劃一格或多格,但每個格子只能劃一次。劃最後一格的人輸。 例:以下的方格組,並限制一次最多劃連續 3 格 A、B 兩人輪流劃 x 。 A 先劃 X X B 劃 X X X X A 劃,剩一格,B 輸了: X X X X X X 問題:對於一個方格組以及劃格上限,是否有必勝的策略? 先看一個簡單的類型,如果每次只能劃一格,且方格的總數是偶數,先劃的人一定贏! 如果方格組的形狀不規則,或是每次可以劃多格,似乎就沒有簡單的答案了? 使用程式來列舉所有的戰局看看: (使用 python) 首先把每一格對應一個數字 $1,2,...$,並定義"連接性",也就是某一格可以連到其他哪些格。為了避免重複列舉,只看右方與下方的格子。 例如,對於以下的九宮格 1 2 3 4 5 6 7 8 9 劃格上限 3,定義連接關係 dir_mov = {1: [[2,3], [4,7]], 2: [[3],[5,8]], 3: [[6,9]], 4: [[5,6],[7]], 5: [[6],[8]], 6: [[9]], 7: [[8,9]], 8: [[9]], } 使用遞迴的方式,將方格組分割: $$ \text{partition}(S) = \bigcup_{b\subseteq S}\text{先劃 } b \text{,然後 partition}(S-b) $$ # max consecutive items M = 3 # output: arr...