代码拉取完成,页面将自动刷新
同步操作将从 霍开拓/ComputationalPhysics 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
"""
Created on Sat Nov 09 13:53:23 2013
PHYS 613, Assignment 8
Nick Crump
"""
# Exercise 5.18
# Exercise 5.19
"""
Implement the Runge-Kutta-Fehlberg method to solve the 2nd-order
non-linear differential equation of the van der Pol oscillator.
"""
import numpy as np
import ODEsolve as ode
import matplotlib.pyplot as plt
# function for van der Pol oscillator
# ***************************************************
def f(ti,IC):
eps = 1.0
ui = IC[0] # x'(t)
xi = IC[1] # x (t)
func = np.array([-xi-eps*ui*(xi**2 - 1), ui])
return func
# ***************************************************
# set initial conditions as x'(0), x(0)
IC = [0, 0.5]
# call RKF45 method from my ODE solve module
t,s = ode.RKF45HO(f,IC,0,8*np.pi,0.01,1e-5,stp=1)
# plot position and velocity vs time
plt.figure(1)
plt.subplot(2,1,1)
plt.plot(t,s[1],'b',label='Position')
plt.ylabel('Position')
plt.legend(loc=4)
plt.subplot(2,1,2)
plt.plot(t,s[0],'r',label='Velocity')
plt.xlabel('Time')
plt.ylabel('Velocity')
plt.legend(loc=4)
# plot phase space trajectory
plt.figure(2)
plt.plot(s[1],s[0],'g',label='Phase Space')
plt.xlabel('Position')
plt.ylabel('Velocity')
plt.legend(loc=2)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。