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?
Correct me if I don't have understood. Are you trying to get an expression manually-typed by the user and treat that as a function? I found this topic where it explains how to parse a formula using sympy. You can try to modify your program using sympy. In this manner you should be able to get your equation once for all.
EDIT: if your problem is just "how to get the entire formula once from input..." you can just try to use the raw_input() method. Have also a look here: