多项式三角函数
描述¶
给定多项式 f\left(x\right),求模 x^{n} 意义下的 \sin{f\left(x\right)}, \cos{f\left(x\right)} 与 \tan{f\left(x\right)}。
解法¶
首先由 Euler's formula \left(e^{ix} = \cos{x} + i\sin{x}\right) 可以得到 三角函数的另一个表达式:
\begin{aligned}
\sin{x} &= \frac{e^{ix} - e^{-ix}}{2i} \\
\cos{x} &= \frac{e^{ix} + e^{-ix}}{2}
\end{aligned}
那么代入 f\left(x\right) 就有:
\begin{aligned}
\sin{f\left(x\right)} &= \frac{\exp{\left(if\left(x\right)\right)} - \exp{\left(-if\left(x\right)\right)}}{2i} \\
\cos{f\left(x\right)} &= \frac{\exp{\left(if\left(x\right)\right)} + \exp{\left(-if\left(x\right)\right)}}{2}
\end{aligned}
直接按上述表达式编写程序即可得到模 x^{n} 意义下的 \sin{f\left(x\right)} 与 \cos{f\left(x\right)}。再由 \tan{f\left(x\right)} = \frac{\sin{f\left(x\right)}}{\cos{f\left(x\right)}} 可求得 \tan{f\left(x\right)}。
代码¶
多项式三角函数
注意到我们是在 \mathbb{Z}_{998244353} 上做 NTT,那么相应地,虚数单位 i 应该被换成 86583718 或 911660635:i = \sqrt{-1} \equiv \sqrt{998244352} \equiv 86583718 \equiv 911660635 \pmod{998244353}。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |
build本页面最近更新:,更新历史
edit发现错误?想一起完善? 在 GitHub 上编辑此页!
people本页面贡献者:OI-wiki
copyright本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用