解三角形 · 六个元素里的三个
三角形的六个元素之间只有三个自由度。给定三个元素(三个角除外,那只定形状不定大小),其余三个原则上就被定住了——「解三角形」这个名字说的正是这件事:把剩下的三个算出来。
完成这件事只需两条定理。正弦定理管「边与它的对角」这一对,形式最简单,还顺带给出外接圆半径;余弦定理管「一个角与三条边」,它把勾股定理推广到任意三角形, 的符号直接给出这个角是锐角、直角还是钝角。两条定理的分工可以按已知元素的类型排成一张表,唯一的麻烦落在「两边及其中一边的对角」上:正弦定理给出 sin A 之后,锐角与钝角两个候选都可能成立。
本系列前两页各走一条定理,把每一类已知条件对应哪条定理、会解出几组解交代清楚;后两页处理派生量。面积那一页把四个公式并排跑:½ab·sin C、海伦公式、Kahan 的稳定形式与坐标叉积,在寻常三角形上它们一致到小数第十几位,在细长三角形上却能一同归零——而失效的根源不在公式,在「顶点坐标换算成边长」那一步。最后一页把仰角、俯角与方位角化归成三角形的已知元素,并量一下两个仰角接近时误差被放大多少倍。
两条定理各管一类对应关系:正弦定理绑「边与对角」,余弦定理绑「一个角与三条边」。两页分别给出证明、适用的已知条件类型,以及「两边及一对角」为何会有两组解。
正弦定理与两解的来历
三条边与它们的对角之比相等,公共值是外接圆直径。已知两角一边时解唯一,已知两边及其中一边的对角时可能有两组解,而两解的来历是一个圆与一条射线交了两个点。
余弦定理与边角互化
把勾股定理加上一个修正项 −2bc·cos A,就得到对任意三角形都成立的余弦定理。反解出的 cos A 符号直接判定这个角是锐角、直角还是钝角。
两解的切点在浮点下并不「恰好一解」
a·sin B = b,此时圆与射线相切,数学上只有一组解。实测取 a = 5、B = 30°、b = 2.5:5 · Math.sin(Math.PI / 6) 算出的是 2.4999999999999996 而不是 2.5,于是 sin A = 0.9999999999999998,反解得 89.99999879258174° 与 90.00000120741826° 两个候选,两者都通过内角和检验。换一条独立路线(把 A 看成「以 C 为心、半径 b 的圆」与「过 B 的射线」的交点)同样数出两个交点:判别式是 3.55e-15 而不是 0,两个参数值相差 1.19e-7。两条路线一致地多数出一个,故单测只能断言两者一致,不能断言数学上的一解。面积有四种算法,在寻常三角形上互相印证,在细长三角形上一同失效;形状判定只需看最大边的对角。测量那一页把仰角、俯角与方位角折成三角形的已知元素,并交代方案选择上的一处敏感度问题。
三角形面积与形状判定
面积的四种算法在寻常三角形上互相印证,在细长三角形上一同失效,而失效的根源不在公式而在边长的换算。形状判定只需看最大边的对角。
实地测量:仰角与方位角
仰角与俯角量在竖直平面内,方位角量在水平面内。测量问题的化归只有一步:把这些角折成某个三角形的已知元素,剩下的交给两条定理。
Kahan 的排序形式救不了细长三角形
(0,0)、(1000,0)、(500, h),精确面积是 500h。h = 1e−2 时海伦的相对误差 3.97e−7、Kahan 1.12e−7,只赢 3.5 倍;h = 1e−3 时两者只差 1 ulp,相对误差同为 5.29e−6;h = 1e−6 时两者一同给出 0。根源不在面积公式:舍入后的两条腰长之和恰好等于底边,三角不等式在浮点下已不成立,高度那点信息在算边长时就丢光了。要精度就不要绕道边长,直接用坐标叉积。测量方案的取舍在几何而不在公式
h = d / (cot α − cot β)。两个仰角一接近,分母趋零,误差就被放大。实测 d = 100 时:α = 30°、β = 60° 给出 h = 86.60,敏感度 dh/dβ = −1.745 每度;α = 30°、β = 30.1° 给出 h = 14367.23,敏感度 −143239.59 每度,放大约 8.2 万倍。后一组里 β 只多读出 0.1°,算出的高度就从 14367 掉到 7205,少了一半。所以两个测站必须拉开到两个仰角差得开,这一条比换公式管用。相关链接
两条定理
- Law of sines — Wikipedia en.wikipedia.org 正弦定理的多种证明、外接圆形式与两解情形。
- Law of cosines — Wikipedia en.wikipedia.org 余弦定理的证明、历史与它对勾股定理的推广。
- Solution of triangles — Wikipedia en.wikipedia.org 已知元素的六种组合各用哪条定理、各有几组解。
-
Circumscribed circle — Wikipedia
en.wikipedia.org
外接圆与外心,
a/sin A = 2R的几何来历。 - Law of tangents — Wikipedia en.wikipedia.org 正切定理,对数表时代解三角形的主力公式。
面积与形状
- Heron's formula — Wikipedia en.wikipedia.org 海伦公式与它的数值稳定版本。
- Triangle Area — Wolfram MathWorld mathworld.wolfram.com 面积的多种表达式, 含坐标行列式形式。
- Miscalculating Area and Angles of a Needle-like Triangle — W. Kahan people.eecs.berkeley.edu 细长三角形上面积与角度的失稳分析, 排序形式的出处。
- Loss of significance — Wikipedia en.wikipedia.org 相近数相减导致有效位抵消的一般机制。
实地测量
- Triangulation (surveying) — Wikipedia en.wikipedia.org 三角测量:由基线与两个角定出目标位置。
- Bearing (navigation) — Wikipedia en.wikipedia.org 方位角的定义:以正北为零、顺时针为正。
- Resection (orientation) — Wikipedia en.wikipedia.org 交会定位,由两站方位角求目标点。
- Theodolite — Wikipedia en.wikipedia.org 经纬仪,水平角与竖直角的实测器具。
- Spherical trigonometry — Wikipedia en.wikipedia.org 球面三角,测量距离大到平面近似失效时的接续。