向量卷積與多項式乘法

2022-07-17 16:18:09 字數 1003 閱讀 5194

對於兩個離散序列f[n],g[m],可以將卷積定義為

s[k]=∑f[j]g[k-j]

回憶我們學過的多項式乘法,比如(x2+2x+1)(3x+2)

一般的計算方式是

(x2+2x+2)(3x+2) = (x2+2x+2)*3x+(x2+2x+2)*2

= 3x3+6x2+6x+2x2+4x+4

合併同類項之後

得到 3x3

6x2+2x2

6x+4x

4----------------

3x3+8x2+10x+4

從線性代數的角度來看,多項式可以構成乙個向量空間,通過選定一組基底

就可以很容易將多項式與某維度的座標向量相對應,這裡採用降冪

1.(x2+2x+2)—>(1 2 2) ;

2.(3x+2)-

à(3 2)

通過上面的卷積定義,可以得到向量卷積的定義

對於長度為m的向量u與長度為n的向量v的卷積

w(k)= ∑(u(j)*v(k+1-j))

向量w的長度為m+n-1

ps:向量u對應的多項式最高次冪為

xm-1

,向量v的是

xn-1

,兩個多項式相乘之後最高次冪為

xm+n-2

,最低次冪為x0

,也就是1,所以得到的長度為m+n-1

根據上面的向量卷積的形式來重新處理座標向量1,2(將1倒置)

(2 2 1)*(3 2)

計算方式:

a的每一行都代表序列(2 2 1)移動一位,然後與x做內積,通過一系列的向量內積,這樣也得到了多項式相乘的結果。

多項式乘法

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld et reo 吃完了元宵,又開始思考數學問題了。這次他拿了兩個多項式 p mathscrp 和 q mathscrq 他知道這兩個多項式的乘積也是乙個多項式,但他不...

多項式乘法

l1和l2是兩個帶頭結點的單鏈表表示的多項式,編寫演算法計算兩個多項式的乘積,運算結果仍用單鏈表進行儲存 include using namespace std typedef struct lnode lnode,linkedlist 查詢計算結果應該插入的位置 param l 鍊錶的頭結點指標 ...

FFT與多項式乘法

鑑於網上關於fft作用的文章並不少,這裡盡量少說廢話,直接說如何理解和具體實現 關於多項式乘法,通常是用係數乘積的方式,這樣的時間複雜度是o n 2 n為多項式項數。這可以滿足大多數的乘法需求,然而當位數大於1000時,此法用起來就顯得捉襟見肘 於是我們便有了偉大的fft來解決這個問題 係數表示法 ...