Method of Runge-Kutta in Python
Question: I wrote a code about runge-kutta method in python, but every time when the
program realizes any calculus the program require the differential equation.

this is my code:

    
    
    from math import *
    import numpy as np
    
    #Initial Values
    n=input("Enter the number of equations n:")
    n=int(n)
    x=np.array([])
    for i in range(0,n):
        x0=input("Enter the initial value of x{}:".format(i))
        x=np.append(x,[x0])
    t=input("Enter the initial value of t:")
    tf=input("Enter the final value of t:")
    h=input("Enter the time interval h:")
    m=int((tf-t)/float(h))
    
    #Definition of differential equations
    def f(t,x):
        f=np.array([])
        for i in range(0,n):
            f0=input("Enter the equation f{}:".format(i))
            f=np.append(f,[f0])
        return f
    
    
    a=1.0/6
    for i in range(0,m): 
        k1=f(t,x)
        k2=f(t+0.5*h,x+0.5*h*k1)
        k3=f(t+0.5*h,x+0.5*h*k2)
        k4=f(t+h,x+h*k3)
        x=x+a*h*(k1+2*(k2+k3)+k4)
        t=t+h
    
    print t, x
    

Example using the equation dx/dt=x, x(0)=1, xf=1, h=0.1:

    
    
    Enter the number of equations n:1
    Enter the initial value of x0:1
    Enter the initial value of t:0
    Enter the final value of t:1
    Enter the time interval h:0.1
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    Enter the equation f0:x[0]
    1.0 [ 2.71827974]
    

What should i do to enter only once the differential equation to program
calculate all?


Answer: You have to move the the equation input code out of your function `f(x,y)`

Ask for the equations to be input in the same block as you are asking for all
the other input.

As it stands your code calls the function at every time interval so will ask
for input at every time interval.

