33402 從數學的角度看降臨堂

終極密碼

遊戲規則:本遊戲為猜密碼的遊戲。密碼為0到100之間的其中1個整數,電腦會提示密碼的所在範圍,玩家必須在6次之內猜到密碼才能過關。

★ 終極密碼為0到100之間 ★
您共有六次機會

一、引言

經過淡金公路時, 相信許多人都會對矗立在聖約翰校園內的降臨堂 (見圖一) 留下深刻的印象。 有感於大學生經常認為數學與生活不相關, 我們想利用降臨堂獨特的幾何造型, 從數學的角度進一步去探究它; 並希望以此為例, 提供作為大學數學通識課程的探究素材。 為求文章的流暢, 我們將細節放在附註中, 讓有興趣的讀者可以自行參閱。

圖一. 降臨堂實景       圖二

二、降臨堂屋頂的基本數學性質

從圖一我們可以發現降臨堂的特色是屋頂的四個斜邊由雙曲線構成, 巴黎鐵塔也具有這種幾何特性。 巴黎鐵塔用此種幾何造型的原因應是其中央高的部分可以節省材料, 底座大角度張開可以讓它穩定。 但是做為屋頂, 由於上方的內容積太小, 一般的建築應不會用雙曲線。 因此我們猜測當初建築師除了取此一造型的獨特性外, 或許有如下巧思 (如圖二) : 屋頂四個雙曲線邊, 向中心漸漸接近直到無窮遠; 而四邊向外延伸也到無窮遠。 上方無窮遠處或許代表上帝, 意指上帝降臨時, 祂的愛將被澤大地, 四邊向外延伸到無窮遠吧。

另外, 我們可進ㄧ步探究降臨堂屋頂的表面積與體積。 由於我們手邊無降臨堂確切的建築數據, 為解決此一問題, 我們首先將降臨堂的屋頂重訂度量 (rescale), 得方程式 \begin{equation} %(1) z = \frac{1}{\max\{|x|, |y|\}}, \quad R = \bigg \{(x, y) : \frac{1}{\sqrt{3}} \le |x|, |y|\le 3\bigg \} \end{equation} 如果將座標軸旋轉 $45^\circ$, 即令 $\left \{ \begin{array}{l} u=\displaystyle\frac{1}{\sqrt{2}}(x-y) \\ v=\displaystyle\frac{1}{\sqrt{2}}(x+y) \end{array} \right.$, 則可得新的方程式 $$ z = \frac{\sqrt{2}}{|u|+|v|}, \quad R_1 = \bigg \{(u, v) : \frac{1}{\sqrt{3}} \le \frac{1}{\sqrt{2}}(|u|+|v|) \le 3\bigg \}. $$ 接著, 我們利用(1)式及微積分中常用的曲面表面積公式, 可求得降臨堂屋頂的表面積為 $4\sqrt{82}$

$-\displaystyle\frac{4\sqrt{10}}{3}+2\ln\Big (\frac{\sqrt{82}-1}{\sqrt{82}+1}\Big ) +2\ln\Big (\frac{\sqrt{10}+3}{\sqrt{10}-3}\Big )$; 利用已知橫截面求體積法求得屋頂體積為 $12-\displaystyle\frac{4}{\sqrt{3}}$ (詳細計算過程請參考附註 1與附註 2)。

上述模擬與解題的過程, 實可做為通識課程中探究微積分與生活連結之素材。 在微積分的學習過程中, 學生經常無法感受到方程式, 及其表面積、 體積之意義, 若能如本文般提供降臨堂現場實景及其模型, 搭配問題解決之情境, 相信學生在情意上能認同數學的妙用, 進而產生學習之興趣。

三、當劉徽遇到降臨堂

數學史是許多老師上數學通識課的重要題材, 其中, $\langle\!\langle$九章算術 $\cdot$ 劉徽注$\rangle\!\rangle$ 更是介紹中國古代數學史時所不可或缺的。 於是我們想到: 依照劉徽割圓術的想法, 如果劉徽有機會見到降臨堂, 他會如何算降臨堂屋頂的實體體積呢?

劉徽在註解圓田術注時, 採用無窮分割的想法, 雖然未臻完備但在古中國卻是非常少見的。 以下針對劉徽割圓術的想法稍作解釋: 如圖三所示, 我們可以清楚見到圓面積 $(S)$ 介於圓內接正六邊形面積 $(S_6)$ 與 $S_6$ 加上六塊長方形面積 ($2(S_{12}-S_6)$) 之間, 即 $S_6\lt S\lt S_6+2(S_{12}-S_6)$。 再考慮圓內接正十二邊形, 同上論述可得 $S_{12}\lt S\lt S_{12}+2(S_{24}-S_{12})$。 再繼續分割, 可得通式 $$ S_{6+2^n} \lt S \lt S_{6+2^n} + 2(S_{6+2^{n+1}} - S_{6+2^n}), $$ 其中 $n=0, 1, 2, \ldots$ 。接著對 $n$ 取極限, 可得 $$ S = \lim_{n\to\infty} (S_{6+2^n}) = \lim_{n\to\infty} \Big (S_{6+2^n} + 2(S_{6+2^{n+1}} - S_{6+2^n})\Big ). $$ 簡而言之, 劉徽用比較容易求的圓內接六邊形及圖三的十八邊形分別作圓面積的上下界, 再用無限次對分, 求得真實面積。

圖三

仿照劉徽註解圓田術注的寫法 (見附註 3), 我們將降臨堂屋頂實體體積的求法以古代的數學術語試寫如下, 至於相關術語的解釋, 請見附註 4。

問曰: 今有一雙曲邊方亭, 如圖四, 自地之高乘以該高橫截正方田之廣為二丈。若此亭底距地三分丈之一, 頂距地二丈, 問積幾何?

圖四

答曰: 十丈。

術曰: 以三分丈之一等分其高, 得五雙曲邊小方亭。 如圖五, 每一小亭均以其頂正方田之冪乘其高, 可得少於小亭積尺之方堢壔積尺。 並之, 可得和少於原積尺。 如圖六, 又割之得十雙曲邊小方亭, 復以方堢壔積尺和估之, 則所失復少。 割之彌細, 所失彌少, 割之又割, 以至於不可割, 則與所求合體而無所失矣。 又如圖七, 五雙曲邊小方亭積尺復以方亭積尺估之, 得和多於原積尺。 同理, 如圖八, 復割之至於不可割, 則與所求合體而不復多矣。

圖五           圖六

圖七          圖八

上述解題與仿作的過程, 實可做為通識課程中探究數學史與生活連結之素材。 課堂上, 老師可先邀請學生翻譯並討論劉徽的圓田術注, 當對劉徽的思想有所了解後, 再進一步邀請學生以降臨堂為例, 進行體積解法的仿作, 並欣賞彼此創作的奇文。 此一過程不僅可讓學生對劉徽的成就有更深刻的了解與運用, 亦可因著古代數學名詞的介紹, 幫助有興趣的學生進ㄧ步閱讀古籍。 特別地, 限於我們的古文能力, 上述仿作還請讀者不吝指教, 多多包涵。

四、降臨堂屋頂的 3D 繪圖

在本文的第二部分曾提及模型的提供有助於學生想像及興趣的提升, 這裡, 我們更進一步的強調, 數學軟體的操作學習可以幫助學生對數學的了解更深入, 而且日後學生可以用這些軟體來解決日常生活的問題。 但是, 要完整的介紹一種軟體得花很多時間, 因此我們認為在通識課程中, 可先向學生介紹輸入、 輸出、 迴圈、 邏輯敘述等基本指令, 其後則可透過問題解決的形式來進行 3D 繪圖的教學。

以降臨堂為例, 我們可用 MATHEMATICA、 MATLAB 兩種軟體的 3D 繪圖工具, 再搭配 FORTRAN、 MATLAB 的程式分別畫出 (1) 式的曲面圖形 (如圖九$\sim$十二, 程式詳見附註 5$\sim$8)。 此外, 我們可提供微積分課本中的方程式 (見參考文獻 第十三章), 請學生用 MATLAB 寫程式畫出圖形。 這裡我們建議用 MATLAB 寫程式, 因為 MATHEMATICA 太容易, 而 FORTRAN 又有一些宣告對非理工專長的同學太難。 總之, 撰寫一些短的程式, 如降臨堂屋頂的 3D 繪圖, 學生容易獲得成就; 而且除蟲的過程不失為訓練學生邏輯思考的好方法。

圖九          圖十

圖十一          圖十二

五、結論

對許多大學生而言, 數學是無用的, 與生活不相關的。 由於我們認為可以真實情境的問題解決形式來引發學生對數學的需求感, 故在本文中我們以聖約翰校園內的降臨堂為例, 來連結微積分、 數學史, 以及 3D 繪圖。 其中, 微積分的部份乃邀請學生觀察此一建築之幾何特性, 並計算其屋頂的表面積與體積; 數學史的部份乃邀請學生仿照劉徽圓田術注的寫法, 進行屋頂體積解法的仿作; 至於 3D 繪圖的部份, 則是邀請學生撰寫程式畫出屋頂三維曲面的圖形。

對教師而言, 在準備數學相關的通識教材時, 材料過多難以取捨和學生參與度不高是兩大問題。 這篇文章的目的就是想藉一個簡單的例子, 用解決問題導向代替系統式教學; 再加上仿作及實際操作等增加學生參與度, 提高學生學習興趣。 最後, 我們希望能藉著這小小的心得, 達到拋磚引玉的效果。

附註:

  1. 由 (1) 式及微積分中常用的曲面表面積公式可知一面屋頂表面積 \begin{eqnarray*} &=& \iint\limits_R \sqrt{\Big (\frac{\partial z}{\partial x}\Big )^2 + \Big (\frac{\partial z}{\partial y}\Big )^2 + 1} ~dA \\ &=& \iint\limits_R \sqrt{\frac{1}{x^4} +1} ~dA \\ &=& \int_{\frac{1}{\sqrt{3}}}^3 \int_{-x}^x \frac{\sqrt{x^4+1}}{x^2} dy dx \\ &=& \int_{\frac{1}{\sqrt{3}}}^3 \bigg (\frac{\sqrt{x^4+1}}{x^2} \cdot 2x\bigg ) dx \\ &=& \int_{\frac{1}{3}}^9 \bigg (\frac{\sqrt{u^2+1}}{u}\bigg ) du ~\hbox{ (利用變數變換 }~ u = x^2) \\ &=& \int_{\tan^{-1}\frac{1}{3}}^{\tan^{-1}9} \frac{\sec^3\theta}{\tan\theta} d\theta ~\hbox{ (利用變數變換 }~ u = \tan\theta, ~0 \le \theta \le \frac{\pi}{2}) \qquad\qquad\qquad\quad \\ &=& \int_{\tan^{-1}\frac{1}{3}}^{\tan^{-1}9} \frac{1}{\cos^2\theta\cdot\sin\theta} d\theta \\ &=& \int_{\tan^{-1}\frac{1}{3}}^{\tan^{-1}9} \frac{\sin\theta}{\cos^2\theta\cdot\sin^2\theta} d\theta \\ &=& - \int_{\frac{3}{\sqrt{10}}}^{\frac{1}{\sqrt{82}}} \frac{1}{v^2\cdot(1-v^2)} dv ~\hbox{ (利用變數變換 }~ v = \cos\theta) \\ &=& - \int_{\frac{3}{\sqrt{10}}}^{\frac{1}{\sqrt{82}}} \bigg (\frac{1}{v^2} + \frac{1}{2(1+v)} + \frac{1}{2(1-v)}\bigg ) dv \\ &=& \bigg (\frac{1}{v} - \frac{1}{2}\ln|1+v| + \frac{1}{2}\ln|1-v|\bigg ) \bigg |_{\frac{3}{\sqrt{10}}}^{\frac{1}{\sqrt{82}}} \\ &=& \sqrt{82} - \frac{\sqrt{10}}{3} + \frac{1}{2} \ln \bigg (\frac{\sqrt{82}-1}{\sqrt{82}+1}\bigg ) + \frac{1}{2} \ln \bigg (\frac{\sqrt{10}+3}{\sqrt{10}-3}\bigg ). \end{eqnarray*} 據此, 四面屋頂表面積 $=4\sqrt{82}-\displaystyle\frac{4\sqrt{10}}{3}+2\ln\Big (\frac{\sqrt{82}-1}{\sqrt{82}+1}\Big ) +2\ln\big (\frac{\sqrt{10}+3}{\sqrt{10}-3}\Big )$。
  2. 我們用已知橫截面求體積法求之。在高度為 $z$ 時, 橫截面為一正方形, 這個正方形邊長為 $\displaystyle\frac{2}{z}$, 因此截面面積為 $\displaystyle\frac{4}{z^2}$。 據此, 屋頂體積 $=\displaystyle\int_{\frac{1}{3}}^{\sqrt{3}} \displaystyle\frac{4}{z^2}dz =-\frac{4}{z}\Big |_{\frac{1}{3}}^{\sqrt{3}}=12-\frac{4}{\sqrt{3}}$。
  3. 第四章第二節及 第六章第一節:
    圓田術曰: 半周半徑相乘為積步。
    徽注云: 按半周為從, 半徑為廣, 故廣從相乘為積步也。 假令圓徑二尺, 圓中容六觚之一面, 與圓徑之半, 其數均等。合徑率一而外周率三也。
    又按: 為圖, 以六觚之一面乘一弧半徑, 三之, 得十二觚之冪。若又割之, 次以十二觚之一面乘一弧之半徑, 六之, 則得二十四觚之冪。 割之彌細, 所失彌少。割之又割, 以至於不可割, 則與圓周合體而無所失矣。觚面之外, 猶有餘徑, 以面乘餘徑, 則冪出弧表。 若夫觚之細者, 與圓合體, 則表無餘徑。表無餘徑, 則冪不外出矣。以一面乘半徑, 觚而裁之, 每輒自倍。 故以半周乘半徑而為圓冪。以此周、 徑, 謂至然之術, 非周三徑一之率也。$\cdots$

  1. 方亭: 就是像圖七下方的方錐台。劉徽用了很漂亮的方法證明了方亭體積, 是讀者欣賞時不可錯過之處。 我們猜測當初這名稱應該是取亭子的屋頂上小下大的特色吧。
    正方田: 正方形。
    廣、 從: 即長方形的長、寬。
    積、 積尺: 可能是面積或體積, 請參閱上下文。
    答曰: 十丈: 這裡沒寫錯, 古代沒有平方單位、立方單位。
    冪: 面積。
    方堢壔: 正立方體。

  1. 圖九是用 MATHEMATICA 畫的。指令如下:
    Advent=Plot3D[1/Max[Abs[x],Abs[y]],{x,-3,3},{y,-3,3}];
    Show[%,PlotRange $\rightarrow$ {1/3,1.732},Boxed $\rightarrow$ False,Axes $\rightarrow$ None]
  2. 圖十是用 MATLAB 畫的。我們寫成指令檔 (commend file) 如下:
       clear
       length=0.1;
       [X,Y]=meshgrid(-3:length:3);
       step=1+6/length;
       for i=1:step
          for j=1:step
             if (abs(X(i,j))< 0.5) & (abs(Y(i,j))< 0.5)
                 Z(i,j)=0.0;
             else
                 Z(i,j)=1.0/max(abs(X(i,j)),abs(Y(i,j)));
             end
          end
       end
       surf(X,Y,Z);
       view([2.2 1.2 3]);
       axis off
    
  3. 圖十一是用 FORTRAN 求出斜邊的點, 再用 MATLAB 畫的:
    FORTRAN 檔: (此檔可改用 MATLAB 檔, 寫起來會更加容易。)
        PROGRAM MAIN
        IMPLICIT NONE
        REAL,PARAMETER :: LENGTH=0.01
        REAL,PARAMETER :: TOP=0.5
        REAL,PARAMETER :: BOTTOM=3.0
        REAL :: A,B,TOTLEN
        INTEGER :: SIZE,I
        TOTLEN=BOTTOM-TOP
        SIZE=INT(TOTLEN/LENGTH)
        OPEN(UNIT=100, FILE='l1.dat')
        OPEN(UNIT=200, FILE='l2.dat')
        OPEN(UNIT=300, FILE='l3.dat')
        OPEN(UNIT=400, FILE='l4.dat')
        DO I=0,SIZE
              A=TOP+REAL(I)*LENGTH
              B=1.0/A
              WRITE(100,"(3(1X,F6.3))") -A,-A,B
              WRITE(200,"(3(1X,F6.3))")  A,-A,B
              WRITE(300,"(3(1X,F6.3))") -A, A,B
              WRITE(400,"(3(1X,F6.3))")  A, A,B
         END DO
        STOP
        END
    

    MATLAB 檔:
          clear;
          x1=[3 -3 -3 3 3];
          y1=[3  3 -3 -3 3];
          z1=[1/3 1/3 1/3 1/3 1/3];
          x2=[0.5 -0.5 -0.5 0.5 0.5];
          y2=[0.5  0.5 -0.5 -0.5 0.5];
          z2=[1/0.5 1/0.5 1/0.5 1/0.5 1/0.5];
          load l1.dat
          load l2.dat
          load l3.dat
          load l4.dat
          plot3(x1,y1,z1,'k-', ...
          l1(:,1),l1(:,2),l1(:,3),'k-',l2(:,1),l2(:,2),l2(:,3),'k-', ...
          l3(:,1),l3(:,2),l3(:,3),'k-',l4(:,1),l4(:,2),l4(:,3),'k-', ...
          x2,y2,z2,'k-');
          view([2.2 1.2 3]);
          axis off
    
  4. 圖十二也是用 FORTRAN 求出格子點, 再用 MATLAB 畫的:
    FORTRAN 檔: (此檔可改用 MATLAB 檔, 寫起來會更加容易。)
        PROGRAM MAIN
        IMPLICIT NONE
        INTEGER,PARAMETER :: SIZE=600
          REAL :: A,B,X,Y,LENGTH
        REAL :: C(SIZE+1,SIZE+1)
        INTEGER :: I,J,K
        LENGTH=6.0/REAL(SIZE)
          OPEN(UNIT=100, FILE='r.dat')
        OPEN(UNIT=200, FILE='x.dat')
        OPEN(UNIT=300, FILE='y.dat')
          DO I=0,SIZE
             DO J=0,SIZE
                   A=-3.0+REAL(I)*LENGTH
               B=-3.0+REAL(J)*LENGTH
                 IF (ABS(A) > = 0.499 .OR. ABS(B) > = 0.499) THEN
                     C(I+1,J+1)= 1.0/MAX(ABS(A),ABS(B))
                    ELSE
                   C(I+1,J+1)= 0.0
                    END IF
                   WRITE(100,"(F6.3)") C(I+1,J+1)
             END DO
          END DO
          DO K=0,SIZE
          X=-3.0+REAL(K)*LENGTH
          Y=-3.0+REAL(K)*LENGTH
          WRITE(200,"(F6.3)") X
          WRITE(300,"(F6.3)") Y
          END DO
          STOP
          END
    

    MATLAB 函數檔 (因為 FORTRAN 程式得到的結果必須用陣列存起來, 如果用矩陣形式存, 行太長會自動跳行。 因此, 我們要用函數檔將陣列改成方陣) :
        function A=arrtomat(x)
        [k,l]=size(x);
        m=sqrt(k);
        for i=1:m
          for j=1:m
            A(i,j)=x(m*(i-1)+j,1);
          end
        end
    

    MATLAB指令檔:
        clear
        load r.dat
        load x.dat
        load y.dat
        C=arrtomat(r);
        colormap(gray);
        surf(x,y,C); shading interp;
        view([2.2 1.2 3]); axis off
    

參考文獻

李繼閔, $\langle\!\langle$九章算術及其劉徽注研究$\rangle\!\rangle$, 九章出版社。 郭書春, $\langle\!\langle$古代世界數學泰斗劉徽$\rangle\!\rangle$, 明文書局。 彭國倫, $\langle\!\langle$FORTRAN 95 程式設計$\rangle\!\rangle$, 碁峰資訊。 Hass, J., Weir, M. D. and Thomas, G. B. Jr., University Calculus: Alternate Edition, Pearson/Addison/Wesley. Pärt-Enander, E. and Sjöberg, A., The MATLAB 5 handbook, Addison-Wesley. Stewart, J., Calculus early transcendental, 5th ed., Thomson/Brooks/Cole. Wolfram, S., The MATHEMATICA book, 3rd ed., Wolfram media/Cambridge University Press.

---本文作者李政哲任教聖約翰科技大學通識教育中心, 張淑怡任教國立台北教育大學數學暨資訊教育系---

文章 推薦

電腦模擬與賭局

假設玩家A和B進行賭博。玩家A有m元,玩家B則有n元,然後擲1個公正的硬幣。如果出現正面就算玩家A贏,反面就算玩家B贏。每次賭注都是1元,如果A贏則A變m+1元、而B變n−1元,並稱此為1回合。雙方不斷地進行賭博,直到某方的錢歸零為止。在這個賭博中,有以下兩個問題:(1)玩家A和玩家B贏的機率各是多少?(2)每投1次硬幣決勝負,都稱為1回合,平均要幾回合,賭局才會結束(某方錢輸光)?....閱讀更多