Skip to content

Instantly share code, notes, and snippets.

@Lucia-Fonseca
Created March 16, 2022 10:20
Show Gist options
  • Save Lucia-Fonseca/f3fbedad345f5ff02e6d22efc7875c3f to your computer and use it in GitHub Desktop.
Save Lucia-Fonseca/f3fbedad345f5ff02e6d22efc7875c3f to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "painful-channels",
"metadata": {},
"source": [
"# CLASS SOLVER FOR ORDINARY DIFFERENTIAL EQUATIONS"
]
},
{
"cell_type": "markdown",
"id": "coated-brother",
"metadata": {},
"source": [
"There is often no analytical solution to systems with nonlinear, interacting dynamics. We can, however, examine the dynamics using numerical methods. SOURCE https://www.pharmacoengineering.com/2018/11/29/3290/"
]
},
{
"cell_type": "markdown",
"id": "opponent-barrel",
"metadata": {},
"source": [
"Ordinary Differential Equations (ODEs) describe the evolution of a system subject to internal and external dynamics. Specifically, an ODE links a quantity depending on a single independent variable (time, for example) to its derivatives. In addition, the system can be under the influence of external factors. \n",
"\n",
"A first-order ODE can typically be written as: $y′(t)=f(t,y(t))$"
]
},
{
"cell_type": "markdown",
"id": "welcome-amazon",
"metadata": {},
"source": [
"## 1. Coding a Python function method\n",
"\n",
"1. Let’s import NumPy, SciPy (the integrate package), and matplotlib:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "nearby-graham",
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import numpy as np\n",
"import scipy.integrate as spi"
]
},
{
"cell_type": "markdown",
"id": "differential-bridge",
"metadata": {},
"source": [
"2. We define a few parameters appearing in our model:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "mental-criticism",
"metadata": {},
"outputs": [],
"source": [
"m = 1. # particle's mass\n",
"k = 1. # drag coefficient\n",
"g = 9.81 # gravity acceleration"
]
},
{
"cell_type": "markdown",
"id": "metropolitan-lodge",
"metadata": {},
"source": [
"3. We have two variables: $x$ and $y$ (two dimensions). We note $u=(x,y)$. The ODE that we are going to simulate is: $u″=−kmu′+ g$\n",
"\n",
"Here, $g$ is the gravity acceleration vector.\n",
"\n",
"In order to simulate this second-order ODE with SciPy, we can convert it to a first-order ODE (another option would be to solve $u′$ first before integrating the solution). \n",
"\n",
"To do this, we consider two 2D variables: $u$ and $u′$. We note $v=(u,u′)$. We can express $v′$ as a function of $v$. \n",
"\n",
"Now, we create the initial vector $v_0$ at time $t=0$. For example, the initial position is $u_0 =(0,0)$ and the initial velocity is $u'_0 = (4,10)$, therefore $v_0 = (u_0, u_0')$."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "removed-census",
"metadata": {},
"outputs": [],
"source": [
"# The initial position is (0, 0).\n",
"v0 = np.zeros(4)\n",
"# The initial speed vector is oriented\n",
"# to the top right.\n",
"v0[2] = 4.\n",
"v0[3] = 10."
]
},
{
"cell_type": "markdown",
"id": "horizontal-surrey",
"metadata": {},
"source": [
"4. Let’s create a Python function $f$ that takes the current vector $v_0$ and a time $t_0$ as arguments (with optional parameters) and that returns the derivative $v′(t_0)$:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "institutional-eleven",
"metadata": {},
"outputs": [],
"source": [
"def f(v, t0, k):\n",
" # v has four components: v=[u, u'].\n",
" u, udot = v[:2], v[2:]\n",
" # We compute the second derivative u'' of u.\n",
" udotdot = -k / m * udot\n",
" udotdot[1] -= g\n",
" # We return v'=[u', u''].\n",
" return np.r_[udot, udotdot]"
]
},
{
"cell_type": "markdown",
"id": "municipal-placement",
"metadata": {},
"source": [
"5. Now, we simulate the system for different values of $k$. We use the SciPy `odeint()` function, defined in the `scipy.integrate` package."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "occupied-greek",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1, figsize=(8, 4))\n",
"\n",
"# We want to evaluate the system on 30 linearly\n",
"# spaced times between t=0 and t=3.\n",
"t = np.linspace(0., 3., 30)\n",
"\n",
"# We simulate the system for different values of k.\n",
"for k in np.linspace(0., 1., 5):\n",
" # We simulate the system and evaluate $v$ on the\n",
" # given times.\n",
" v = spi.odeint(f, v0, t, args=(k,))\n",
" # We plot the particle's trajectory.\n",
" ax.plot(v[:, 0], v[:, 1], 'o-', mew=1, ms=8,\n",
" mec='w', label=f'k={k:.1f}')\n",
"ax.legend()\n",
"ax.set_xlim(0, 12)\n",
"ax.set_ylim(0, 6)\n",
"ax.set_ylabel('y')\n",
"ax.set_xlabel('x')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "absolute-market",
"metadata": {},
"source": [
"In the preceding figure, the most outward trajectory (blue) corresponds to drag-free motion (without air resistance). It is a parabola. In the other trajectories, we can observe the increasing effect of air resistance, parameterized with $k$."
]
},
{
"cell_type": "markdown",
"id": "piano-escape",
"metadata": {},
"source": [
"## Class wrapping of a function"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "specified-gasoline",
"metadata": {},
"outputs": [],
"source": [
"class TrayectorySolver(object):\n",
" def __init__(self, f):\n",
" if not callable(f):\n",
" raise TypeError('f is %s, not a function' % type(f))\n",
" self.f = f\n",
" \n",
" def set_initial_condition(self, V0):\n",
" self.V0 = np.asarray(V0)\n",
" \n",
" def solve(self, time_points):\n",
" \"\"\"Compute u for t values in time_points list.\"\"\"\n",
" self.t = np.asarray(time_points)\n",
" \n",
" self.v = spi.odeint(f, self.V0, t, args=(k,))\n",
" return self.v[:, 0], self.v[:, 1]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "sublime-nation",
"metadata": {},
"outputs": [],
"source": [
"listxy = []\n",
"kv = np.linspace(0., 1., 5)\n",
"\n",
"for i, k in enumerate(kv):\n",
" def fk(v):\n",
" return f(v, 0, k)\n",
" solver = TrayectorySolver(fk)\n",
" solver.set_initial_condition(v0)\n",
" listxy.append(solver.solve(t))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "smaller-samuel",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1, figsize=(8, 4))\n",
"\n",
"for i, k in enumerate(kv):\n",
" ax.plot(listxy[i][0], listxy[i][1], 'o-', mew=1, ms=8,\n",
" mec='w', label=f'k={k:.1f}')\n",
"ax.legend()\n",
"ax.set_xlim(0, 12)\n",
"ax.set_ylim(0, 6)\n",
"ax.set_ylabel('y')\n",
"ax.set_xlabel('x')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "quick-preservation",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment