题解:P17237 『STA - R10』介电常数
___PatrickChen___
·
·
题解
给出一个可能式子没那么简洁但是比较好想的做法。
Task 1: a + b
令 \alpha = \arctan a, \beta = \arctan b。
则:
\begin{align*}
a + b &= \tan \alpha + \tan \beta \\
&= \frac{\sin \alpha}{\cos \alpha} + \frac{\sin \beta}{\cos \beta} \\
&= \frac{\sin \alpha \cos \beta + \sin \beta \cos \alpha}{\cos \alpha \cos \beta} \\
&= \frac{\sin (\alpha + \beta)}{\cos \alpha \cos \beta} \\
&= \sin (\alpha + \beta)\sec \alpha \sec \beta \\
\end{align*}
接下来我们拆 \cos(\alpha + \beta),最后再 \arccos 并进行 \sin 得到 \sin(\alpha + \beta)。
\cos (\alpha + \beta) = \cos \alpha \cos \beta - \sin \alpha \sin \beta
有一个减法。这里给出引理:1 - x = 2 \sin^2(\frac{1}{2}\arccos x)。
::::info[引理证明]
令 \theta = \arccos x。
使用半角公式:
\sin(\frac{\theta}{2}) = \sqrt{\frac{1 - x}{2}}
则:
\begin{align*}
\frac{1 - x}{2} &= \sin^2(\frac{\theta}{2}) \\
{1 - x} &= 2\sin^2(\frac{1}{2}\arccos x) \\
Q.E.D.
\end{align*}
::::
那么我们对原式提取公因式:
\begin{align*}
\cos (\alpha + \beta) &= \cos \alpha \cos \beta - \sin \alpha \sin \beta \\
&= \frac{\cos \alpha \cos \beta - \sin \alpha \sin \beta}{\cos \alpha \cos \beta} \cdot \cos \alpha \cos \beta \\
&= (1 - \tan \alpha \tan \beta)\cos \alpha \cos \beta \\
&= (1 - ab) \cos \alpha \cos \beta \\
&= 2 \sin^2(\frac{1}{2}\arccos x)\cos \alpha \cos \beta
\end{align*}
那么最终的式子就是:
a + b = \sin(\arccos((2\sin^2(\frac{1}{2}\arccos ab))\cos \alpha \cos \beta))\sec \alpha \sec \beta
共 20 步。
下文中开头留空一行使得行数恰好等于存储单元编号,方便观察。
// 留空一行
20
2 1 2 // ab
3 3 acos
0 0.5
2 4 5
3 6 sin
2 7 7
0 2
2 8 9 // 1 - ab
3 1 atan // alpha
3 2 atan // beta
3 11 cos // cos alpha
3 12 cos // cos beta
2 13 14
2 10 15 // cos(alpha + beta)
3 16 acos
3 17 sin // sin(alpha + beta)
3 11 sec // sec alpha
3 12 sec // sec beta
2 19 20
2 18 21 // ! a + b
Task 2: ab
令 \alpha = \arcsin a, \beta_1 = \arcsin b, \beta_2 = \arccos b。(为什么 \beta 要开两个下面说)
那么问题就变成了寻找 \sin \alpha \sin \beta_1 这样的东西。什么式子里会有呢?
注意到 \cos 的和差角:
\cos(\alpha + \beta_1) = \cos \alpha \cos \beta_1 - \sin \alpha \sin \beta_1
\cos(\alpha - \beta_1) = \cos \alpha \cos \beta_1 + \sin \alpha \sin \beta_1
可得:
a + b = \sin \alpha + \sin \beta_1 = \frac{1}{2}[\cos(\alpha - \beta_1) - \cos(\alpha + \beta_1)]
但是我们发现我们竟然用不了减法,也取不了相反数。所以 - \beta_1 和 -\cos(\alpha + \beta_1) 都是要拆掉的。
$$-\cos(\alpha + \beta_1) = \cos(\alpha + \beta_1 + \pi)$$
然后观察 $-\beta_1$:
我们考虑利用 $\beta_1$ 的余角。$\beta_1 = \arcsin b$,那么余角就应该是 $\arccos b$,也就是上文提到的 $\beta_2$。
于是 $-\beta_1 = \beta_2 - \frac{\pi}{2}$。
式子就变成了:
$$ab = \frac{1}{2}[\cos(\alpha + \beta_2 - \frac{\pi}{2}) + \cos(\alpha + \beta_1 + \pi)]$$
还剩一个 $\frac{1}{2}x$,考虑和差化积:
$$\sin(\theta + \varphi) + \sin(\theta - \varphi) = 2\sin \theta \cos \varphi$$
对于这个式子,我们令 $\theta = \arcsin x,\varphi = \arccos \frac{1}{4}$,就可以得到 $\frac{1}{2} x$ 了。
所以:
令 $\theta = \arcsin(\cos(\alpha + \beta_2 - \frac{\pi}{2}) + \cos(\alpha + \beta_1 + \pi))$,$ \varphi = \arccos \frac{1}{4}
则:
ab = \sin(\theta + \varphi) - \sin(\theta - \varphi)
其中 \varphi 的值可以使用计算器简单计算得到 1.31811607165282。
仍然是 20 步。
下文中开头留空一行使得行数恰好等于存储单元编号,方便观察。
// 留空一行
20
3 1 asin // alpha
3 2 asin // beta1
3 2 acos // beta2
0 -1.5707963267949 // -pi/2
1 3 5
1 7 6
3 8 cos // cos(alpha + beta2 - pi/2)
0 3.14159265358979 // pi
1 3 4
1 11 10
3 12 cos // cos(alpha + beta1 + pi)
1 9 13
3 14 asin // theta
0 1.31811607165282 // phi
0 -1.31811607165282 // -phi
1 15 16
3 18 sin // sin(theta + phi)
1 15 17
3 20 sin // sin(theta - phi)
1 19 21 // ! ab
完整代码没必要给了。