<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            單擺擺動周期的計算?

            相關文檔: 單擺和雙擺模擬

            本程序利用odeint和fsolve計算單擺的擺動周期,并且和精確值進行比較。

            _images/simple_pendulum02.png
            # -*- coding: utf-8 -*-
            from math import sin, sqrt
            import numpy as np
            from scipy.integrate import odeint
            from scipy.optimize import fsolve
            import pylab as pl
            from scipy.special import ellipk
            
            g = 9.8
            
            def pendulum_equations(w, t, l):
                th, v = w
                dth = v
                dv  = - g/l * sin(th)
                return dth, dv
            
            def pendulum_th(t, l, th0):
                track = odeint(pendulum_equations, (th0, 0), [0, t], args=(l,))
                return track[-1, 0]
                
            def pendulum_period(l, th0):
                t0 = 2*np.pi*sqrt( l/g ) / 4
                t = fsolve( pendulum_th, t0, args = (l, th0) )
                return t*4
                
            ths = np.arange(0, np.pi/2.0, 0.01)
            periods = [pendulum_period(1, th) for th in ths]
            periods2 = 4*sqrt(1.0/g)*ellipk(np.sin(ths/2)**2) # 計算單擺周期的精確值
            pl.plot(ths, periods, label = u"fsolve計算的單擺周期", linewidth=4.0)
            pl.plot(ths, periods2, "r", label = u"單擺周期精確值", linewidth=2.0)
            pl.legend(loc='upper left')
            pl.title(u"長度為1米單擺:初始擺角-擺動周期")
            pl.xlabel(u"初始擺角(弧度)")
            pl.ylabel(u"擺動周期(秒)")
            pl.show()
            

            上一篇文章

            二次均衡器設計

            下一篇文章

            雙擺系統的動畫模擬

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线