# import some packages from __future__ import print_function import numpy as np ######################## # define some functions: ######################## # RHS of $\partial_t u$ def set_rhs(u, rhs, t): rhs[0] = 2.0 rhs[1] = u[1] rhs[2] = 2.0*t return rhs # u(t+dt) = u(t) + rhs * dt def calc_unew(u, rhs, dt): return u + rhs * dt # print columns with data at time t def pr_data(t, u): print(t, end=" ") for i in range(0, len(u)): print(u[i], end=" ") print() ############### # main program: ############### # time step dt = 0.001 # make evo vec. u and its rhs N = 3 u = np.empty([N]) rhs = np.empty([N]) # initial vals t = 0.0 u[0] = 0.0 u[1] = 1.0 u[2] = 0.0 pr_data(t, u) timesteps = 1000 # loop over time steps, and print results for n in range(0, timesteps): # make time step, using simple Euler method t = t + dt set_rhs(u, rhs, t) u = calc_unew(u, rhs, dt) # print columns with data pr_data(t, u)