zoukankan      html  css  js  c++  java
  • 傅里叶变换的由来及复数下的傅里叶变换公式证明

    1、  考虑到一个函数可以展开成一个多项式的和,可惜多项式并不能直观的表示周期函数,由于正余弦函数是周期函数,可以考虑任意一个周期函数能否表示成为一系列正余弦函数的和。假设可以,不失一般性,于是得到:

      f(t)= A0+∑(n=1,∞) Ansin(nωt+Φn)

    2、  将后面的正弦函数展开:

        Ansin(nωt+Φn)=AnsinΦncosnωt+AncosΦnsinnωt

    令 a0/2 =A0,an = AnsinΦn,bn=AncosΦn,x=ωt,可得

       f(x)= a0/2+∑(n=1,∞)(ancosnx+bnsinnx)

    对两边在区间[-π,π]积分,得

       ƒ(-π->π) f(x)dx = ƒ(-π->π)a0/2dx +ƒ(-π->π)(∑(n=1,∞) (ancosnx+bnsinnx))dx

       ƒ(-π->π) f(x)dx = ƒ(-π->π)a0/2dx +∑(1 -> ∞) (ƒ(-π->π)(ancosnx+bnsinnx)dx)

       ƒ(-π->π) f(x)dx = ƒ(-π->π)a0/2dx +∑( 1 -> ∞) [anƒ(-π->π)cosnxdx+bnƒ(-π->π)sinnxdx]

       ƒ(-π->π) f(x)dx =a0/2 * 2π  +∑( 1 -> ∞) [anƒ(-π->π)cosnxdx+bnƒ(-π->π)sinnxdx]

     当n=0時

      ƒ(-π->π) f(x)dx = ao * π

    于是我们求出了a0的值。

          ao  = ƒ(-π->π) f(x)dx /π

     

    三角函数系{1,cosx,sinx,cos2x,sin2x,……,cosnx,sinnx,……}  -------------- ⑴

    在区间[-π,π]上正交,就是指在三角函数系⑴中任何不同的两个函数的乘积在区间[-π,π]上的积分等于0,即
    ∫[-π->π]cosnxdx=0
    ∫[-π->π]sinnxdx=0
    ∫[-π->π]sinkxcosnxdx=0
    ∫[-π->π]coskxcosnxdx=0
    ∫[-π->π]sinkxsinnxdx=0
    (k,n=1,2,3.....,k≠n)

    下面利用三角函数正交性求出an,在原函数两端乘以cos(nx)再进行积分。

     ƒ(-π->π) f(x)*cosnx dx = ƒ(-π->π)a0/2 * cosnx dx +ƒ(-π->π)(∑(n=1,∞)(ancosnx*cosnx + bnsinnx*cosnx))dx

     ƒ(-π->π) f(x)*cosnx dx = a0/2 ƒ(-π->π) cosnx dx +∑(n=1,∞)[ an ƒ(-π->π)cosnx*cosnxdx + bn ƒ(-π->π)sinnx*cosnxdx])

     根据上面提到的性质,可知 ƒ(-π->π) cosnx dx =0,ƒ(-π->π)sinnx*cosnxdx =0, 因此

       ƒ(-π->π) f(x)*cosnx dx = an ƒ(-π->π)[cosnx*cosnxdx]

      ƒ(-π->π) f(x)*cosnx dx = an  ƒ(-π->π)[1+cos2nx)/2 dx]

         ƒ(-π->π) f(x)*cosnx dx = an [  ƒ(-π->π)1/2 dx +  ƒ(-π->π)(cos2nx/2 )dx 

         ƒ(-π->π) f(x)*cosnx dx = an ( π + 1/2 *( sin2nx|(-π->π))

          ƒ(-π->π) f(x)*cosnx dx = an  π

      得  an = 1/π ƒ(-π->π) f(x)*cosnx dx (n=1,2,3.....)

      再用sin(nx)乘,再进行积分就会得到bn,

          bn = 1/π ƒ(-π->π) f(x)*sinnx dx (n=1,2,3.....)

    于是乎得到了一个任意函数展开成为正余弦函数的通用表达式,同时为什么会出现A0/2而不是直接的A0的原因也很明朗:就是让整个表达式更具有通用性,体现一种简洁的美。

    通过了以上的证明过程,应该很容易记住傅里叶变换的公式。

    到此为止,作为一个工程人员不用再去考虑了,可是作为每一个数学家他们想的很多,他们需要知道右侧的展开式为什么收敛于原函数,这个好难,有个叫Dirichlet的家伙证明出如下结论:

     

    这里涉及两个函数
    (1)事先给定一个函数f(x)
    (2)根据f(x)构造一个Fourier级数,这是一个形式上的无穷项的和,和函数F(x)不一定存在.所以要判断它是否收敛.如果不收敛,f(x)与F(x)就毫无关系.
    (3)如果判断出Fourier级数收敛,其和函数为F(x),而F(x)也不一定是f(x)
    (4)Dirichlet定理指出,满足收敛定理2条件时,和函数F(x)恰等于f(x)在点x处左右极限的平均值.
    用一个生活中的例子来阐明这过程:
    (1)事先给您一只动物(如小兔)的旧衣服,小兔的旧衣服就是f(x)
    (2)您根据小兔的旧衣服为它做一件新衣服,新衣服就是F(x),但是衣服F(x)未必能穿(未必收敛)
    (3)即使能穿(收敛),新旧衣服也不一定大小完全一样(f与F未必相同)
    (4)如果满足一定条件,新衣服F(x)在某些地方(f(x)连续点)与旧衣服f(x)完全相同.新衣服F(x)在某些地方(f(x)的不连续点,像衣服的破洞)与旧衣服f(x)是不相同的.

     

    至此以2π为周期的傅里叶变换证明完毕,只不过我们经常遇到的周期函数我想应该不会这么凑巧是2π,于是乎任意的一个周期函数如何知道其傅里叶变换呢,数学向来都是一个很具有条理性的东西,任意周期的函数的傅里叶变换肯定也是建立在2π周期函数的基础之上的。

    一个以2L为周期的函数f1(x)如何进行傅里叶变换?因为z=2π*x/(2L)=πx/L,可以用 sin z(即sinπx/L)作基函数,用πx/L替换傅里叶变换右边表达式各项中的x,不难看出就是对原f(x)图像沿x轴进行缩放L/π倍,显然这个求和后的新图像就是f1(x), 于是乎得到如下公式:

     f(x)= a0/2+∑(n=1,∞)(ancos n zx +bnsin n zx) = a0/2+∑(n=1,∞)(ancosnπx/L+bnsinnπx/L)     

    同前面的计算方法,可得

          an =  1/L ƒ(-L->L) f(x)*cosn πx/L dx      // 基函数为sin πx/L

          bn =  1/L ƒ(-L->L) f(x)*sinn πx/L dx      // 基函数为sin πx/L

    傅里叶函数看起来其实还是比较复杂的,有没有一种更简单的表达形式来表示呢。既然提出这个问题,肯定是有的,我个人猜想肯定是复变 
    函数大师在挖掘复变函数的时候,用复变函数去套用经典的傅里叶变换,偶然间发现的••••••
    一个基本的欧拉公式eiθ=cosθ +i*sinθ,这个很容易可以从复数的几何意义上得知,我们通过取两个互为相反数的θ可以得到两个式子, 
    进而可以得到cos 和 sin 的复数表达形式:

           fT(t)= a0/2+∑(n=1,∞)(ancosnω0t+bnsinnω0t)     ...........(L)

           ejθ=cosθ +j*sinθ                     (1)

           ej-θ= cos-θ +j*sin-θ=  cosθ-j*sinθ    (2)

          (1)+( 2),得

             cosθ = ( ejθ+ej-θ)  /2             (3)

          据(1)和(3),得

             sinθ = ( ejθ-ej-θ)  /2j

          则(L)可变形为

             fT(t) = a0/2+ ∑(n=1,∞)( an  ( 1/2 * (e(jnω0t)+e(-jnω0t)))+ bn( 1/2 * e(jnω0t)-e(-jnω0t)))) 

                  = a0/2+ ∑(n=1,∞)( an  ( 1/2 * (e(jnω0t)+e(-jnω0t)))- bn( j/2 * e(jnω0t)-e(-jnω0t)))) 

                  = a0/2 + ∑(n=1,∞)( (an-jbn)/2 e(jnω0t)+(an+jbn)/2 e(-jnω0t))

          令 c0 = a0/2 = 1/T  ƒ(-T/2->T/2) fT(t)dt 

            令  cn = (an-jbn)/2 = 1/T [ ƒ(-T/2->T/2) fT(t) cosnω0t dt - j ƒ(-T/2->T/2) fT(t) sinnω0t dt]

                   = 1/T  ƒ(-T/2->T/2)fT(t)(cosnω0t- jsinnω0t)dt  = 1/T  ƒ(-T/2->T/2)fT(t)(cos-nω0t + jsin-nω0t)dt 

                   = 1/T  ƒ(-T/2->T/2)fT(t) e(-jnωot) dt  ( n=1,2,3...)

              同理  c_n = (an+jbn)/2 = 1/T [ ƒ(-T/2->T/2) fT(t) ejnω0t dt    ( n=1,2,3...)

                   cn = 1/T  ƒ(-T/2->T/2)fT(t) e-jnω0t dt  ( n =±1,±2,±3,......) 

               据 ωon=ωn 得 

                  cn == 1/T  ƒ(-T/2->T/2)fT(t) e(-jωnt) dt  

                  看出来了么,在不同波形图(f(x)表达式不同)中,同一个正弦函数曲线(ωn 或频率相同),它们的系数不同,是因为f(x)不同,无它。

                  fT(t) = c0+∑(n=1,∞)[ cn ejωnt +c_n e-jωnt ]

                即

                  fT(t) = c0+∑(n=-∞,∞)[ cn ejωnt]       ( n =0,±1,±2,±3,......)              

  • 相关阅读:
    [leetCode]945.使数组唯一的最小增量
    [leetCode]974. 和可被 K 整除的子数组
    [leetCode]1035.不相交的线
    [leetCode]面试题 10.01. 合并排序的数组
    [leetCode]面试题04.二维数组
    [面试题03]数组中的重复数字
    [leetCode]169.多数元素
    [leetCode]160.相交链表
    [leetCode]155.最小栈
    POJ 2127 Greatest Common Increasing Subsequence
  • 原文地址:https://www.cnblogs.com/skyofbitbit/p/4437648.html
Copyright © 2011-2022 走看看