Help with Python RK4: Solving Error Plotting 1st Order ODE

  • Context: Python 
  • Thread starter Thread starter gulaman
  • Start date Start date
  • Tags Tags
    Python Rk4
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
1 reply · 4K views
gulaman
Messages
18
Reaction score
0
i have been attempting to plot a first order ODE with pyhton's rk4

i can't display the graph and i have been having this error:

Traceback (most recent call last):
File "C:\Documents and Settings\AP155user38\Desktop\gladys python codes\differential equations and runge-kutta\1ODE.py", line 20, in <module>
Y[i+1] = rk4(t, Y, f)
File "c:\python25\lib\site-packages\matplotlib-0.98.3.0001-py2.5-win32.egg\matplotlib\mlab.py", line 928, in rk4
yout = np.zeros( (len(t),), np.float_)
TypeError: object of type 'function' has no len()

i need help in understanding this so i could move on with solving the error. :)

i hope you guys could help me out.

here's my code:

from scipy import *
from pylab import *


h = 0.1 #time step
ti = 0. #start
tf = 10. #end
t = arange(ti, tf, h) #time array

N = len(t) #number of time steps
Y = zeros(N) #stores value of y at each time step

Y[0] = 0. #initial condition

def f(t, Y):
dYdt = -9.81 - 0.5*Y
return dYdt

for i in range(N-1):
Y[i+1] = rk4(t, Y, f)

plot(t,Y)
show()

thanx.

gulaman
Quezon City, Philippines
 
Physics news on Phys.org
I don't use Python but I had "learned" it enough to pass a class.

I think you're getting the error because you're not passing any arguments to f for rk4 to use.

Or

The value of t or Y is a null value.

Hope that helps. :-/