题解:P17237 『STA - R10』介电常数

· · 题解

给出一个可能式子没那么简洁但是比较好想的做法。

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

完整代码没必要给了。