資源描述:
《MATLAB求解常微分方程數(shù)值解.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、·利用MATLAB求解常微分方程數(shù)值解Word資料·目錄1.容簡(jiǎn)介22.EulerMethod(歐拉法)求解22.1.顯式Euler法和隱式Euler法22.2.梯形公式和改進(jìn)Euler法22.3.Euler法實(shí)用性23.Runge-KuttaMethod(龍格庫(kù)塔法)求解23.1.Runge-Kutta基本原理23.2.MATLAB中使用Runge-Kutta法的函數(shù)24.使用MATLAB求解常微分方程24.1.使用ode45函數(shù)求解非剛性常微分方程24.2.剛性常微分方程25.總結(jié)2參考文獻(xiàn)2附錄21.顯式Euler法數(shù)值求解22.改進(jìn)E
2、uler法數(shù)值求解23.四階四級(jí)Runge-Kutta法數(shù)值求解24.使用ode45求解2Word資料·1.容簡(jiǎn)介把《高等工程數(shù)學(xué)》看了一遍,增加對(duì)數(shù)學(xué)容的了解,對(duì)其中數(shù)值解法比較感興趣,這大概是因?yàn)樵谄渌鞣矫娴膶W(xué)習(xí)和研究中經(jīng)常會(huì)遇到數(shù)值解法的問(wèn)題。理解模型然后列出微分方程,卻對(duì)著方程無(wú)從下手,無(wú)法得出精確結(jié)果實(shí)在是讓人難受的一件事情。實(shí)際問(wèn)題中更多遇到的是利用數(shù)值法求解偏微分方程問(wèn)題,但考慮到先從常微分方程下手更為簡(jiǎn)單有效率,所以本文只研究常微分方程的數(shù)值解法。把一個(gè)工程實(shí)際問(wèn)題弄出精確結(jié)果遠(yuǎn)比弄清楚各種細(xì)枝末節(jié)更有意思,因此文章中不追求
3、非常嚴(yán)格地證明,而是偏向如何利用工具實(shí)際求解出常微分方程的數(shù)值解,力求將課程上所學(xué)的知識(shí)真正地運(yùn)用到實(shí)際方程的求解中去,在以后遇到微分方程的時(shí)候能夠熟練運(yùn)用MATLAB得到能夠在工程上運(yùn)用的結(jié)果。文中求解過(guò)程中用到MATLAB進(jìn)行數(shù)值求解,主要目的是弄清楚各個(gè)函數(shù)本質(zhì)上是如何對(duì)常微分方程進(jìn)行求解的,對(duì)各種方法進(jìn)行MATLAB編程求解,并將求得的數(shù)值解與精確解對(duì)比,其中源程序在附錄中。最后考察MATLAB中各個(gè)函數(shù)的適用圍,當(dāng)遇到實(shí)際工程問(wèn)題時(shí)能夠正確地得到問(wèn)題的數(shù)值解。2.EulerMethod(歐拉法)求解Euler法求解常微分方程主要包括
4、3種形式,即顯式Euler法、隱式Euler法、梯形公式法,本節(jié)容分別介紹這3種方法的具體容,并在最后對(duì)3種方法精度進(jìn)行對(duì)比,討論Euler法的實(shí)用性。本節(jié)考慮實(shí)際初值問(wèn)題使用解析法,對(duì)方程兩邊同乘以得到下式Word資料·兩邊同時(shí)求積分并采用分部積分得到解析解:本節(jié)后面將對(duì)此方程進(jìn)行求解,并與精確解進(jìn)行對(duì)比,分析Euler的可行性。1.1.顯式Euler法和隱式Euler法顯式和隱式Euler法都屬于一階方法,顯式Euler法的迭代公式簡(jiǎn)單,如下所示:對(duì)過(guò)上述公式對(duì)式進(jìn)行迭代,其中步長(zhǎng),計(jì)算之間的數(shù)值,迭代求解的MATLAB程序見(jiàn)附錄,能夠得
5、出精確解和數(shù)值解的圖像,如圖所示。圖2.1顯式Euler法精確解和數(shù)值解圖像從圖2.1中可以看出,顯式Euler法在斜率很大的時(shí)候存在非常大的誤差。本質(zhì)上是Euler法只計(jì)算了每一步差值中的一階部分,由Taylor級(jí)數(shù)可知:Word資料·當(dāng)公式中的二階導(dǎo)數(shù)較大時(shí)就會(huì)產(chǎn)生明顯的偏差,同時(shí)迭代過(guò)程中由于使用到上一部的結(jié)果,誤差會(huì)在迭代中傳播,因此這種Euler法在實(shí)際中是無(wú)法使用的,但是卻給求解微分方程數(shù)值解提供了好的開(kāi)始。另外一種Euler法是隱式Euler法,其迭代公式是,它并沒(méi)有解決上面所說(shuō)的問(wèn)題,同時(shí)它的計(jì)算更加繁瑣,對(duì)于無(wú)法化簡(jiǎn)成顯示迭
6、代的公式時(shí)還需要用迭代法求解非線性方程。為了解決上面的方法,就需要提高迭代公式中計(jì)算差值的階數(shù),下面介紹了梯形法和改進(jìn)Euler法,它們都是二階方法。1.1.梯形公式和改進(jìn)Euler法梯形公式以及改進(jìn)Euler法都屬于二階方法,下面證明它是二階方法,使用兩次Taylor公式,將和展開(kāi):將得到從上式可以看出,梯形法的局部截?cái)嗾`差的主要部分是,是關(guān)于步長(zhǎng)的三次式,這說(shuō)明了梯形法取到了差值中的二次項(xiàng),因此梯形法是二階方法。從上面可以得到梯形的迭代公式:Word資料·但是上式并不容易計(jì)算,因?yàn)樯鲜街械臑閹罅?,?dāng)無(wú)法化成顯式形式時(shí),需要對(duì)上式進(jìn)行迭代
7、求解。因此梯形公式不易通過(guò)計(jì)算機(jī)編程求解,實(shí)際上改進(jìn)的Euler法更容易求解。改進(jìn)Euler法迭代公式先通過(guò)顯式Euler法求出一個(gè)估計(jì)值,通過(guò)這個(gè)估計(jì)值來(lái)計(jì)算,然后方程就變成了顯式方程,從而可以得到修正值,改進(jìn)Euler法更適合計(jì)算機(jī)編寫程序,同樣解決初值問(wèn)題,詳細(xì)MATLAB程序見(jiàn)附錄2,得到的對(duì)比圖像如圖2.2所示。圖2.2改進(jìn)Euler法精確解與數(shù)值解對(duì)比由于改進(jìn)Euler法用來(lái)求解的并不是精確解,所以得到的導(dǎo)數(shù)會(huì)有一定誤差,因此改進(jìn)Euler法的實(shí)際局部截?cái)嗾`差不僅僅是。1.1.Euler法實(shí)用性Word資料·從圖2.1可以看出來(lái)一
8、階方法精確度非常差,基本上是無(wú)法用到實(shí)際工程中的,因此顯式和隱式Euler法只是提供一種對(duì)微分方程求解的思想。從圖2.2中得到的數(shù)值解相對(duì)圖2.1已經(jīng)有了明顯的改善