数学 / 三角函数 · 从角到波 / 积化和差与和差化积 待审核 11 / 13
2sin α cos β · 拍频

积化和差与和差化积

新教材把这组公式降为选学,理由不难理解:它们不含新的几何事实,四条积化和差全部由 和差角公式与二倍角公式 两两相加减得到,四条和差化积只是同一批等式换个字母读。但它们承担的角色与和差角公式不同。和差角公式把两个角接起来,这一组把「乘」与「加」互相翻译;一切「两个频率相乘会生出和频与差频」的说法,源头都在这四行里。

1 · 由和差角公式派生的积

sin(α+β)\sin(\alpha+\beta)sin(αβ)\sin(\alpha-\beta) 的展开式相加,右端的 cosαsinβ\cos\alpha\sin\beta 一项一正一负相消,剩下 2sinαcosβ2\sin\alpha\cos\beta;相减则消去 sinαcosβ\sin\alpha\cos\beta,剩下 2cosαsinβ2\cos\alpha\sin\beta。余弦的两条同理:两式相加消去 sinαsinβ\sin\alpha\sin\beta,相减消去 cosαcosβ\cos\alpha\cos\beta。四条整理如下,合称积化和差

左端 右端 由哪两条相加减
sinαcosβ\sin\alpha\cos\beta 12[sin(α+β)+sin(αβ)]\dfrac{1}{2}\bigl[\sin(\alpha+\beta) + \sin(\alpha-\beta)\bigr] 正弦两条相加
cosαsinβ\cos\alpha\sin\beta 12[sin(α+β)sin(αβ)]\dfrac{1}{2}\bigl[\sin(\alpha+\beta) - \sin(\alpha-\beta)\bigr] 正弦两条相减
cosαcosβ\cos\alpha\cos\beta 12[cos(α+β)+cos(αβ)]\dfrac{1}{2}\bigl[\cos(\alpha+\beta) + \cos(\alpha-\beta)\bigr] 余弦两条相加
sinαsinβ\sin\alpha\sin\beta 12[cos(αβ)cos(α+β)]\dfrac{1}{2}\bigl[\cos(\alpha-\beta) - \cos(\alpha+\beta)\bigr] 余弦两条相减

第四条的写法值得单看。按相减的顺序本该得到 cos(α+β)cos(αβ)=2sinαsinβ\cos(\alpha+\beta) - \cos(\alpha-\beta) = -2\sin\alpha\sin\beta,前面带一个负号;习惯上把两项对调,让右端不带负号,代价是括号里的加减次序与前三条不一致。

右端一律是「12\dfrac{1}{2} 乘一个和或差」,两次求值加一次加减就够,一次乘法都不出现。这条性质在 §6 里有直接的历史用处。

图 1-1 · 积曲线与两条半项曲线的叠加,竖直虚线是读数位置 α\alpha。可切换公式、拖动 β\betaα\alpha,读数并排给出左端的积、右端的半和差以及两者的浮点偏差。

2 · 换元后的和差化积

上表的左端是积、右端是和差。要把和差写成积,只需把四条倒过来读,再换一组字母:令 x=α+βx = \alpha + \betay=αβy = \alpha - \beta,则 α=x+y2\alpha = \dfrac{x+y}{2}β=xy2\beta = \dfrac{x-y}{2}。代入即得和差化积

左端 右端
sinx+siny\sin x + \sin y 2sinx+y2cosxy22\sin\dfrac{x+y}{2}\cos\dfrac{x-y}{2}
sinxsiny\sin x - \sin y 2cosx+y2sinxy22\cos\dfrac{x+y}{2}\sin\dfrac{x-y}{2}
cosx+cosy\cos x + \cos y 2cosx+y2cosxy22\cos\dfrac{x+y}{2}\cos\dfrac{x-y}{2}
cosxcosy\cos x - \cos y 2sinx+y2sinxy2-2\sin\dfrac{x+y}{2}\sin\dfrac{x-y}{2}

四条的右端都是「两倍的、半和角与半差角的两个函数之积」。负号只出现在余弦相减那条,它正对应上表第四条被对调掉的那个负号。

警示 · 和差化积要求两项同名。sinx+cosy\sin x + \cos y 直接套公式无从下手,须先用诱导公式换族,写成 sinx+sin(90°y)\sin x + \sin(90° - y),此后半和角是 x+90°y2\dfrac{x + 90° - y}{2} 而不是 x+y2\dfrac{x+y}{2}。同理,sinx+sin2y\sin x + \sin 2y 是可以化的,两项虽然角不同但同名,公式对角本身没有任何要求。

3 · 拍频与包络

设两个频率相近的正弦,振幅相同:y=asin(2πf1t)+asin(2πf2t)y = a\sin(2\pi f_1 t) + a\sin(2\pi f_2 t)。和差化积的第一条把它改写成

y=2acos(2πf1f22t)sin(2πf1+f22t)y = 2a\cos\left(2\pi \cdot \frac{f_1 - f_2}{2} \cdot t\right)\sin\left(2\pi \cdot \frac{f_1 + f_2}{2} \cdot t\right)

右端是一个频率为 f1+f22\dfrac{f_1+f_2}{2} 的正弦,乘上一个频率只有 f1f22\dfrac{|f_1-f_2|}{2} 的余弦。两个频率相近时后者远慢于前者,于是同一个式子有了两种读法:快的那个因子是载波 (carrier),定音高;慢的那个因子给出振幅的缓慢起伏,称为包络 (envelope)。

包络与拍的倍数关系容易记错。包络因子的频率是 f1f22\dfrac{|f_1-f_2|}{2},但听感响应的是振幅的绝对值,cos|\cos| 的周期只有 cos\cos 的一半,每秒的响度极大值是 f1f2|f_1 - f_2| 次,这个数才叫拍频 (beat frequency)。440 Hz 与 443 Hz 同时响,载波是 441.5 Hz,包络因子的频率是 1.5 Hz,而每秒听到的「嗡」是 3 次。调音师据此把连续的音高误差读成一个整数:数一秒钟响几下,就知道差几赫兹。

振幅不等时这条路走不通,两项提不出公因子。改把两项当同频相量相加(合成规则见 辅助角公式与三角式的最值 §1),包络是

a12+a22+2a1a2cos(2π(f1f2)t)\sqrt{a_1^2 + a_2^2 + 2a_1a_2\cos\bigl(2\pi(f_1-f_2)t\bigr)}

它在 a1+a2a_1 + a_2a1a2|a_1 - a_2| 之间摆动,等幅只是下界为零的特例。实际后果是:两音强度不等时拍点并不静音,只是变弱。取 a1=1a_1 = 1a2=0.9a_2 = 0.9f1=440f_1 = 440f2=443f_2 = 443,包络的下界是 0.10.1;按载波周期逐个取 y|y| 的峰值,实测到的谷是 0.100065,与 a1a2|a_1 - a_2| 对得上。调制深度 maxminmax+min\dfrac{\max - \min}{\max + \min} 此时是 0.90.9,等幅时才是 11

图 3-1 · 两个正弦的叠加波形与包络。可调两个频率与两个振幅,读数给出载波频率、包络频率、拍频与调制深度;两个振幅相等时包络触零,不等时下界是振幅之差。

4 · 相乘生出的和频与差频

积化和差反过来读,说的是两个频率相乘会生出和频与差频,而且只生这两个。超外差接收机 (superheterodyne) 用的就是这一行:把收到的射频信号 cos(2πfst)\cos(2\pi f_s t) 与本机振荡 cos(2πfot)\cos(2\pi f_o t) 相乘,第三条给出

cos(2πfst)cos(2πfot)=12[cos(2π(fs+fo)t)+cos(2π(fsfo)t)]\cos(2\pi f_s t)\cos(2\pi f_o t) = \frac{1}{2}\Bigl[\cos\bigl(2\pi(f_s+f_o)t\bigr) + \cos\bigl(2\pi(f_s-f_o)t\bigr)\Bigr]

滤掉频率高的那一项,剩下的差频与调谐到哪个电台无关,只取决于 fsfof_s - f_o。把本机振荡随调谐同步移动,让这个差保持恒定,后级的放大与滤波就可以永远工作在同一个固定频率上。

同一条等式在积分里读成另一件事。sinmxsinnxdx\int \sin mx \sin nx \, \mathrm{d}x 之所以算得出来,是因为积化和差先把被积函数降成两个余弦,而余弦的原函数是现成的。mnm \ne n 时这个积分在一个整周期上为零,m=nm = n 时不为零——三角函数系的正交性由此而来,它是傅里叶级数能逐项定系数的全部依据。这组公式不只是和差角公式的推论,它是频谱分析的第一块砖。

5 · 相近角相减的精度

和差化积还是一条数值上更稳的算路。cosxcosy\cos x - \cos yxxyy 相近时是典型的相消:两个各约 0.8660.866 的数相减得到 101110^{-11} 量级的结果,双精度里两个余弦值各自的舍入误差约 101610^{-16},相对于结果已是百万分之几。右端 2sinx+y2sinxy2-2\sin\dfrac{x+y}{2}\sin\dfrac{x-y}{2} 不做减法,精度不受影响。

原先以为这条优势无条件成立,实测把它修正了。以半和 30°30° 与半差 hh 作输入、hh10910^{-9} 度时,参照值由 60 位定点 BigInt 的泰勒级数离线算出,是 1.7453292519943295×1011-1.7453292519943295 \times 10^{-11}:直接相减给出 -1.7453261058619773e-11,只对到 5.7 位有效数字;和差化积给出 -1.745329251994329e-11,对到 15.7 位,相差整整十位。但若输入给的是 x=30°x = 30°y=x+109°y = x + 10^{-9}°,半差角要由 xy2\dfrac{x-y}{2} 现算,相消原样搬到了这一步,两条算路分别只对到 5.3 位与 7.1 位,差不到两位。和差化积搬走的是函数值上的相消,搬不走角上的相消。

没有相消的普通格点上,两端的偏差就只是最后几位。α, β\alpha,\ \beta1° 为步长扫遍 [360°, 360°][-360°,\ 360°]721×721721 \times 721 个格点,四条积化和差两端的最大偏差是 1.6653345369377348e-15,合 7.5 个 Number.EPSILON;同样的格点上四条和差化积一侧是 2.6645352591003757e-15,合 12 个,且有 16 个格点并列取到。两侧不对称的原因是和差化积的左端 sinx+siny\sin x + \sin y 本身就多一次加法,右端却只有乘法。

6 · 对数发明之前的乘法捷径

对数表出现之前,天文计算里最贵的运算是多位数乘法。当时的办法是把乘法转成查表加减:要算 aba \cdot b,先按比例把两数缩进 [1, 1][-1,\ 1],取 α=arccosa\alpha = \arccos aβ=arccosb\beta = \arccos b,再用第三条

ab=cosαcosβ=12[cos(αβ)+cos(α+β)]ab = \cos\alpha\cos\beta = \frac{1}{2}\bigl[\cos(\alpha-\beta) + \cos(\alpha+\beta)\bigr]

三次查表、两次加减、一次折半,代替一次多位数乘法。这套方法叫 prosthaphaeresis,词源是希腊语的「加减」。1614 年 Napier 的对数表问世后它很快退场——对数把乘法变成一次加法,比这条路还短一步。

把它归给哪一位发明者,文献说法不一:Wittich 与 Bürgi 各有主张,另有一说上溯到 10 世纪的 Ibn Yunis,但缺少可靠的直接证据[4]。能确定的只是 1580 年代它已在第谷·布拉赫的天文台上例行使用。这段历史值得写进正文:它是「把难做的运算翻译成好做的运算」这条思路最早的一次大规模实践,而积化和差正好是那本字典。

7 · 参考文献

  1. List of trigonometric identities. Wikipedia. Product-to-sum 与 sum-to-product 两节给出本页八条公式的完整清单。https://en.wikipedia.org/wiki/List_of_trigonometric_identities
  2. Beat (acoustics). Wikipedia. 拍的成因、拍频等于频率差,以及不等幅时的调制深度。https://en.wikipedia.org/wiki/Beat_(acoustics)
  3. Heterodyne. Wikipedia. 混频器如何由乘法生出和频与差频,以及超外差接收机的结构。https://en.wikipedia.org/wiki/Heterodyne
  4. Prosthaphaeresis. Wikipedia. 积化和差用作乘法捷径的历史,含归属之争与第谷天文台的使用记录。https://en.wikipedia.org/wiki/Prosthaphaeresis
  5. Thoren, V. E. (1988). Prosthaphaeresis revisited. Historia Mathematica, 15(1), 32–39.
  6. Envelope (waves). Wikipedia. 包络的定义与相量合成给出的一般形式。https://en.wikipedia.org/wiki/Envelope_(waves)