正文

單擺和雙擺模擬(1)

Python 科學(xué)計算 作者:張若愚


本章首先介紹單擺和雙擺系統(tǒng)的公式推導(dǎo),然后通過odeint()對其進行數(shù)值求解并制作動畫演示程序。

18.1  單擺模擬

如圖18-1所示,有一根不可伸長、質(zhì)量不計的細棒,上端固定,下端系一質(zhì)點,這樣的裝置叫做單擺。

根據(jù)牛頓力學(xué)定律,我們可以列出如下微分方程:

其中,θ為單擺的擺角,l為單擺的長度,g為重力加速度。

此微分方程的符號解無法直接求出,因此只能調(diào)用odeint()對其求數(shù)值解。

odeint()的調(diào)用參數(shù)如下:

odeint(func, y0, t, ...)

其中,func是Python的一個函數(shù)對象,用來計算微分方程組中每個未知函數(shù)的導(dǎo)數(shù);y0為微分方程組中每個未知函數(shù)的初始值;t為需要進行數(shù)值求解的時間點。它返回的是一個二維數(shù)組result,其第0軸的長度為t的長度,第1軸的長度為變量的個數(shù),因此result[:,i]為第i個未知函數(shù)的解。

計算微分的func函數(shù)的調(diào)用參數(shù)為func(y, t),其中y是一個數(shù)組,為每個未知函數(shù)在t時刻的值,而func的返回值是每個未知函數(shù)在t時刻的導(dǎo)數(shù)。

odeint()要求每個微分方程只包含一階導(dǎo)數(shù),因此我們需要對前面的微分方程進行如下變形:


上一章目錄下一章

Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號