转贴: 傅立叶级数(Fourier Series) 推导

转自:

http://hi.baidu.com/hinus/blog/item/e9885e0eca9b30c97acbe173.html

 

 

傅立叶级数实在是我最痛恨的一种学问之一,来得突兀之至,一点兆头都没有,课本上就突然告诉我说世界上的函数啊,都可以表示成这样一种级数。TMD, 为什么?每每想到这里,就不由得怒从心头起,恶向胆边生,总想把数学分析课本付之一炬。在烧与忍住不烧之间徘徊挣扎了苦久,终于数学分析这门课也已经结束 了,后来也就不再去翻那些比星爷还无厘头的书了。可笑——世界上最精致最讲究逻辑的一门学问,在中国变成了最没有道理,最蛮横,最无厘头的学问,然后还看 到好多大学的老师抱怨学生不认真学习。我真想请问,这种背结论的课我学好了干嘛?如果只是徒然背结论,那一本数学手册岂不比花偌大时光去背这些无厘头的东 西好多了?老实说,傅立叶级数我当年也曾好好地看过几回,可是实在是搞不明白他是怎么来的。翻遍了书店和图书馆也不见有讲的。终于还是在外国人的教材上看 到了原来傅立叶级数是大大的有道理的。

这本书名字叫做<patial differential equations an introduction>,就是偏微分方程导论。作者是Walter A.Strauss

如果你也真正疑惑于傅立叶级数这样一种玩竟儿,极力推荐看一下。我就把里面比较重要的一些点选译在下面,希望能说得明白,当然下面的文字中只有最关键的文字才是书上的,其他的更多的是我自己的理解,还请各位看官多多指正。

还是从牛顿说起吧,微积分是牛顿还 是莱布尼兹发明的,历史上有很大的争论,但是,我个人认为,即便是莱布尼兹所发明,牛顿只是拿来用一下,老牛还是很牛的。因为他写了原理这本书,把数学分 析的方法引入了物理问题的研究之中,这确实可以说是一项伟大的工作了。我没读过原理这本书,据说牛顿第二定律是写成了F等于质量乘以路程的二阶导数(据说牛顿那时候是把导数叫做流数的),而不是我上高中的时候学的那个加速度a。 也就是牛顿是利用二阶微分方程表示牛顿第二定律的,在解方程的过程中,自然的就可以计算速度,位移等等的物理量,省去了很多描述上的麻烦,为研究更加复杂 的情况提供了强有力的数学工具。在牛顿所建立起来的这种框架之下,后人们不断发现新的规律,而新的规律也总是可以表示为各种各样的微分方程,于是经典物理 便一点点扩充起来了。从这个角度来说牛顿是近代物理之父那是一点也不错的。

正是在建立经典物理学的过程之中, 傅立叶在研究热的传播时,伯努利(伯努利家是数学世家,他们爷们我一个也搞不清,统称为伯努利,总之是错不了的)在研究波的传播和扩散时,都得到了以下的 偏微分方程(这个推导在物理课本上有,国内的诸多教材都有推导,也不是很难,不是这篇文章关注的焦点,就略提一下,不详谈了):

(1)

当然,这个方程的第二个式子和第三个式子是偏微分方程的初值和边值条件,现在这个被称做是狄利克莱条件。在不同的场合下,初边值一般是不同的,比如其他还有纽曼条件,罗宾条件等,但是方程的解法却是大同小异。

傅立叶又是怎么解这个方程的呢。OK,接下来就来看看傅立叶是怎样给这个方程的解加上自己的名字的。

在上面这个方程的推导过程中,傅立叶发现,这个解u其实可以表示为X(x)·T(t),如果哪位仁兄想问为什么,只好请您再屈驾看一下物理课本了。u=X(x)T(t)代入上述方程就可以得到

(其中λ是一个常数。因为 )

行了,现在得到两个二阶常微分方程,自己都会解了。经过一番尝试,我们会发现,只有当λ>0时,这两个方程的解才会有一些意义。我们就来看一看吧,现在已经假设λ=β*β>0并且β>0

那么这个常微分方程组的解就具有以下形式

其中ABCD都是常数。

第二步就是把边界条件加进来

对于C=D=0这样的平凡解,我们当然不感兴趣,所以我们还是让βl=nπ

AB是一些确定的常数,这些解的和仍然是一个解,所以任意的有限和是原方程的一个解

呵呵,到此为止,看到傅立叶级数了。接下的任务就是计算AB

幸好,我们有以下规律

于是,有以下推导

(2)

有了这个公式以后,方程(1)的解才算是完全地得到了。

接下来,人们自然会想,那么什么样的函数才可以用傅立叶级数来表示呢?经过近一个世纪的争论,才惊讶地知道原来所有函数都可以表示为傅立叶级数(这句话大有问题,但是像我这样的升斗小民也就只能把所有可积函数理解为黎曼可积的了)。

这个问题的证明思路也不难,那就是用公式(2)把一个普通函数强行化为傅立叶级数,再证明这个级数收敛甚至是一致收敛就可以了。

说到这里,可以总结一下了。傅立叶研究一个物理过程,得到了一个偏微分方程,用特殊的方法去处理这个方程,发现解是三角函数的函数项级数。而它就是后来被称做傅立叶级数的东西。进一步又发现,随便一个函数都可以用公式(2) 处理成傅立叶级数,再一研究又发现这个级数竟收敛于原来的函数。于是这个意义就大了。在通讯的时候可以说成是任何信号都可以表示成几个三角函数的叠加(因 为收敛,所以取有限和便可以很好地达到实际应用时的精度要求),而三角函数的信号是最容易产生的。这在很长的一段时间内都是通讯的基础。

整个推导过程其实是很细致的,我能写下以上文字已是很吃力了,中间有很多模糊的地方,现在看来也只好这样了。

 

转载于:https://www.cnblogs.com/aspxphpjsprb/archive/2009/06/04/1496533.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Matlab中,我们可以使用“exp”函数和傅立叶级数公式来将锯齿波进行指数级傅立叶级数展开。具体步骤如下: 1.定义锯齿波函数: ```matlab function y = sawtooth_wave(t, T) % t为时间向量,T为锯齿波周期 y = (t/T) - floor(t/T + 1/2); end ``` 2.设置展开参数: ```matlab T = 1; N = 10; % 展开项数 ``` 3.计算傅立叶级数系数: ```matlab n = -N:N; c = 1./(2*pi*1i*n) .* (exp(-1i*2*pi*n*T/2) - 1); ``` 4.计算指数级傅立叶级数展开: ```matlab t = linspace(-3*T, 3*T, 1000); y = zeros(size(t)); for nn = 1:length(n) y = y + c(nn)*exp(1i*2*pi*n(nn)*t/T); end ``` 5.绘制锯齿波和展开结果: ```matlab % 绘制锯齿波 figure; plot(t, sawtooth_wave(t, T), 'LineWidth', 2); hold on; % 绘制展开结果 plot(t, real(y), 'LineWidth', 2); grid on; xlabel('Time (s)'); ylabel('Amplitude'); legend('Original Signal', ['Exp Fourier Series, N = ' num2str(N)]); ``` 完整代码如下: ```matlab function y = sawtooth_wave(t, T) % t为时间向量,T为锯齿波周期 y = (t/T) - floor(t/T + 1/2); end T = 1; N = 10; % 展开项数 n = -N:N; c = 1./(2*pi*1i*n) .* (exp(-1i*2*pi*n*T/2) - 1); t = linspace(-3*T, 3*T, 1000); y = zeros(size(t)); for nn = 1:length(n) y = y + c(nn)*exp(1i*2*pi*n(nn)*t/T); end figure; plot(t, sawtooth_wave(t, T), 'LineWidth', 2); hold on; plot(t, real(y), 'LineWidth', 2); grid on; xlabel('Time (s)'); ylabel('Amplitude'); legend('Original Signal', ['Exp Fourier Series, N = ' num2str(N)]); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值