多项式算法1:多项式乘法

本文介绍了多项式的基本概念,包括度数、系数表示和卷积,并详细探讨了点值表示、插值以及如何通过复数单位根优化多项式乘法。重点讲解了离散傅里叶变换(DFT)、快速傅里叶变换(FFT)及其时间复杂度分析,以及FFT的逆变换。最后提到了迭代求解的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多项式简介

对于数域F\mathbb FF,若有∀i∈{ 1,2,3,⋯ ,n}\forall i\in\{1,2,3,\cdots,n \}i{ 1,2,3,,n},则
f(x)=a0+a1x+a2x2+⋯+anx=∑i=1naixif(x)=a_0+a_1x+a_2x^2+\cdots+a_nx=\sum_{i=1}^na_ix^if(x)=a0+a1x+a2x2++anx=i=1naixi

为数域F\mathbb FF上的一个多项式.

多项式的度数

  • 多项式最高项的次数称作多项式的次数

  • f(x)=∑i=1naixif(x)=\sum\limits_{i=1}^na_ix^if(x)=i=1naixi,其中an≠0a_n≠0an̸=0

  • 记作deg f(x)=n\text{deg}\ f(x)=ndeg f(x)=n

多项式的系数表示

对于上述多项式f(x)f(x)f(x),有系数向量a⃗\vec{a}a 与之映射
f(x)=∑i=1naixi⇔a⃗=(a1,a2,a3,⋯ ,an)f(x)=\sum_{i=1}^na_ix^i⇔\vec{a}=(a_1,a_2,a_3,\cdots,a_n)f(x)=i=1naixia =(a1,a2,a3,,an)

我们称a⃗\vec{a}a f(x)f(x)f(x)的系数表示

多项式卷积

首先定义
f(x)=∑i=1naixif(x)=\sum\limits_{i=1}^na_ix^if(x)=i=1naixi

g(x)=∑i=1nbixig(x)=\sum\limits_{i=1}^nb_ix^ig(x)=i=1nbixi

于是他们的卷积形式为
h(x)=(f⋅g)(x)=(∑i=1naixi)(∑i=1nbixi)h(x)=(f\cdot g)(x)=\Bigg(\sum\limits_{i=1}^na_ix^i\Bigg)\Bigg(\sum_{i=1}^nb_ix^i\Bigg)h(x)=(fg)(x)=(i=1naixi)(i=1nbixi)

可得deg h(x)=2n\text{deg}\ h(x)=2ndeg h(x)=2n,于是令
h(x)=∑i=1ncixih(x)=\sum_{i=1}^nc_ix^ih(x)=i=1ncixi

cic_ici满足以下运算律
ci=∑j+k=iajbk=∑j=inajbi−jc_i=\sum_{j+k=i}a_jb_k=\sum_{j=i}^na_jb_{i-j}ci=j+k=iajbk=j=inajbij

系数向量cccaaabbb的卷积,记作
c=a∗bc=a*bc=ab

多项式点值表示

deg f(x)=n\text{deg}\ f(x)=ndeg f(x)=n∀xi∈F (i=(1,2,3,⋯ ,n))\forall x_i\in\mathbb F\ (i=(1,2,3,\cdots,n))xiF (i=(1,2,3,,n))
yi=f(xi)y_i=f(x_i)yi=f(xi)

则我们可以在数域F\mathbb FF的坐标系中绘制出nnn个点
(x1,y1),(x2,y2),(x3,y3),⋯ ,(xn,yn)(x_1,y_1),(x_2,y_2),(x_3,y_3),\cdots,(x_n,y_n)(x1,y1),(x2,y2),(x3,y3),,(xn,yn)
同样与f(x)f(x)f(x)函数有映射关系。

不妨将这nnn个点带入矩阵运算
[1  x1  x12    ⋯  x1n1  x2  x22    ⋯  x2n1  x3  x32    ⋯  x3n⋮    ⋮    ⋮    ⋱  ⋮1  xn  xn2    ⋯  xnn][a1a2a3⋮an]=[y1y2y3⋮yn]\begin{bmatrix}1\ \ x_1\ \ x_1^2\ \ \ \ \cdots\ \ x_1^n\\\\1\ \ x_2\ \ x_2^2\ \ \ \ \cdots\ \ x_2^n\\\\1\ \ x_3\ \ x_3^2\ \ \ \ \cdots\ \ x_3^n\\\\\vdots\ \ \ \ \vdots\ \ \ \ \vdots\ \ \ \ \ddots\ \ \vdots\\\\1\ \ x_n\ \ x_n^2\ \ \ \ \cdots\ \ x_n^n\end{bmatrix}\begin{bmatrix}a_1\\\\a_2\\\\a_3\\\\\vdots\\\\a_n\end{bmatrix}=\begin{bmatrix}y_1\\\\y_2\\\\y_3\\\\\vdots\\\\y_n\end{bmatrix}1  x1  x12      x1n1  x2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值