1.从多项式乘法到卷积和
这里有两个多项式:
两个多项式相乘
看一下h(x)的0次方项的系数是怎么算的
你会发现,在求c0时,这个等式的右边的每一项都是数列中的某一项和数列中的某一项相乘,而且任何一对乘在一起的a和b,它们在数列中的下标的和,刚好是所求的c的下标0。
同样的,h(x)的3次方项
同样的,这个等式的右边的每一项都是数列中的某一项和数列中的某一项相乘,而且任何一对乘在一起的a和b,它们在数列中的下标的和,刚好是所求的c的下标3。
再举一个负数次方项的例子,h(x)的-2次方项
这个式子当中,任何一对乘在一起的a和b,它们在数列中的下标的和,刚好是所求的c的下标-2
然后,推广到一般情况
如果把数列和当作序列,这就是序列a和序列b的卷积和公式
由此可以推出结论:
两个多项式f与g相乘的结果的系数序列,就是f和g各自的系数序列的卷积。
卷积其实是一种“附带了位置信息”的乘法。
P.S.
1.实际上,在matlab中以系数向量表示的两个多项式相乘,用到的函数conv(),其实就是卷积函数,"conv"是“卷积”的英文"convolution"的缩写
2.如果把以上所有式子中的x化妆成为z,上述推导过程其实就是论证Z变换的性质之一“时域卷积对应于z域相乘”的过程
2.从离散的卷积和到连续的卷积积分——matlab的启发
再举一个连续的例子:
这里有两个函数
现在我们先看一下在电脑如何画出这两个图的
新版的matlab有fplot()函数,可以实现像几何画板或者是Geogebra之类直接将函数表达式转化为图像的功能。
但是老版本的matlab,还是要通过离散进行逼近——这是更接近于计算机本质的表示方法,就跟计算机画圆一样
%“%”符号后面跟着注释
x=0:0.01:pi; %向量x=(0,0.01,0.02,...,3.13,3.14) ,记住这种写法
%中间的
%跟python不同,matlab里的步长是写在中间的
y1=sin(x); %将x的每一个值代入正弦函数,得到对应的y向量(数列)
%即 向量 y1=(sin(0),sin(0.01),sin(0.02),...sin(3.13),sin(3.14))
y2=cos(x); %同样地,将x的每一个值代入余弦函数,得到对应的y向量(数列)
%即 向量 y2=(cos(0),cos(0.01),cos(0.02),..cos(3.13),cos(3.14))
plot(x,y1); %将向量x中每一个维度的值与对应的y在同一维度的值,即(0,sin(0)),(0.01,sin(0.01))...,(3.14,sin(3.14))这些点
%在坐标系中标出,然后用折线连起来
%由于x内的相邻两项的值都“挨得很近”,相差很小(即步长很小)
%画出来的图形与真正的正弦函数“看不出区别”
如果计算机需要画出y1(x)和y2(x)的卷积积分,计算机就会试着计算上述代码段中向量y1和向量y2的卷积和,就是拿出下面两个多项式,即(3)和(4)相乘,得到一个新的多项式,再取其各项系数作为结果向量,再按照上面注释提到的方法画图。
在这里可以推广一下:
任何一个连续的函数图像,在其定义域内都可以看作是步长无限趋于0的向量x作为自变量“一个个地带入函数y=f(x)”得到的
y的值所构成的(x,y)的点连成的。这些y也能构成向量。如果y的定义域是的话,x利用matlab中的写法就是
把f(x)写成类似于(3)的多项式就是:
卷积积分就是类似于式子(5)的两个多项式相乘,再把得到的多项式的各项系数提取出来,即