数学 / 解三角形 · 六个元素里的三个 待审核 4 页

解三角形 · 六个元素里的三个

三角形的六个元素之间只有三个自由度。给定三个元素(三个角除外,那只定形状不定大小),其余三个原则上就被定住了——「解三角形」这个名字说的正是这件事:把剩下的三个算出来。

完成这件事只需两条定理。正弦定理管「边与它的对角」这一对,形式最简单,还顺带给出外接圆半径;余弦定理管「一个角与三条边」,它把勾股定理推广到任意三角形,cosC\cos C 的符号直接给出这个角是锐角、直角还是钝角。两条定理的分工可以按已知元素的类型排成一张表,唯一的麻烦落在「两边及其中一边的对角」上:正弦定理给出 sin A 之后,锐角与钝角两个候选都可能成立。

本系列前两页各走一条定理,把每一类已知条件对应哪条定理、会解出几组解交代清楚;后两页处理派生量。面积那一页把四个公式并排跑:½ab·sin C、海伦公式、Kahan 的稳定形式与坐标叉积,在寻常三角形上它们一致到小数第十几位,在细长三角形上却能一同归零——而失效的根源不在公式,在「顶点坐标换算成边长」那一步。最后一页把仰角、俯角与方位角化归成三角形的已知元素,并量一下两个仰角接近时误差被放大多少倍。

正弦定理与余弦定理

两条定理各管一类对应关系:正弦定理绑「边与对角」,余弦定理绑「一个角与三条边」。两页分别给出证明、适用的已知条件类型,以及「两边及一对角」为何会有两组解。

a/sin A = 2R

正弦定理与两解的来历

三条边与它们的对角之比相等,公共值是外接圆直径。已知两角一边时解唯一,已知两边及其中一边的对角时可能有两组解,而两解的来历是一个圆与一条射线交了两个点。

勾股定理的推广

余弦定理与边角互化

把勾股定理加上一个修正项 −2bc·cos A,就得到对任意三角形都成立的余弦定理。反解出的 cos A 符号直接判定这个角是锐角、直角还是钝角。

两解的切点在浮点下并不「恰好一解」

「两边及一对角」的边界情形是 a·sin B = b,此时圆与射线相切,数学上只有一组解。实测取 a = 5B = 30°b = 2.55 · 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。两条路线一致地多数出一个,故单测只能断言两者一致,不能断言数学上的一解。 面积公式与实地测量

面积有四种算法,在寻常三角形上互相印证,在细长三角形上一同失效;形状判定只需看最大边的对角。测量那一页把仰角、俯角与方位角折成三角形的已知元素,并交代方案选择上的一处敏感度问题。

½ab·sin C · 海伦公式

三角形面积与形状判定

面积的四种算法在寻常三角形上互相印证,在细长三角形上一同失效,而失效的根源不在公式而在边长的换算。形状判定只需看最大边的对角。

基线 · 交会定位

实地测量:仰角与方位角

仰角与俯角量在竖直平面内,方位角量在水平面内。测量问题的化归只有一步:把这些角折成某个三角形的已知元素,剩下的交给两条定理。

Kahan 的排序形式救不了细长三角形

常见说法是「海伦公式在细长三角形上不稳,改用 Kahan 的排序形式即可」。实测只对一小段成立:顶点取 (0,0)(1000,0)(500, h),精确面积是 500hh = 1e−2 时海伦的相对误差 3.97e−7、Kahan 1.12e−7,只赢 3.5 倍;h = 1e−3 时两者只差 1 ulp,相对误差同为 5.29e−6h = 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,少了一半。所以两个测站必须拉开到两个仰角差得开,这一条比换公式管用。

相关链接

两条定理

面积与形状

实地测量