{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tutorial 4 - Solving ODEs\n", "\n", "This fourth tutorial will go over how to solve first, second, and third order ODEs.\n", "\n", "## 4.1 First Order ODEs\n", "\n", "Although first order differential equations don't come up very often in fluid dynamics (or most subjects in physics), it's best to start there for this tutorial -- as we'll see, if you can solve a first order ODE, you can solve any higher order as well.\n", "\n", "Consider, then, the simple equation\n", "$$\n", "\\frac{du}{dy} = k,\n", "$$\n", "where $k$ is a constant. We can solve this without numerical methods, of course; the solution for the function $u(y)$ is\n", "$$\n", "u(y) = ky + c_1,\n", "$$\n", "where $c_1$ is our single integration constant, which we can find with our boundary conditions. If we suppose \n", "$$\n", "u(0) = 0,\n", "$$\n", "then $c_1 = 0$.\n", "\n", "How do we find this solution numerically? I'll cover *Euler's method* here -- it's the lowest-order (and most error-prone) method of numerically solving ODEs, but it works fine in most cases we'll encounter. The basic idea is to convert the $d$s in the differential equation to $\\Delta$s:\n", "$$\n", "\\frac{\\Delta u}{\\Delta y} = k.\n", "$$\n", "Then we can rearrange to get\n", "$$\n", "\\Delta u = k \\Delta y.\n", "$$\n", "If we know one point -- and we do, from our boundary condition $u(0) = 0$ -- we can build the function $u(y)$ up piece by piece by choosing a suitably small *stepsize* $\\Delta y$ and finding $\\Delta u$; the iterative solution is\n", "$$\n", "u_{i+1} = u_i + \\Delta u = u_i + k \\Delta y.\n", "$$\n", "\n", "Let's see how this works in code:\n", "\n", "* Basic solving (using a fluids example with known solution; 1st order? Then 2nd order?)\n", "* Boundary conditions\n", "* Advanced solving (boundary layer example)\n", "* SciPy functions?" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "from matplotlib import rc\n", "import numpy as np\n", "\n", "rc('text.latex',preamble='\\\\usepackage{libertine}\\n\\\\usepackage[libertine]{newtxmath}')\n", "rc('font',**{'family':'serif','serif':['Linux Libertine O']}, size=18)\n", "rc('text', usetex=True)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, '$u(y)$')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# set the value of the constant k\n", "k = 1.234\n", "\n", "# choose the step size, and the starting and ending point\n", "dy = 0.1\n", "y_i = 0.0\n", "y_f = 1.0\n", "\n", "# create NumPy arrays to hold our variables in\n", "y = np.arange(y_i, y_f, dy)\n", "u = np.zeros(len(y))\n", "\n", "# set boundary condition\n", "u[0] = 0\n", "\n", "# iterate to find full solution between y_i and y_f\n", "for i in range(len(y) - 1):\n", " du = k * dy\n", " u[i+1] = u[i] + du\n", " \n", "# plot the results along with the analytical solution\n", "plt.plot(y, u, \"o\")\n", "plt.plot(y, k*y)\n", "plt.xlabel(\"$y$\")\n", "plt.ylabel(\"$u(y)$\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, maybe that was a little too simple. Let's try the ODE\n", "$$\n", "\\frac{du}{dy} = -u,\n", "$$\n", "which has the solution\n", "$$\n", "u(y) = A e^{-y}.\n", "$$\n", "We'll set our boundary condition so that $u(0) = 1$, in which case $A = 1$. Let's try it:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, '$u(y)$')" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def decay(y, u):\n", " return -u\n", "\n", "# change y_f\n", "y_f = 4.0\n", "\n", "y = np.arange(y_i, y_f, dy)\n", "u = np.zeros(len(y))\n", "\n", "# restart by setting the initial condition again; this time make it 1\n", "u[0] = 1\n", "\n", "for i in range(len(y) - 1):\n", " du = decay(y[i], u[i]) * dy\n", " u[i+1] = u[i] + du\n", " \n", "plt.plot(y, u, \"o\")\n", "plt.plot(y, np.exp(-y))\n", "plt.xlabel(\"$y$\")\n", "plt.ylabel(\"$u(y)$\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, it looks like the numerical solution differs from the correct by a little bit, especially in the middle. We can fix that by choosing a smaller step size (or using a better algorithm than Euler). But let's also build a function that solves a general first order ODE for us. Here we go:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def solve_ode(fun, y_i, y_f, dy, u0):\n", " \n", " # create NumPy arrays to hold our variables in\n", " y = np.arange(y_i, y_f, dy)\n", " u = np.zeros(len(y))\n", " u[0] = u0\n", " \n", " for i in range(len(y) - 1):\n", " du = fun(y[i], u[i]) * dy\n", " u[i+1] = u[i] + du\n", " \n", " return y, u\n", "\n", "# try it:\n", "y, u = solve_ode(decay, 0, 4, 0.001, 1)\n", "plt.plot(y, u, \".\")\n", "plt.plot(y, np.exp(-y)) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's all there is to it -- making $dy$ smaller improves the accuracy, but at the expense of longer runtime and larger arrays.\n", "\n", "What about higher order ODEs?\n", "\n", "## 4.2 Second Order ODEs\n", "\n", "Let's start with a nice simple second order ODE, which arrises in plane parallel Poiseuille flow:\n", "$$\n", "\\frac{d^2u}{dy^2} = -k,\n", "$$\n", "with $k$ a constant. The solution is simple to find, and is\n", "$$\n", "u(y) = -\\frac{1}{2} k y^2 + c_1 y + c_2.\n", "$$\n", "If we take the boundary conditions as \n", "$$\n", "u(0) = 0 \\quad \\text{and} \\quad \\left. \\frac{du}{dy} \\right|_{y=0} = 1,\n", "$$\n", "then $c_2 = 0$ and $c_1 = 1$, and the solution is\n", "$$\n", "u(y) = -\\frac{1}{2} k y^2 + y.\n", "$$\n", "\n", "How do we solve this numerically? The trick is to turn this second order ODE into two first order ODEs, which we can do by introducsing a new variable $a(y)$ such that\n", "$$\n", "\\frac{du}{dy} = a(y).\n", "$$\n", "Along with the original equation,\n", "$$\n", "\\frac{da}{dy} = -k,\n", "$$\n", "we now have two first order ODEs that are equivalent to the original second order one.\n", "\n", "Each first order ODE can be solved in the same way we did above, with one extra thing to be careful of -- the equations are *coupled*, and so can't be solved independently. Here's how we can do that:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, '$u(y)$')" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# set the value of the constant k\n", "k = 1.234\n", "\n", "def f1(y, u, a):\n", " return a\n", "\n", "def f2(y, u, a):\n", " return -k\n", "\n", "def solve_ivp2(fun1, fun2, y_i, y_f, dy, u0, a0): \n", " \n", " # create NumPy arrays to hold our variables in\n", " y = np.arange(y_i, y_f, dy)\n", " u = np.zeros(len(y))\n", " a = np.zeros(len(y))\n", "\n", " # set boundary conditions\n", " u[0] = u0\n", " a[0] = a0\n", " \n", " # iterate to find full solution between y_i and y_f\n", " for i in range(len(y) - 1):\n", " du = fun1(y[i], u[i], a[i]) * dy\n", " da = fun2(y[i], u[i], a[i]) * dy\n", " u[i+1] = u[i] + du\n", " a[i+1] = a[i] + da\n", " \n", " return y, u, a\n", "\n", "y, u, a = solve_ivp2(f1, f2, 0, 1, 0.001, 0, 1)\n", "\n", "# plot the results along with the analytical solution\n", "plt.plot(y, u, \".\")\n", "plt.plot(y, -0.5*k*y**2 + y)\n", "plt.xlabel(\"$y$\")\n", "plt.ylabel(\"$u(y)$\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4.3 Boundary Value Problems\n", "\n", "Suppose, in the problem above, we instead had boundary conditions\n", "$$\n", "u(y) = 0 \\quad \\text{and} \\quad u(1) = 0.\n", "$$\n", "Notice that we no longer have an *initial value problem*, in which we're given the initial value of the two functions we're looking for ($u$ and $a$), but have instead two boundary values given for one of the functions.\n", "\n", "This is more difficult to solve, since we don't have any information about the initial value of $a$. However, *some* value of $a_0 \\equiv a(0)$ will lead to the second boundary $u(1) = 0$, and we can attempt to \"guess\" that value using what's called a *shooting method*. \n", "\n", "Let's give this a try, first just by guessing a couple of different values for $a_0$." ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "With a_0 = 0.1, the velocity at y = 0.999 is u = -0.5152502339999965\n", "With a_0 = 2.0, the velocity at y = 0.999 is u = 1.3828497660000205\n" ] }, { "data": { "text/plain": [ "Text(0, 0.5, '$u(y)$')" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a_01 = 0.1\n", "a_02 = 2.0\n", "y1, u1, a1 = solve_ivp2(f1, f2, 0, 1, 0.001, 0, a_01)\n", "y2, u2, a2 = solve_ivp2(f1, f2, 0, 1, 0.001, 0, a_02)\n", "\n", "print(f\"With a_0 = {a_01}, the velocity at y = {y1[-1]} is u = {u1[-1]}\")\n", "print(f\"With a_0 = {a_02}, the velocity at y = {y2[-1]} is u = {u2[-1]}\")\n", " \n", "# plot the results along with the analytical solution\n", "plt.plot(y1, u1)\n", "plt.plot(y2, u2)\n", "plt.xlabel(\"$y$\")\n", "plt.ylabel(\"$u(y)$\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Well, clearly neither $a_0 = 0.1$ nor $a_0 = 2$ works perfectly. Presumably -- and this is the key thing -- the correct value for $a_0$ lies between these two, and we can do a simple bisection search to find the value of $a_0$ within some tolerance. Let try it." ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a0_mid = 1.05, u = 0.4337997660000131\n", "a0_mid = 0.5750000000000001, u = -0.04072523400000126\n", "a0_mid = 0.8125, u = 0.19653726600000665\n", "a0_mid = 0.6937500000000001, u = 0.07790601600000295\n", "a0_mid = 0.6343750000000001, u = 0.0185903910000009\n", "a0_mid = 0.6046875, u = -0.011067421500000191\n", "a0_mid = 0.6195312500000001, u = 0.0037614847500003867\n", "a0_mid = 0.6121093750000001, u = -0.003652968374999976\n", "a0_mid = 0.6158203125000001, u = 5.425818750022721e-05\n" ] } ], "source": [ "def test_a(a0_left, a0_right, tol):\n", " # assumes correct value of a0 is between a_left and a_right\n", " # try it at the midpoint\n", " a0_mid = a0_left + 0.5 * (a0_right - a0_left)\n", " y_mid, u_mid, a_mid = solve_ivp2(f1, f2, 0, 1, 0.001, 0, a0_mid)\n", " print(f\"a0_mid = {a0_mid}, u = {u_mid[-1]}\")\n", " if abs(u_mid[-1]) < tol:\n", " return y_mid, u_mid, a_mid\n", " \n", " if u_mid[-1] > 0:\n", " return test_a(a0_left, a0_mid, tol)\n", " else:\n", " return test_a(a0_mid, a0_right, tol)\n", " \n", "y, u, a = test_a(0.1, 2.0, 0.001)" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, '$u(y)$')" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(y, u)\n", "plt.xlabel(\"$y$\")\n", "plt.ylabel(\"$u(y)$\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4.4 Using SciPy\n", "\n", "Rather than building our own code -- which is illustrative and fun! -- we can instead use methods from the SciPy package. \n", "\n", "For example, here's some code to solve the second order ODE with initial values from above." ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, '$u(y)$')" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scipy.integrate import solve_ivp\n", "\n", "# this function combines f1 and f2 above\n", "def fun(y, ua):\n", " u = ua[0]\n", " a = ua[1]\n", " \n", " return [a, -k]\n", "\n", "y_i = 0\n", "y_f = 1\n", "\n", "# boundary conditions for u and a\n", "u0 = 0\n", "a0 = 1\n", "\n", "sol = solve_ivp(fun, [y_i, y_f], [u0, a0], t_eval = np.linspace(0, 1, 10))\n", "plt.plot(sol.t, sol.y[0], \"o\")\n", "plt.plot(y, -0.5*k*y**2 + y)\n", "plt.xlabel(\"$y$\")\n", "plt.ylabel(\"$u(y)$\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "SciPy will also do boundary value problems, but I'll let you try that on your own." ] } ], "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.10.6" } }, "nbformat": 4, "nbformat_minor": 4 }