数学 / 解三角形 · 六个元素里的三个 / 正弦定理与两解的来历 待审核 1 / 4
a/sin A = 2R

正弦定理与两解的来历

三角形有六个元素:三条边 aabbcc 与三个内角 AABBCC,边 aa 对角 AA。这六个量之间只有三个自由度,给定三个(三个角除外,那只定形状不定大小)就该能把余下三个算出来。完成这件事的工具是两条定理,本页处理其中管「边与它的对角」的那一条。

1 · 边与对角之比

ABC\triangle ABC 中过 CCABAB 作垂线,垂足记作 DDCDCD 在两个直角三角形里各有一种写法:CD=bsinACD = b\sin A,也等于 asinBa\sin B。两式相等,两端同除以 sinAsinB\sin A\sin B,得 a/sinA=b/sinBa/\sin A = b/\sin B。换一条高再来一次,第三个比值也接上。

定理 1.1(正弦定理) 在任意三角形中 asinA=bsinB=csinC=2R\dfrac{a}{\sin A} = \dfrac{b}{\sin B} = \dfrac{c}{\sin C} = 2R,其中 RR 是外接圆半径。

垂线落在 ABAB 之外(有一个内角为钝角时)也不影响推导:那时 sin\sin 的值由诱导公式给出,sin(180°A)=sinA\sin(180° - A) = \sin A 把符号补回来。所以正弦定理对锐角与钝角三角形一体适用。

公共值等于 2R2R 这一层来自圆周角定理。把 aa 所对的圆周角 AA 挪到以 aa 为直径端点的位置,得到一个直角三角形,aa 是它的斜边、2R2R 是外接圆直径,由此得 a=2RsinAa = 2R\sin A。这一层在正弦定理的常见叙述里常被省掉,但它是「已知两角一边求外接圆半径」这类题的全部依据。

2 · 边角互化的两个方向

定理 1.1 是一条等式,两个方向都能用。把边换成角:a=2RsinAa = 2R\sin A,含 aabbcc 的齐次式便可整体换成含 sinA\sin AsinB\sin BsinC\sin C 的式子,2R2R 约掉。把角换成边则是反向。

a=2RsinAa = 2R\sin A 立刻得到一条判据:a>ba > b 当且仅当 sinA>sinB\sin A > \sin B。这条等价只在三角形内部成立,一般的角并不满足——100°100°95°95° 的正弦分别是 0.9850.9850.9960.996,角大而正弦小。三角形里之所以成立,是因为三个内角中至多一个是钝角。

3 · 已知条件的类型与对应的定理

已知 记法 用哪条定理 解的组数
两角及夹边 ASA 内角和补第三角,再用正弦定理 11
两角及一角的对边 AAS 同上 11
两边及其中一边的对角 SSA 正弦定理 001122
两边及夹角 SAS 余弦定理 11
三边 SSS 余弦定理 11

前两类只差一步内角和的换算,本质是同一件事。后两类交给 余弦定理与边角互化。真正需要单独讨论的只有 SSA。

4 · 两解的几何来历

SSA 的麻烦出在反解上:正弦定理给出 sinA=asinB/b\sin A = a\sin B / b,而 (0°, 180°)(0°,\ 180°) 内满足同一个正弦值的角有两个,互为补角。哪个成立、是否都成立,要用内角和 A+B<180°A + B < 180° 逐个检验。检验的结果可以压成一句:两组解只出现在已知角对着两条已知边中较短的那条、且该角为锐角时。

把这件事画出来更直接。顶点 BB 放在原点,CC 放在 (a, 0)(a,\ 0),则角 BB 的另一条边是一条过原点、倾角为 BB 的射线;顶点 AA 必须落在这条射线上,且到 CC 的距离为 bb。于是解的个数就是「以 CC 为心、半径 bb 的圆」与「这条射线」的交点个数:不相交无解,相切一解,相交两解。

图 4-1 · 边边角的解由圆与射线的交点个数决定,两组解在图上是同一条射线上的两个点。可调两条已知边与已知角,观察交点个数与两组解各自的三个未知元素。

两组解共用一个外接圆:2R=b/sinB2R = b/\sin B 只由已知量决定,与选了哪个 AA 无关。取 a=6a = 6b=4b = 4B=30°B = 30°,两组解的 AA 分别是 48.59°48.59°131.41°131.41°,而 a/sinAa/\sin A 算出来是 8.0000000000000027.999999999999999b/sinBb/\sin B8.000000000000002——三个数只在末位上不同。

警示 · 相切那条分界线在双精度下并不给出「恰好一解」。取 a=5a = 5B=30°B = 30°b=2.5b = 2.5,数学上 asinB=ba\sin B = bsinA=1\sin A = 1、圆与射线相切。实测 5 * Math.sin(Math.PI / 6) 算出的是 2.4999999999999996 而不是 2.5,于是 sinA=0.9999999999999998\sin A = 0.9999999999999998,反解得 89.99999879258174°90.00000120741826° 两个候选,两者都通过内角和检验。换那条独立的几何路线也一样:圆与射线的判别式算出 3.55e-15 而不是零,两个交点参数相差 1.19e-7。两条路线一致地多数出一个,故 triangle.test.ts 里那条断言写的是「两条路线给出的个数一致」,而不是「恰好一解」——把切点情形当作可判定的分类,本身就是浮点下做不到的事。

5 · 参考文献

  1. Law of sines. Wikipedia. 正弦定理的多种证明、外接圆形式与两解情形。https://en.wikipedia.org/wiki/Law_of_sines
  2. Solution of triangles. Wikipedia. 已知元素的各种组合各用哪条定理、各有几组解。https://en.wikipedia.org/wiki/Solution_of_triangles
  3. Circumscribed circle. Wikipedia. 外接圆与外心,a/sinA=2Ra/\sin A = 2R 的几何来历。https://en.wikipedia.org/wiki/Circumscribed_circle
  4. Law of Sines. Wolfram MathWorld. 定理的等价形式与推论清单。https://mathworld.wolfram.com/LawofSines.html
  5. Law of tangents. Wikipedia. 正切定理,对数表时代解三角形的主力公式。https://en.wikipedia.org/wiki/Law_of_tangents