日韩精品 中文字幕 动漫,91亚洲午夜一区,在线不卡日本v一区v二区丶,久久九九国产精品自在现拍

正文

單擺和雙擺模擬(8)

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


執(zhí)行此程序之后,eq1對應(yīng)于的拉格朗日方程,eq2對應(yīng)于的拉格朗日方程。

由于SymPy只能對符號變量求導(dǎo)數(shù),即只能計(jì)算D(L, t),而不能計(jì)算D(f, v(t))。 ?因此在求偏導(dǎo)數(shù)之前,將偏導(dǎo)數(shù)變量置換為一個(gè)tmp變量,然后對tmp變量求導(dǎo)數(shù),例如下面的程序?qū)(v(t), t)求偏導(dǎo)數(shù),即計(jì)算:

L.subs(D(v(t), t), tmp).diff(tmp).subs(tmp, D(v(t), t))

而在計(jì)算時(shí),需要將v(t)替換為v之后再進(jìn)行微分計(jì)算。由于將v(t)替換為v的同時(shí),會將D(v(t), t)中的也進(jìn)行替換,這不是我們希望的結(jié)果,因此先將D(v(t), t)替換為tmp,微分計(jì)算完畢之后再替換回去:

L.subs(D(v(t), t), tmp).subs(v(t), v).diff(v).subs(v, v(t)).subs(tmp, D(v(t), t))

最后得到eq1和eq2的值為:

>>> eq1

ddth1*(m1*l1**2 + m2*l1**2) +

ddth2*(l1*l2*m2*cos(th1)*cos(th2) + l1*l2*m2*sin(th1)*sin(th2)) +

dth2**2*(l1*l2*m2*cos(th2)*sin(th1) - l1*l2*m2*cos(th1)*sin(th2)) +

g*l1*m1*sin(th1) + g*l1*m2*sin(th1)

>>> eq2

ddth1*(l1*l2*m2*cos(th1)*cos(th2) + l1*l2*m2*sin(th1)*sin(th2)) +

dth1**2*(l1*l2*m2*cos(th1)*sin(th2) - l1*l2*m2*cos(th2)*sin(th1)) +

g*l2*m2*sin(th2) + ddth2*m2*l2**2

結(jié)果看上去挺復(fù)雜,其實(shí)只要運(yùn)用如下的三角公式,就和前面的結(jié)果一致了:


上一章目錄下一章

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