第30章 多項式與快速傅利葉變換

2021-07-11 10:06:00 字數 2452 閱讀 5602

這一章講了多項式之間的乘法,但僅限於兩個次數界相等並且為2的冪的多項式之間的乘法。運用了快速傅利葉變換及逆快速傅利葉變換演算法。

遞迴的快速傅利葉變換**:

void recursivefft(const

vector

& coefficient,vector

& fftresult)

if(length%2!=0)

throw runtime_error("the number of the coefficient isn't power of 2!");

vector

coefficient0(length/2);

for(int i=0;i!=coefficient0.size();++i)

coefficient0[i]=coefficient[2*i];//將具有偶數下標的係數賦值給陣列coefficient0;

vector

fftresult0(length/2);

recursivefft(coefficient0,fftresult0);//求解陣列coefficient0中儲存係數的離散傅利葉變換;

vector

coefficient1(length/2);

for(int i=0;i!=coefficient1.size();++i)

coefficient1[i]=coefficient[2*i+1];//將具有奇數下標的係數賦值給陣列coefficient1;

vector

fftresult1(length/2);

recursivefft(coefficient1,fftresult1);//求解陣列coefficient1中儲存係數的離散傅利葉變換;

const

double pi=3.141592659;

complex w=complex(1,0);

complex wn=complex(cos(2*pi/length),sin(2*pi/length));

for(int i=0;i!=length/2;++i)

}

迭代的快速傅利葉變換:

void iterativefft(const

vector

& coefficient,vector

& fftresult)}}

}

遞迴的逆快速傅利葉變化:

void recursiveinversefft(const

vector

& fftresult,vector

& result)

vector

fftresult0(length/2);

for(int i=0;i!=fftresult0.size();++i)

fftresult0[i]=fftresult[2*i]; //將fftresult陣列中具有偶數下標的係數賦值給陣列fftresult0;

vector

result0(length/2);

recursiveinversefft(fftresult0,result0);//求解fftresult0陣列中儲存值的逆傅利葉變換;

vector

fftresult1(length/2);

for(int i=0;i!=fftresult1.size();++i)

fftresult1[i]=fftresult[2*i+1];

vector

result1(length/2);

recursiveinversefft(fftresult1,result1);

const

double pi=3.141592659;

complex w=complex(1,0);

complex wn=complex(cos(2*pi/length),-sin(2*pi/length));

for(int i=0;i!=length/2;++i)

}

迭代的逆快速傅利葉變換:

void iterativeinversefft(const

vector

& fftresult,vector

& result)}}

}

最終的逆傅利葉變換**:

void inversefft(const

vector

& fftresult,vector

& result)

}

最終的多項式之間的乘法**:

//陣列a1和a2的大小應為2的冪,同時應相等;

void convolution(vector

& a1,vector

& a2,vector

& convoresult)

多項式問題之六 多項式快速冪

問題 已知乙個次數為 n 1 的多項式 f x 求乙個多項式 g x 滿足 g x equiv f x 這個.你需要多項式exp 直接推一發式子就可以了 g x equiv f x g x equiv e g x equiv e 這樣寫個多項式ln和多項式exp就可以了 include includ...

matlab多項式與非多項式擬合

擬合標準 1 原始資料向量與擬合向量之間的距離最小,該距離的度量一般使用誤差平方和表示,即均方誤差 r q y 22 2 當均方誤差最小時,說明構造的擬合向量與原始向量最為接近,這種曲線擬合的方法稱為最小二乘法 3 計算均方誤差最小時的擬合係數,可以通過微積分中求解極值的方法實現 多項式擬合 1 多...

多項式求逆與多項式開根

閒著沒事幹研究些黑科技 霧 求 a x b x 1 mod x n 其中n為a x b x 的度的較大值 已知a x 求b x b x a x 1 mod x n 假設n 1,則b x a x 常數項在mod p 意義下的的逆元 假設n 1 已知 a x b x 1 mod x n 2 a x b ...