让高中生理解卷积——从多项式乘法开始

1.从多项式乘法到卷积和

这里有两个多项式:

\begin{align*} \\f(x)&=...+a_mx^m+a_{m-1}x^{m-1}+a_{m-2}x^{m-2}+...+a_1x+a_0+a_{-1}x^{-1}+... \\ g(x)&=...+b_nx^n+b_{n-1}x^{n-1}+b_{n-2}x^{n-2}+...+b_1x+b_0+b_{-1}x_{-1}+... \end{align*}

两个多项式相乘

h(x)=f(x)\cdot g(x)=...+c_rx^r+c_{r-1}x^{r-1}+c_{r-2}x^{r-2}+...+c_1x+c_0+c_{-1}x^{-1}+...

看一下h(x)的0次方项的系数是怎么算的

c_0=...+a_{-2}b_2+a_{-1}b_1+a_0b_0+a_1b_{-1}+a_2b_{-2}+...

你会发现,在求c0时,这个等式的右边的每一项都是数列\{a_m\}中的某一项和数列\{b_n\}中的某一项相乘,而且任何一对乘在一起的a和b,它们在数列中的下标的和,刚好是所求的c的下标0。

同样的,h(x)的3次方项

\begin{align*} c_3&=...+a_{-2}b_5+a_{-1}b_4+a_0b_3+a_1b_2+a_2b_{1}+a_3b_0+a_4b_{-1}+a_5b_{-2}...\\ &=\sum _{i=-\infty}^{\infty}a_ib_{3-i} \end{align*}

同样的,这个等式的右边的每一项都是数列\{a_m\}中的某一项和数列\{b_n\}中的某一项相乘,而且任何一对乘在一起的a和b,它们在数列中的下标的和,刚好是所求的c的下标3。

再举一个负数次方项的例子,h(x)的-2次方项

\begin{align*} c_{-2}&=...+a_{-4}b_{2}+a_{-3}b_{1}+a_{-2}b_0+a_{-1}b_{-1}+a_0b_{-2}+a_1b_{-3}+...+a_{2}b_{-4}+...\\ &=\sum _{i=-\infty}^{\infty}a_ib_{-2-i} \end{align*}

这个式子当中,任何一对乘在一起的a和b,它们在数列中的下标的和,刚好是所求的c的下标-2

然后,推广到一般情况

\begin{align*} c_{r}&=...+a_{r+2}b_{-2}+a_{r+1}b_{-1}+a_{r}b_0+a_{1}b_{r-1}+a_2b_{r-2}+a_3b_{r-3}+...+a_{r-1}b_{1}+a_rb_0+a_{r+1}b_{-1}+...\\ &=\sum _{i=-\infty}^{\infty}a_ib_{r-i} \end{align*}

如果把数列\{a_m\}\{b_n\}当作序列,这就是序列a和序列b的卷积和公式

由此可以推出结论:

两个多项式f与g相乘的结果的系数序列,就是f和g各自的系数序列的卷积。

卷积其实是一种“附带了位置信息”的乘法。

P.S.

1.实际上,在matlab中以系数向量表示的两个多项式相乘,用到的函数conv(),其实就是卷积函数,"conv"是“卷积”的英文"convolution"的缩写

2.如果把以上所有式子中的x化妆成为z,上述推导过程其实就是论证Z变换的性质之一“时域卷积对应于z域相乘”的过程

2.从离散的卷积和到连续的卷积积分——matlab的启发

再举一个连续的例子:

这里有两个函数

y_1= \left \{ \begin{aligned} &sin\ x\qquad (0<x \leq 2\pi) \\ &0\qquad others\\ \end{aligned} \right. \qquad(1)

y_2= \left \{ \begin{aligned} &cos\ x\qquad (0<x\leq 2\pi) \\ &0\qquad others\\ \end{aligned} \right. \qquad (2)

现在我们先看一下在电脑如何画出这两个图的

新版的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)相乘,得到一个新的多项式,再取其各项系数作为结果向量,再按照上面注释提到的方法画图。

\begin{align*} \\Y_1(z)&=y_1\left ( 0 \right )z^0+y_1\left ( 0.01 \right )z^{0.01}+y_1\left ( 0.02 \right )z^{0.02}+...+y_1\left ( 3.14 \right )z^{3.14} \\ &=sin\left ( 0 \right )z^0+sin\left ( 0.01 \right )z^{0.01}+sin\left ( 0.02 \right )z^{0.02}+...+sin\left ( 3.14 \right )z^{3.14} \qquad (3)\\ \\ Y_2(z)&=y_2\left ( 0 \right )z^0+y_2\left ( 0.01 \right )z^{0.01}+y_2\left ( 0.02 \right )z^{0.02}+...+y_2\left ( 3.14 \right )z^{3.14} \\ &=cos\left ( 0 \right )z^0+cos\left ( 0.01 \right )z^{0.01}+cos\left ( 0.02 \right )z^{0.02}+...+cos\left ( 3.14 \right )z^{3.14}\qquad (4)\end{align*}

在这里可以推广一下:

任何一个连续的函数图像,在其定义域内都可以看作是步长无限趋于0的向量x作为自变量“一个个地带入函数y=f(x)”得到的
y的值所构成的(x,y)的点连成的。这些y也能构成向量。如果y的定义域是(-\infty,+\infty)的话,x利用matlab中的写法就是

-\infty:dx:+\infty\qquad dx=\lim \Delta x

把f(x)写成类似于(3)的多项式就是:

F(z)=...+f\left ( -dx \right )z^{-dx}+f\left ( 0 \right )z^{0}+f\left ( dx \right )z^{dx}+f\left ( 2dx \right )z^{2dx}+...\qquad (5)

卷积积分就是类似于式子(5)的两个多项式相乘,再把得到的多项式的各项系数提取出来,即

g(x)=f_1(x)*f_2(x)=\int_{-\infty}^{+\infty}f_1(x) \cdot f_2(r-x) dr

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值