Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Help in Python rk4

  1. Feb 19, 2009 #1
    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-\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)



    Quezon City, Philippines
  2. jcsd
  3. Mar 1, 2009 #2
    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.


    The value of t or Y is a null value.

    Hope that helps. :-/
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook