利用行列式推導海龍公式

本文的閱讀等級:初級

海龍公式 (Heron’s formula,亦稱海倫─秦九韶公式) 是一個著名的平面幾何公式。若一個三角的三邊長為 a, b, c,海龍公式給出三角形面積 \Delta,如下:

\displaystyle  \Delta=\sqrt{s(s-a)(s-b)(s-c)}

其中 s=\frac{1}{2}(a+b+c) 是三角形的半周長。如果已知三角形的三個頂點座標 (按逆時針排序) (x_1,y_1)(x_2,y_2)(x_3, y_3),三角形面積 \Delta 亦可用下列行列式計算 (見“利用行列式計算多邊形面積”):

\displaystyle  \Delta=\frac{1}{2}\begin{vmatrix}  1&1&1\\  x_1&x_2&x_3\\  y_1&y_2&y_3  \end{vmatrix}

本文先介紹一個採用平面幾何方法的海龍公式證明[1],隨後解說如何由行列式表達的三角形面積公式推導海龍公式 (目的是為了演練行列式的運算)。

 

Heron Formula

三角形

上圖顯示一三角形,三邊長記為 a, b, c,高為 h,且 a=d+e。由畢氏定理可知 b^2=d^2+h^2c^2=e^2+h^2。令兩式相減,可得 b^2-c^2=d^2-e^2。因此,

\displaystyle  d-e=\frac{d^2-e^2}{d+e}=\frac{b^2-c^2}{a}

令上式與 d+e=a 相加,即有

\displaystyle  d=\frac{a^2+b^2-c^2}{2a}

故三角形面積為

\displaystyle  \Delta=\frac{1}{2}ah=\frac{1}{2}a\sqrt{b^2-d^2}=\frac{1}{2}\sqrt{(ab)^2-\left(\frac{a^2+b^2-c^2}{2}\right)^2}

計算三角形面積平方並分解因式,過程如下:

\displaystyle\begin{aligned}  \Delta^2&=\frac{1}{16}\left((2ab)^2-(a^2+b^2-c^2)^2\right)\\  &=\frac{1}{16}(2ab+a^2+b^2-c^2)(2ab-a^2-b^2+c^2)\\  &=\frac{1}{16}((a+b)^2-c^2)(c^2-(a-b)^2)\\  &=\frac{1}{16}(a+b+c)(a+b-c)(c+a-b)(c-a+b)\\  &=s(s-c)(s-b)(s-a).  \end{aligned}

 
接著說明如何由行列式面積公式推演海龍公式。令三角形的三個頂點為 \mathbf{p}_i=(x_i,y_i)i=1,2,3。利用轉置不改變行列式值,以及行列式的可乘公式 (見“行列式的運算公式與性質”),可得

\displaystyle\begin{aligned}  \Delta^2&=\frac{1}{2}\begin{vmatrix}  1&x_1&y_1\\  1&x_2&y_2\\  1&x_3&y_3  \end{vmatrix}\cdot\frac{1}{2}\begin{vmatrix}  1&1&1\\  x_1&x_2&x_3\\  y_1&y_2&y_3  \end{vmatrix}\\  &=\frac{1}{4}\begin{vmatrix}  1+x_1x_1+y_1y_1&1+x_1x_2+y_1y_2&1+x_1x_3+y_1y_3\\  1+x_2x_1+y_2y_1&1+x_2x_2+y_2y_2&1+x_2x_3+y_2y_3\\  1+x_3x_1+y_3y_1&1+x_3x_2+y_3y_2&1+x_3x_3+y_3y_3  \end{vmatrix}\\  &=\frac{1}{4}\begin{vmatrix}  1+\mathbf{p}_1\cdot\mathbf{p}_1&1+\mathbf{p}_1\cdot\mathbf{p}_2&1+\mathbf{p}_1\cdot\mathbf{p}_3\\  1+\mathbf{p}_2\cdot\mathbf{p}_1&1+\mathbf{p}_2\cdot\mathbf{p}_2&1+\mathbf{p}_2\cdot\mathbf{p}_3\\  1+\mathbf{p}_3\cdot\mathbf{p}_1&1+\mathbf{p}_3\cdot\mathbf{p}_2&1+\mathbf{p}_3\cdot\mathbf{p}_3  \end{vmatrix}\\  &=\frac{1}{4}\begin{vmatrix}  1&1&1&1\\  0&1+\mathbf{p}_1\cdot\mathbf{p}_1&1+\mathbf{p}_1\cdot\mathbf{p}_2&1+\mathbf{p}_1\cdot\mathbf{p}_3\\  0&1+\mathbf{p}_2\cdot\mathbf{p}_1&1+\mathbf{p}_2\cdot\mathbf{p}_2&1+\mathbf{p}_2\cdot\mathbf{p}_3\\  0&1+\mathbf{p}_3\cdot\mathbf{p}_1&1+\mathbf{p}_3\cdot\mathbf{p}_2&1+\mathbf{p}_3\cdot\mathbf{p}_3  \end{vmatrix}\\  &=\frac{1}{4}\begin{vmatrix}  1&1&1&1\\  -1&\mathbf{p}_1\cdot\mathbf{p}_1&\mathbf{p}_1\cdot\mathbf{p}_2&\mathbf{p}_1\cdot\mathbf{p}_3\\  -1&\mathbf{p}_2\cdot\mathbf{p}_1&\mathbf{p}_2\cdot\mathbf{p}_2&\mathbf{p}_2\cdot\mathbf{p}_3\\  -1&\mathbf{p}_3\cdot\mathbf{p}_1&\mathbf{p}_3\cdot\mathbf{p}_2&\mathbf{p}_3\cdot\mathbf{p}_3  \end{vmatrix}\\  &=-\frac{1}{4}\begin{vmatrix}  -1&1&1&1\\  1&\mathbf{p}_1\cdot\mathbf{p}_1&\mathbf{p}_1\cdot\mathbf{p}_2&\mathbf{p}_1\cdot\mathbf{p}_3\\  1&\mathbf{p}_2\cdot\mathbf{p}_1&\mathbf{p}_2\cdot\mathbf{p}_2&\mathbf{p}_2\cdot\mathbf{p}_3\\  1&\mathbf{p}_3\cdot\mathbf{p}_1&\mathbf{p}_3\cdot\mathbf{p}_2&\mathbf{p}_3\cdot\mathbf{p}_3  \end{vmatrix},  \end{aligned}

其中 \mathbf{p}_i\cdot\mathbf{p}_j 表示 \mathbf{p}_i\mathbf{p}_j 的點積 (dot product,或稱內積)。上面使用了以第1行 (column) 展開的餘因子公式 (或稱 Laplace 公式),接著令第2,3,4列 (row) 減去第1列,最後提出第1行的負號。因為

\displaystyle  \begin{vmatrix}  \mathbf{p}_1\cdot\mathbf{p}_1&\mathbf{p}_1\cdot\mathbf{p}_2&\mathbf{p}_1\cdot\mathbf{p}_3\\  \mathbf{p}_2\cdot\mathbf{p}_1&\mathbf{p}_2\cdot\mathbf{p}_2&\mathbf{p}_2\cdot\mathbf{p}_3\\  \mathbf{p}_3\cdot\mathbf{p}_1&\mathbf{p}_3\cdot\mathbf{p}_2&\mathbf{p}_3\cdot\mathbf{p}_3  \end{vmatrix}=\begin{vmatrix}  0&x_1&y_1\\  0&x_2&y_2\\  0&x_3&y_3  \end{vmatrix}\cdot\begin{vmatrix}  0&0&0\\  x_1&x_2&x_3\\  y_1&y_2&y_3  \end{vmatrix}=0

餘因子公式表明三角形面積平方等於

\displaystyle  \Delta^2=-\frac{1}{4}\begin{vmatrix}  0&1&1&1\\  1&\mathbf{p}_1\cdot\mathbf{p}_1&\mathbf{p}_1\cdot\mathbf{p}_2&\mathbf{p}_1\cdot\mathbf{p}_3\\  1&\mathbf{p}_2\cdot\mathbf{p}_1&\mathbf{p}_2\cdot\mathbf{p}_2&\mathbf{p}_2\cdot\mathbf{p}_3\\  1&\mathbf{p}_3\cdot\mathbf{p}_1&\mathbf{p}_3\cdot\mathbf{p}_2&\mathbf{p}_3\cdot\mathbf{p}_3  \end{vmatrix}

令第2,3,4行乘以 -2,再令第1列乘以 -\frac{1}{2}

\displaystyle  \Delta^2=-\frac{1}{16}\begin{vmatrix}  0&1&1&1\\  1&-2\mathbf{p}_1\cdot\mathbf{p}_1&-2\mathbf{p}_1\cdot\mathbf{p}_2&-2\mathbf{p}_1\cdot\mathbf{p}_3\\  1&-2\mathbf{p}_2\cdot\mathbf{p}_1&-2\mathbf{p}_2\cdot\mathbf{p}_2&-2\mathbf{p}_2\cdot\mathbf{p}_3\\  1&-2\mathbf{p}_3\cdot\mathbf{p}_1&-2\mathbf{p}_3\cdot\mathbf{p}_2&-2\mathbf{p}_3\cdot\mathbf{p}_3  \end{vmatrix}

對於 i=1,2,3,第1行乘以 \Vert\mathbf{p}_i\Vert^2 加進第 (i+1) 行,第1列乘以 \Vert\mathbf{p}_i\Vert^2 加進第 (i+1) 列 (見“行列式的列行取代運算”),可得

\displaystyle\begin{aligned}  \Delta^2&=-\frac{1}{16}\begin{vmatrix}  0&1&1&1\\  1&\Vert\mathbf{p}_1\Vert^2+\Vert\mathbf{p}_1\Vert^2-2\mathbf{p}_1\cdot\mathbf{p}_1&\Vert\mathbf{p}_1\Vert^2+\Vert\mathbf{p}_2\Vert^2-2\mathbf{p}_1\cdot\mathbf{p}_2&\Vert\mathbf{p}_1\Vert^2+\Vert\mathbf{p}_3\Vert^2-2\mathbf{p}_1\cdot\mathbf{p}_3\\  1&\Vert\mathbf{p}_2\Vert^2+\Vert\mathbf{p}_1\Vert^2-2\mathbf{p}_2\cdot\mathbf{p}_1&\Vert\mathbf{p}_2\Vert^2+\Vert\mathbf{p}_2\Vert^2-2\mathbf{p}_2\cdot\mathbf{p}_2&\Vert\mathbf{p}_2\Vert^2+\Vert\mathbf{p}_3\Vert^2-2\mathbf{p}_2\cdot\mathbf{p}_3\\  1&\Vert\mathbf{p}_3\Vert^2+\Vert\mathbf{p}_1\Vert^2-2\mathbf{p}_3\cdot\mathbf{p}_1&\Vert\mathbf{p}_3\Vert^2+\Vert\mathbf{p}_2\Vert^2-2\mathbf{p}_3\cdot\mathbf{p}_2&\Vert\mathbf{p}_3\Vert^2+\Vert\mathbf{p}_3\Vert^2-2\mathbf{p}_3\cdot\mathbf{p}_3  \end{vmatrix}\\  &=-\frac{1}{16}\begin{vmatrix}  0&1&1&1\\  1&\Vert\mathbf{p}_1-\mathbf{p}_1\Vert^2&\Vert\mathbf{p}_1-\mathbf{p}_2\Vert^2&\Vert\mathbf{p}_1-\mathbf{p}_3\Vert^2\\  1&\Vert\mathbf{p}_2-\mathbf{p}_1\Vert^2&\Vert\mathbf{p}_2-\mathbf{p}_2\Vert^2&\Vert\mathbf{p}_2-\mathbf{p}_3\Vert^2\\  1&\Vert\mathbf{p}_3-\mathbf{p}_1\Vert^2&\Vert\mathbf{p}_3-\mathbf{p}_2\Vert^2&\Vert\mathbf{p}_3-\mathbf{p}_3\Vert^2  \end{vmatrix}.  \end{aligned}

將頂點 \mathbf{p}_1, \mathbf{p}_2, \mathbf{p}_3 的對邊長分別表示為 a, b, c,則有

\displaystyle  \Delta^2=-\frac{1}{16}\begin{vmatrix}  0&1&1&1\\  1&0&c^2&b^2\\  1&c^2&0&a^2\\  1&b^2&a^2&0  \end{vmatrix}

稱為 Cayley-Menger 行列式[2]。展開化簡,即得海龍公式

\displaystyle  \Delta^2=\frac{1}{16}(a+b+c)(-a+b+c)(a-b+c)(a+b-c)

下面等式的推導證明留給讀者當作練習:

\displaystyle  \begin{vmatrix}  0&1&1&1\\  1&0&c^2&b^2\\  1&c^2&0&a^2\\  1&b^2&a^2&0  \end{vmatrix}=\begin{vmatrix}  0&a&b&c\\  a&0&c&b\\  b&c&0&a\\  c&b&a&0  \end{vmatrix}

 
參考來源:
[1] Heron’s formula from Wikipedia
[2] Cayley-Menger determinant from Wolfram Mathworld

This entry was posted in 線性代數專欄, 應用之道 and tagged , , , . Bookmark the permalink.

7 則回應給 利用行列式推導海龍公式

  1. Watt Lin 說:

    感謝老師帶領我們欣賞奇妙的證明方法,也認識「殊途同歸」這句成語在數學的表現。
    我在高中時期,對於海龍公式,只懂一種方法導出,現在看到不同方式來推演,實在很高興。
    一條公式,能用多種方法證明,或許,有不少高中生認為沒必要那樣作,為了求快速,只學一種就好。
    換個場景,在醫學領域,若是認為疾病只有唯一療法,會是什麼狀況呢?
    假設那種「唯一療法」的副作用很強,可能使病患接受治療的意願降低。
    若可提供多項選擇,給病人挑選(或由醫師協助篩選)比較合適的其中一種方式,將會更好。

    • ccjou 說:

      採用行列式證明的步驟比較長,但引用豐富的性質。
      如果某一種療法耗時長,但最終效果較好,病患也未必會願意選擇它。我個人的感覺是,絕大多數人的決定都採計短期效用,或許是因為長期效用的風險比較高。

  2. Watt Lin 說:

    換個方式,打個比方:
    如果坐計程車,大多數情況,乘客會希望走「最短途徑」,或者塞車時候,選擇繞路、稍微遠一點的「最省時途徑」。
    若是坐公共汽車,價格低廉,在時間充裕的前提,有人從甲地到乙地,在一年之中,嘗試各種路線、轉乘方式,欣賞街景,也認識許多道路名稱,可能增加生活樂趣。
    當然,這個平時很閒坐公車的人,遇到急事的時候,仍然可以選擇計程車。
    在數學領域,解答一個問題,學習多種途徑,若時間夠,真的很好!頭腦可以靈活思考。
    考試急用,不得已,才求速效。
    考完之後,有興趣思考其他方法的人,在目前的教育體制下,似乎人數不多。

  3. 个人 說:

    老师您好:文章中“利用行列式的可乘公式,以及轉置不改變行列式值 (見“行列式的運算公式與性質”),”后的那个公式怎么显示不出来呢?

    • ccjou 說:

      所謂后的那个公式怎么显示不出来呢,是說LaTeX無法正確顯示?我這裡可以看到完整的顯示。

      原先寫的次序反了 (已更正),應該說:利用轉置不改變行列式值,以及行列式的可乘公式。面積平方的第一個等式就是轉置不改變行列式值。

  4. suehang 說:

    余不敢苟同,数学证明都是越简约好,越简越美,之前的证明就已经很美,行列式证明太繁琐了,当然,作为给学生作行列式的练习,还是可以的!

  5. suehang 說:

    实际上就使用原证明思路,作高,分成两个直角三角形,再用这两个三角形的面积相加都比上述方法简单.

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s