郝健翔
摘 要:數(shù)值方法是從求解實際問題中發(fā)展起來的。迭代是數(shù)值方法的核心,在滿足收斂準則的條件下,數(shù)值方法通過迭代近似求解問題。物理學中,對方程求解是非常普遍但又極其重要的任務(wù)。然而,許多物理方程很難解析求解或者沒有解析解,數(shù)值方法是求解這類問題的重要工具。
關(guān)鍵詞:數(shù)值方法;二分法;歐拉法;超越方程;常微分方程
中圖分類號:O175 文獻標識碼:A 文章編號:1671-2064(2019)02-0240-02
0 引言
利用Python語言去實現(xiàn)這兩類重要的數(shù)值方法。選擇Python語言的原因主要包括:第一,Python軟件免費,易安裝、容易學習;第二,Python語言具有非常豐富的科學計算工具包,能夠滿足科學計算中的一般要求。基于這兩點原因,本論文利用Python語言實現(xiàn)二分法和歐拉法,并給出了這兩類方法在求解超越方程和常微分方程中的兩個物理實例:地月系統(tǒng)中L1拉格朗日點的計算和落體運動的動力學方程。
1 二分法與歐拉法
數(shù)值方法求解方程的根通常是一個迭代過程,在迭代之前我們首先需要一個初始解作為方程的近似解。隨著迭代次數(shù)的增多,近似解會越來越接近于真實解,當達到一定的收斂要求時,停止計算過程,這是數(shù)值方法求解方程的一般思路。
1.1 二分法
利用二分法求解超越方程首先需要找一個有根區(qū)間,即方程在某個區(qū)間內(nèi)部至少有一個解,這就限定了求解的范圍。如果能夠計算找出一個非常小的有根區(qū)間,區(qū)間的中點則是方程根的很好近似。求方程=0的零點,首先確定一個有根區(qū)間,使得在上是連續(xù)的,且。由連續(xù)函數(shù)的性質(zhì)可以知道=0在區(qū)間上必然有解。求解=0的零點是通過不斷地把函數(shù)的零點所在的區(qū)間一分為二,使區(qū)間的兩個端點逐步逼近零點,進而得到零點近似值的方法叫二分法。設(shè)為R的閉區(qū)間,二分法就是造出如下的區(qū)間序列():,且對任一自然數(shù)n,要么等于,或者等于,其中cn表示的中點。對于給定的精確度,用二分法求函數(shù)=0的零點通常包括如下4個步驟:
(1)確定一個有根區(qū)間,使得在上是連續(xù)的,且;(2)求區(qū)間的中點c;(3)若,則c就是函數(shù)的零點;若,則令;否則;(4)判斷是否達到給定的精確度:如果滿足,則得到的值a(或b)近似為方程的零點,否則重復步驟2-4。
1.2 歐拉法
微分方程是指含有參數(shù),未知函數(shù)和未知函數(shù)導數(shù) (或微分)的方程。未知函數(shù)是一元函數(shù)的微分方程稱作常微分方程,一般的常微分方程具有(1)的形式,是微分方程的初始解,。
(1)
大多數(shù)常微分方程都無法求出解析解,只能得到解的數(shù)值近似。在物理學中,描述系統(tǒng)演化的過程通常需要由微分方程來描述,因此本部分給出歐拉法求解常微分方程的一般迭代表達式(2):
(2)
其中,為區(qū)間的等分次數(shù),的大小可以根據(jù)計算精度自己設(shè)定;,從(2)可知,知道該常微分方程的初始值和等分次數(shù),即可求出微分方程在任意點的近似值,因此以近似常微分方程的解。
2 二分法與歐拉法在求解物理方程中的實例
2.1 二分法在求解L1拉格朗日點
拉格朗日點:地球和月球之間有一個神奇的點,稱為L1拉格朗日點,L1拉格朗日點始終位于月球與地球的連線上。衛(wèi)星處于L1拉格朗日點時,衛(wèi)星繞地球運行的向心力由地球的向內(nèi)拉力和月球的向外拉力的合力提供。若假設(shè)衛(wèi)星的軌道是圓形軌道,并且假設(shè)地球比月球或衛(wèi)星大得多,此時衛(wèi)星的運行方程可由方程(3)描述,其中分別是萬有引力常數(shù)、地球質(zhì)量、月球質(zhì)量,月球繞地球運動的軌道半徑和衛(wèi)星繞地球運動的角速度,這些常數(shù)均可以查表獲取。
(3)
很明顯,方程(3)不能解析求解,但可以利用二分法來近似求解。令函數(shù),即是求解方程的零點。二分法求解方程(3)的Python代碼如下:
運行整個程序,計算機求得的=297663863.44米,此時,可知二分法能夠很好的求解此方程的根。
2.2 歐拉法求解物體的動力學方程
實際問題中的動力學方程通常是微分方程,大多數(shù)微分方程通常不能解析求解,或者求解相對較麻煩。歐拉法是近似求解常微分方程的一類重要方法。在高中物理教學中,落體運動常常忽略掉空氣阻力,然而實際的空氣阻力不可能避免。如果考慮物體下落的過程中所受的阻力與其下落速度成正比,比例系數(shù)為,那么初速度為零的落體運動的牛頓方程應(yīng)該滿足如下常微分方程(4):
(4)
假設(shè)物體的質(zhì)量為2千克,g=9.8m/s,k=10,求解前5秒內(nèi)的速度變化關(guān)系。根據(jù)歐拉法求解的迭代表示式(2),取,則常微分方程(4)的迭代表達式為式(5)。利用(5),可以迭代求得秒時對應(yīng)的速度。
(5)
為了更直觀的觀察到速度的變化,我們將速度和時間的關(guān)系可視化。對于微分方程(4),利用微積分的知識可以求得其精確解為(6)。因此,為了便于將歐拉法求得的近似解與精確解進行比較,可將近似解與精確解在同一張圖上可視化。
(6)
歐拉法的求解過程與可視化可用如下Python代碼實現(xiàn):
運行結(jié)果如圖2。從圖中我們可以發(fā)現(xiàn),用歐拉法近似求得的值與解析解對應(yīng)的值符合的非常好,這說明,用歐拉法求解常微分方程是可行的。
3 總結(jié)與展望
數(shù)值方法作為一種從實際問題中發(fā)展起來的方法,在現(xiàn)在的科學與工程中具有重要的應(yīng)用。數(shù)值方法的用途也遠遠不止用于求解上述兩類方程。從二分法求解超越方程和歐拉法求解常微分方程的研究案例中,我們發(fā)現(xiàn),這兩類方法雖然很簡單,但是對我們高中生的物理學習卻非常有幫助。
然而,在處理上述實際問題中,二分法雖然能夠求解超越方程,但是使用二分法需要先找到一個有根區(qū)間,并且還需要在這個有根區(qū)間內(nèi)我們研究的函數(shù)是連續(xù)函數(shù),這就為研究問題帶來了不方便。很多時候,要找到有根區(qū)間和在該區(qū)間上的連續(xù)函數(shù)很困難。歐拉法求解常微分過程中,我們需要指定的大小,通常情況下,的大小選擇對近似解的準確性有影響。為了使近似解與真實解盡可能接近,一般做法是采用盡可能小的,這與研究的實際問題有關(guān)。
總而言之,二分法和歐拉法作為兩類數(shù)值方法,簡單實用。將數(shù)值方法與計算機的計算速度結(jié)合起來,同時利用好計算機的可視化功能,將有助于我們解決、理解更加復雜的物理問題,有助于我們的物理學習。
參考文獻
[1] 關(guān)治,陸金甫.數(shù)值方法[M].北京:清華大學出版社,2006.
[2] 喻文健.數(shù)值分析與算法[M].北京:清華大學出版社,2015.
[3] 劉延柱.關(guān)于地月系統(tǒng)的拉格朗日點[J].力學與實踐,2015,37(6):765-768.
[4] 李佳宇.零基礎(chǔ)入門學習Python[M].北京:清華大學出版社,2016.
[5] 舒幼生,陳秉乾,胡望雨.高等數(shù)學[M].安徽:中國科學技術(shù)大學出版社,2014.