2.3 Calculation (with Python)
Course subject(s)
2. Improving the model
Python program for Euler’s Method
In the previous section Euler’s Method was introduced, and now you can approximate the solution of a differential equation. Of course calculations by hand are inefficient. The method is very suitable to implement in a computer program: much faster and probably more accurate. So in this section, you will use Python to simulate the same solutions.
You can download the basic code for Euler’s method here: Basic_Euler.py.
Run it, and see what it does!
Basic_Euler.py: header and initialisations
# Program : Euler's Method
# Author : MOOC team Mathematical Modelling Basics
# Created : April, 2017
import numpy as np
import matplotlib.pyplot as plt
print("Solution for dP/dt = 0.7*P")
Dt = 0.1 # timestep Delta t
P_init = 10 # initial population
t_init = 0 # initial time
t_end = 5 # stopping time
n_steps = int(round((t_end-t_init)/Dt)) # total number of timesteps
P_arr = np.zeros(n_steps + 1) # create an array of zeros for P
t_arr = np.zeros(n_steps + 1) # create an array of zeros for t
t_arr[0] = t_init # add the initial t to the array
P_arr[0] = P_init # add the initial P to the array
Basic_Euler.py: Iterations Euler’s Method
for i in range (1, n_steps + 1):
P = P_arr[i-1]
t = t_arr[i-1]
dPdt = 0.7*P # calculate the derivative
P_arr[i] = P + Dt*dPdt # calculate P on the next time step
t_arr[i] = t + Dt # adding the new t-value to the list
Basic_Euler.py: Plotting the results
fig = plt.figure() # create figure
plt.plot(t_arr, P_arr, linewidth = 4) # plot population vs. time
plt.title('dP/dt = 0.7P, P(0)=10', fontsize = 25)
plt.xlabel('t (in days)', fontsize = 20)
plt.ylabel('P(t)', fontsize = 20)
plt.xticks(fontsize = 15)
plt.yticks(fontsize = 15)
plt.grid(True) # show grid
plt.axis([0, 5, 0, 200]) # define the axes
plt.show() # show the plot
# save the figure as .jpg
fig.savefig('Rainbowfish.jpg', dpi=fig.dpi, bbox_inches = "tight")
As you have seen in the previous section, a large time step of 7 days leads to results that are not valid for the rainbowfish population. In the next video you will see what happens when the stepsize is reduced.
Euler's method
Sorry, there don't seem to be any downloads..
Subtitles (captions) in other languages than provided can be viewed at YouTube. Select your language in the CC-button of YouTube.
In the video you have seen that a step size of 1 day is not too large to obtain reasonable results. Now it is time for you to do some programming yourself.
Our problem:
Find teq such that P(teq)=720, when
t_arr[21]
and P_arr[21]
. Alternatively, you can put print
statements in your program and run it (again).Mathematical Modeling Basics by TU Delft OpenCourseWare is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Based on a work at https://online-learning.tudelft.nl/courses/mathematical-modeling-basics/.