\[f(x) = \sum\limits_^ a_i * x^i
\]\((x_0,f(x_0)),(x_1,f(x_1))...(x_, f(x_))\)
首先我們要了解複數 即 $i = \sqrt $
乙個數有實部和虛部 即 \(a = x + y * i ~~ (x, y)\)
原來的實數運算相當於在乙個一維數軸上進行移動,複數則是在二維平面上運動
一句話來說就是摸長相乘,幅角相加
c++中提供了複數模板
#include complex a;
可以像正常數一樣加減乘除
下面預設 \(n\) 是2的整數次冪, 不夠在末尾補0
對於乙個 \(n\) 次多項式我們把乙個單位圓分成 \(n\) 份
\[\omega_n^0, \omega_n^1, \omega_n^2,...,\omega_n^
\]\[\omega_n^k = (cos(\frac k n * 2 * \pi), sin(\frac k n * 2 * \pi))
\]\(\omega_n^k\) 叫做單位根 , \(\omega_n^1\) 就叫做 \(n\) 次單位根 , 根據複數運算 \(\omega_n^k = (\omega_n^1)^k\)
\[\begin \omega_^ = \omega_n^k \\\omega_n^ = - \omega_n ^ k \end
\]都比較顯然把。。。
把 \(\omega_0, \omega_1, \omega_2,...,\omega_\) 帶入多項式,得到 \(f(\omega_0), f(\omega_1), f(\omega_2),...,f(\omega_)\),\(\\) 這種點值表示就是離散傅利葉變換
設 \(y_0, y_1, ... , y_ = f(\omega_n^0), f(\omega_n^1), ... , f(\omega_n^)\)
設函式\[f(x) = \sum\limits_^ y_i * x^i
\]將單位根的倒數 \(\omega_n^, \omega_n^,...\omega_n^\) 帶入 \(f(x)\)
得到\[z_k= f(\omega_n^)= \sum_ ^ y_i * \omega_n^
\]\[= \sum_ ^ \sum_ ^ a^j * (\omega_n^i) ^ j * (\omega_n^) ^ i
\]\[=\sum_ ^ a^j \sum_ ^ (\omega_n^j) ^ i * (\omega_n^)^i
\]\[=\sum_ ^ a^j \sum_ ^ (\omega_n^)^i
\]根據等比數列求和公式
\[z_k = a_k * n
\]\[a_k = \frac n
\]這樣,我們用點值表示推出了係數
已知\[f(x) = \sum a_i * x^i
\]把 \(f(x)\) 分成奇偶兩部分
\[f(x) = (a_0x^0 + a_2x^2 + a_4x ^ 4 + ...) + (a_1 x ^ 1 + a_3 x ^3 + a_5 x ^ 5 + ...)\]設
\[\begin a(x) = a_0x^0 + a_2 x ^ 1 + a_4 x ^2... \\ b(x) = a_1 x ^ 0 + a_3x^1 + a_5x^2...\end
\]\[f(x) = a(x^2) + x * b(x ^ 2)
\]把 \(\omega_n^k (k < \frac n 2)\) 帶入
\[f(\omega_n^k) = a(\omega_n^) + \omega_n^k b(\omega_n^)
\]\[= a(\omega_^k) + \omega_n^k b(\omega_ ^ k)
\]把 \(\omega_n^ ( k < \frac n 2)\) 帶入
\[f(\omega_n^) = a(\omega_n^ * \omega_n^n) -\omega_n^k b(\omega_n^ * \omega_n^n)
\]\[= a(\omega_^) - \omega_n^k b (w_^k)
\]n = 1時直接返回就行了
FFT學習筆記
fft可用於解決一些卷積問題。一般問題形式如下 c a b c i ij 0a i b i j 若把a,b看成兩個次數為n多項式 a x ni 0 a i xi,b x ni 0b i x i 原問題等於兩個多項式相乘,c的次數等於2n 1 乙個次數界為n的多項式a的點值表達為n個點值對所組成的集合...
FFT學習筆記
今天doggu講了,開始覺得這玩意好強啊 後來自己看的時候發現蠻zz wys表示 贊同 所以很多自己覺得遙不可及,一輩子都不可能學會的東西只要慢慢理解,理解好了再把他化為自己的語言,歸到自己的世界裡 就覺得不是很難了,甚至很簡單.當然開始並不是,從 好難啊 到 這麼簡單困大爺我這麼久,之前腦子抽了z...
FFT學習筆記
fft學習筆記 fft,快速傅利葉變換,是一種在 o n log n 的時間內計算兩個多項式乘積的演算法。沒學過的請自行翻閱高中數學選修2 2。給出乙個多項式 f x a 0 a 1x a 2x 2 a nx n 係數表示法 就是用乙個係數序列來表達多項式,顯然係數序列和多項式是一一對應的。f x ...