[多项式前置知识] 单位根 & 复数
从小学我们就知道 \(i=\sqrt{-1}\)。
复数一般写作 \(a+bi\)
复数四则运算
- 加法:
\((a+bi)+(c+di)=(a+c)+(b+d)i\)
减法就是取个相反数。
-
乘法:
\((a+bi)\times (c+di)\)
\(=ac+(ad+bc)i+bd\times i^2\)
\(=(ac-bd)+(ad+bc)i\) -
共轭复数
\(a+bi\) 的共轭复数是 \(a-bi\),它们相乘一定是有理数。 -
除法:(没什么用)
\(\dfrac{a+bi}{c+di}=\dfrac{(ac+bd)+(bc-ad)i}{(c+di)(c-di)}=\dfrac{ac+bd}{c^2+d^2}+\dfrac{bc-ad}{c^2+d^2}i\)
复数表示
每个复数都写作 \(a+bi\) ,所以我们可以在一个直角坐标系表示所有复数。
举个例子,\((x,y)\) 表示的就是 \(x+yi\)。
复数相乘
我们定义复数 \(x=a+bi\) 的模长为 \(|x|\) ,就是 \((a,b)\) 距离远点的距离。
我们定义幅角表示当前点和原点连线后,与第一象限的直线所形成的的夹角。
复数相乘就是模长相乘,幅角相加。
这个证明会在最后。
单位根
对于 \(x^n=1\) 的解集构成单位根。
我们定义 \(\omega_n^k\) 表示第 \(k\) 个 \(n\) 次单位根。
我们看看单位根怎么求。
由于模长相乘的原因,我们希望最后得到的数模长为 \(1\),幅度为 \(0\)。
所以我们希望对于一个 \(x\),\(x^n=1\),还需要 \(x\) 是正实数。这不很明显只有一个解 \(x=1\)。
所以 \(\forall \omega_n^k\),它们模长都是 \(1\)。
所以它们都在单位圆上(和三角函数那个一个意思)。
然后接下来就是幅角的问题了。
知道规律后,我们希望找到一个角度,从幅度为 \(0\) 逆时针转 \(n\) 次后回到幅度为 \(0\)。
那么最小的角度就是 \(\frac{360^\circ}{n}\)。
所以,我们把单位圆的圆周 \(n\) 等分,每一份都可以取作单位根。
所以我们单根怎么求就出来了。然后右转三角函数。
单位根的性质
\(\omega_n^k=-\omega_n^{k+n/2}\)(\(n\) 是偶数)
\(\omega_n^0=1\)
\(\omega_{n}^{n/2}=-1\)
\(\omega_n^k=(\omega_n^1)^k\)
\(\omega_n^j\times \omega_n^k=\omega_n^{j+k}\)
\(\omega_{pn}^{pk}=\omega_{n}^k\)
三角函数
补数学了。
c++ 用的是弧度制,所以角度要转弧度。
- \(\cos(x),\tan(x),\sin(x)\) 没有变化,给入弧度,给出三角函数值。
- \(acos(x),atan(x),asin(x)\) 给入三角函数的值,给出弧度。
所以 \(\pi\) 的求法就很简单了。我们知道 \(\cos \pi=-1\),所以 \(\pi=acos(-1)\)。
复数运算的证明
我们考虑三个点 :\((a,b)\),\((c,d)\),\((ac-bd,ad+bc)\)
\(D(a,b)=a^2+b^2,D(c,d)=c^2+d^2,D(ac-bd,ad+bc)=a^2c^2+b^2d^2+a^2d^2+b^2c^2\)
所以模长相乘得证。
然后我们这样看:
\(\tan\theta_1=\frac{b}{a},\tan\theta_2=\frac{d}{c}\)
\(\tan(\theta_1+\theta_2)=\dfrac{\tan\theta_1+\tan\theta_2}{1-\tan\theta_1\tan\theta_2}=\dfrac{\frac{b}{a}+\frac{d}{c}}{1-\dfrac{bd}{ac}}=\dfrac{ad+bc}{ac-bd}=\tan\theta_3\)
得证。