運用MATLAB語言解決級數及其相關問題李娟娟_第1頁
運用MATLAB語言解決級數及其相關問題李娟娟_第2頁
運用MATLAB語言解決級數及其相關問題李娟娟_第3頁
運用MATLAB語言解決級數及其相關問題李娟娟_第4頁
運用MATLAB語言解決級數及其相關問題李娟娟_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、MATLAB語言課程論文運用MATLAB語言解決級數及其相關問題姓名:李娟娟 專業:電子信息工程 班級:2010級電子班指導老師:湯全武學院:物理電氣信息學院完成日期:2011/12/12運用MATLAB語言解決級數及其相關問題摘要無窮級數是高等數學中的一個重要組成部分,它是表示函數,研究函數的性質以及進行數值計算的一種工具。運用MATLAB語言來求解無窮級數求和、冪級數展開、泰勒級數展開以及研究傅里葉級數提供了方便,并且在復變函數中解決級數問題也可由MATLAB來完成。同時運用高等數學中級數來解決日常實際問題的情況也可通過MATLAB程序來完成。MATLAB的運用大大減少工作量、節約時間,同

2、時加深對高等數學、復變函數及MATLAB語言的理解和學習。關鍵詞MATLAB語言 無窮級數 級數求和 泰勒級數 傅里葉級數一、問題的提出級數作為高等數學和復變函數中的必學內容,要求我們必須掌握其定理內容及計算方法。但級數強大的計算量和多字母的表達示讓很多人無從下手,加上出錯率高,更給級數運算再添麻煩。為解決這一問題我們現在運用MATLAB語言來求解高等數學中的級數問題,涉及常系數項級數求和、泰勒級數展開成冪級數以及函數的傅里葉級數的展開等。二、常數項級數的求和與審斂高數中,一般的,如果給定一個數列則由這數列構成的表達式: (1)叫做(常數項)級數,記為,即=其中第n項叫做級數的一般項。做(常數

3、項)級數(1)的前n項和 (2)稱為級數的(1)部分和,當n依次取1,2,3,時,他們構成一個新數列 如果這個數列的極限存在,則稱該級數收斂,并稱級數的部分和(2)為級數的和。在MATLAB語言中,用于級數求和的命令是symsum(),該命令的應用格式為:Symsum(a,v,m,n)其中:a表示級數的通項表達式,是一個符號表達式。V是通向中的求和變量,v省略時使用系統的默認變量。m和n分別是求和變量的開始項和末項,如果m、n缺省,則v從0變到V-1。問題1:求下列級數的和(1)(2)分析:運用傳統方式,我們需要計算通項的極限,繁瑣費時,出錯率高。現在我們用MATLAB語言來解決:解:利用MA

4、TLAB語言中的symsum函數設計程序如下:clearsyms n %定義符號變量nf1=(2*n-1)/2n; %級數(1)的通項表達式f2=1/(n*(2*n+1); %級數(2)的通項表達式 I1=symsum(f1,n,1,inf) %求I1I2=symsum(f2,n,1,inf) %求I2運行結果為:I1 = 3 I2 = 2-2*log(2)數學表達式為:I1=3; I2=。 本例是收斂的情況,如果發散,則求得的和為inf。因此,本方法就可以同時用來解決求和問題和收斂性問題。問題2:求下列級數的和(1)(4)此題涉及函數解決難度大,運用MATLAB解題方便省時。解:MATLAB

5、程序如下:Clear syms n x %定義符號變量n、xf3=sin(x)/n2; %級數(1)的通項表達式f4=(-1)(n-1)*xn/n; %級數(2)的通項表達式I3=symsum(f3,n,1,inf) %求I3I4=symsum(f4,n,1,inf) %求I4運行結果為:I3 = 1/6*sin(x)*pi2 I4 = log(1+x)數學表達式為:I3=;I4=。 從這個例子可以看出,symsum()這個函數不但可以處理常數項級數,也可以處理函數項級數。三、函數的泰勒展開式級數是高等數學中函數的一種重要表示形式,有許多復雜的函數都可以用級數簡單地來表示,而將一個復雜的函數展

6、開成冪級數并取其前面的若干項來近似表達這個函數是一種很好的近似方法,在學習級數的時候,我們知道將一個函數展開成級數有時是比較麻煩的,現在介紹用MATLAB語言來展開函數的方法。若設函數在點的某領域內能展開成冪級數,即有 (1)那么,根據和函數的性質,可知在內應具有任意階導數,且由此可得 于是 (n=0,1,2,) (2) 這就表明,如果函數有冪級數展開式(1),那么該冪級數的系數有公式(2)確定,即該冪級數必為 (3)而展開式必為 (4) 冪級數(3)叫做函數在點處的泰勒級數,展開式(4)叫做函數在點處的泰勒展開式。 在MAILAB語言中,用于冪級數展開的函數為taylor()。其調用格式為:

7、Taylor(f,v,n,a)該函數將函數f按變量v展開為泰勒級數,展開到第n項(即變量v的n-1次冪)為止,n的默認值為6.v的默認值與diff函數相同。參數a指定將函數f在自變量v=a處展開,a的默認值是0,即邁克勞林展開。問題3:將函數展開為冪級數,分別展開至5次和20次分析:高等數學中解法:所給函數的各階導數為順序循環的取0,1,0,-1(n=0,1,2,3,),于是得級數,它的收斂半徑又因為:對于任何有限的數、(在0與之間),余項的絕對值當時的極限為零。因此的展開式(, )由上可知,解題過程繁瑣且計算量大、易出錯,相應的我們下面運用MATLAB語言來完成。解:MATLAB程序為:cl

8、earsyms x %定義字符變量f=sin(x); %函數表達式taylor(f) %求函數的5階泰勒級數展開式taylor(f,20) %求函數的20階泰勒級數展開式運行結果為:ans = x-1/6*x3+1/120*x5ans =數學表達式為:5階展開式: 20階展開式: 問題4:將函數展開為x 的冪級數,m 為任意常數。展開至4次冪。分析:高等數學中解法:的各階導數為所以 ,, ,于是得級數這級數相鄰兩項的系數之比的絕對值,因此,對于任何實數m這級數在開區間(-1,1)內收斂到函數F(x): 下面證明。 逐項求導,得,兩邊各乘以,并把含有(n=1,2,)的兩項合并起來。根據恒等式(n

9、=1,2,)可得 現在令 ,于是,且 =0所以(常數)。但是,從而,即。因此在區間(-1,1)內展開式 由此看出解題過程過于復雜、耗時久且出錯率高,掌握起來難。現在我們用MATLAB語言來解決:解:MATLAB程序為: clearsyms x m %定義字符變量f=(1+x)m; %F(x)的函數表達式taylor(f,5) %函數的4次泰勒展開式運行結果為:ans =1+m*x+1/2*m*(m-1)*x2+1/6*m*(m-1)*(m-2)*x3+1/24*m*(m-1)*(m-2)*(m-3)*x4數學表達式為: 四、函數的傅立葉級數展開傅里葉級數的運用很廣泛,在解決電路分析、信號與系統

10、及大學物理中都有重要應用,其求解公式簡單、含義明確,但對一些常見的周期函數中,應用公式求傅里葉級數時,常常面臨較大的計算量,而且出錯幾率很高。現在我們利用MATLAB語言來編程求解函數的傅里葉級數展開式。先來認識傅里葉級數:設是周期為的周期函數,且能展開成三角級數: (5)先求。對(5)式從到積分,假設(5)式右端級數可逐積分,因此有。根據三角函數系的正交性,等式右端除第一項外,其余各項均為零,所以于是得其次求。用乘(5)式兩端,再從到積分,我們得到 =。根據三角函數正交系,等式右端k=n的一項外,其余各項均為零,所以,于是得 (n=1,2,)類似的,用乘(5)式的兩端,再從到積分,可得 (n

11、=1,2,)由于當n=0時,的表達式正好給出,因此,已得結果可以合并寫成 (n=1,2,) (n=1,2,)如果兩式的積分都存在,這時他們定出的系數,叫做的傅里葉系數,將這些系數代入(5)式右端,所得的三角級數叫做函數的傅里葉級數。在MATLAB語言中,沒有專門求傅里葉級數的函數調用。但我們可以借助函數int()利用傅里葉級數展開式公式來編寫相應的計算函數。程序如下:先定義函數myfly.m:function a0,ak,bk=myfly(f) %定義輸出參數和輸入參數及函數名syms k x %定義符號變量k xa0=int(f,x,-pi,pi)/pi; %求a0的積分函數語句ak=int

12、(f*cos(k*x),x,-pi,pi)/pi; %求ak的積分函數語句bk=int(f*sin(k*x),x,-pi,pi)/pi; %求bk的積分函數語句注意,該文件一定要以myfly.m為文件名。這樣得到的是公式,如果要計算出具體的數值,則可以用下面的方法實現:現將ak,bk的計算公式分別編制成獨立的函數,并以相應的文件名命名這里先編制兩個m文件,其內容分別為:%fourieran.mfunction an=fourieran(f,n) %定義函數文件fourieransyms x %定義符號變量xan=int(f*cos(n*x),x,-pi,pi)/pi; %求an%fourier

13、bn.mfunction bn=fourierbn(f,n) %定義函數文件fourierbnsyms x %定義符號變量xbn=int(f*sin(n*x),x,-pi,pi)/pi; %求bn接著,再編寫程序如下:clearsyms x n %定義符號變量x nf=x2 %函數表達式a0=fourieran(f,0) %調用函數文件fourieran求a0;a=zeros(1,10) %建立一個1*10的零矩陣b=zeros(1,10) %建立一個1*10的零矩陣for n=1:10 %n為1到10間隔為1的一組數a(n)=fourieran(f,n); %調用函數文件fourieran求

14、a(n)endfor n=1:10 %n為1到10間隔為1的一組數 b(n)=fourierbn(f,n); %調用函數文件fourierbn求b(n)end即可完成前21個傅立葉系數的計算。問題6:求函數 在 上的傅立葉級數。解:先求出傅立葉系數,程序如下:clearsyms x n %定義字符變量x、nf=x2 %被積函數表達式a0=int(f,x,-pi,pi)/pi %求a0an=int(f*cos(n*x),x,-pi,pi)/pi %求anbn=int(f*sin(n*x),x,-pi,pi)/pi %求bn運行結果為:f =x2a0 =2/3*pi2an =2*(n2*pi2*s

15、in(pi*n)-2*sin(pi*n)+2*pi*n*cos(pi*n)/n3/pibn =0數學表達式為: 這里,我們得到了傅立葉系數的公式,只要代入具體的n就可以得到結果了。四、結論由以上的利用MATLAB語言解決高等數學中級數求和、泰勒級數展開成冪級數及函數的傅里葉級數展開式的分析,我們不難看出得出以下結論:1、MATLAB語言可以解決高等數學中有關于技術的相關計算;2、運用MATLAB語言解決高等數學中級數的相關問題簡單方便、可操作性強、節約時間、減少出錯率;3、MATLAB語言應用廣泛,幫助解決各類學科中的難點、要點,方便省時。五、課程體會通過MATLAB語言一學期的學習,我們也漸

16、漸擺脫剛開始的盲目和不解,開始有了自己對MATLAB語言的認識和了解,也體會到運用MATLAB語言解題真的可以帶來方便。MATLAB為我們打開了一扇窗,讓我們對計算機編程語言有了初步認識,作為一名學習電子信息工程專業的學生,學習和掌握編程是很重要的。現在的我們對專業知識還不太了解,許多專業課還沒有開,但從學長和老師們口中我們知道計算機編程語言是基礎,大一時學過的C語言是學好其他編程語言的基礎,而我們在學習MATLAB語言時也感到有很多知識和C語言很相似,結合原來學的C語言對理解MATLAB語言有很大幫助。這些計算機編程語言對我們以后學習必不可少,至少下學期開的信號與系統就會用到有關MATLAB語言的知識,在以后的單片機等編程中也有涉及。因此學會MATLAB的基本使用格式、函數調用方法、各種工具箱的使用、繪圖基本操作等對以后的學習至關重要。MATLAB語言的應用相當廣泛,不僅可以用到高等數學、復變函數、大學物理、電路分析、模擬電路分析等一系列基礎課程的學習,而且對于以后專業課的學習也有很大幫助。利用MATLAB語言解決在其它學科的應用時簡單方便、節約時間、操作性強,切實解決利用數學計算方法解題繁瑣費時、出錯率高的難題,而且在例題引用和公式定理證明時能快速給出正確的答案,減少由于手動計算出錯而帶來的不必要麻煩。另外它MATLAB語言簡單易學,相對于其它計算機語言MATLA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論