{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Series Solutions With Python\n", "\n", "We are going to see how we can use Python to graph solutions (or approximations to solutions) of ODEs. The \n", "example we are using is: \n", "$$\n", "(1-t^2)x''(t) - 2tx'(t) + \\alpha(\\alpha + 1) = 0.\n", "$$\n", "\n", "\n", "Solutions can be expanded in a power series centered at zero on the interval $(-1,1)$. We can write this as: \n", "$$\n", "x(t) \n", "= a_0\\sum_{n=0}^{\\infty}a_{2n}t^{2n} + a_1\\sum_{n=0}^{\\infty}a_{2n+1}t^{2n+1}\n", "=: a_0x_{E}(t) + a_1x_{O}(t).\n", "$$\n", "Recall that the relation that the coefficients satisfies is: \n", "$$\n", "a_{k+2}\n", "= \\frac{k(k+1) - \\alpha(\\alpha + 1)}{(k+2)(k+1)}a_{k}.\n", "$$\n", "\n", "Writting this interms of $k$ instead of $k+2$ gives: \n", "$$\n", "a_{k} \n", "= \\frac{(k-2)(k-1) - \\alpha(\\alpha+1)}{k(k-1)}a_{k-2}\n", "$$\n", "\n", "This is not a relation that is easy to solve for and we will use python to compute the coefficients. The first thing we \n", "will do is to write a function that computes the coefficients in terms of $\\alpha, x(0), x'(0)$. As you can see, \n", "this is kind of diffucult to reat, but it's doable. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "zoo*a*x0*(a + 1)*(-a*(a + 1)/8 + 3/4)*(-a*(a + 1)/24 + 5/6)*(-a*(a + 1)/48 + 7/8)*(-a*(a + 1)/80 + 9/10)*(-a*(a + 1)/120 + 11/12)*(-a*(a + 1)/168 + 13/14)*(-a*(a + 1)/224 + 15/16)*(-a*(a + 1)/288 + 17/18)*(-a*(a + 1)/360 + 19/20)\n" ] } ], "source": [ "import sympy as sp \n", "\n", "def A(k):\n", " a = sp.symbols('a')\n", " x0=sp.symbols('x0')\n", " x0p=sp.symbols('x0p')\n", " if k==0:\n", " return x0\n", " if k==1:\n", " return x0p\n", " return (((k-2)*(k-1) - a*(a+1))/((k-2)*(k)))*A(k-2)\n", "\n", "print(A(20))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So, maybe the symbolic function has some uses, but it seems to be complicated here. Actually, it's really just the \n", "fact that $\\alpha$ (a in the code) is symbolic that is causing problems. In the code below, we keep x0 and \n", "x0p as symbolic variables, but define a as a literal number. \n", "\n", "In this case, we can also get python to write out a polynomial. Of course, the code below doesn't print the polynomial in\n", "the nicest format -- and you can always do \"easy\" things to make this polynomial look better. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(x0p)t^1+(-1.66666666666667*x0p)t^3+(0)t^5+(0)t^7+(0)t^9+(0)t^11+(0)t^13+(0)t^15+(0)t^17+(0)t^19+\n" ] } ], "source": [ "def A(k):\n", " a = 3\n", " x0=sp.symbols('x0')\n", " x0p=sp.symbols('x0p')\n", " if k==0:\n", " return x0\n", " if k==1:\n", " return x0p\n", " \n", " return (((k-2)*(k-1) - a*(a+1))/((k-1)*(k)))*A(k-2)\n", "\n", "poly = \"\"\n", "for k in range(0,10):\n", " poly = poly + f\"({A(2*k+1)})t^{2*k+1}+\"\n", "print(poly)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is good, but if we want to have Python plot stuff, we need to have literal values for x0 and x0p. We do \n", "that below: " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1)t^1+(-1.6666666666666667)t^3+(-0.0)t^5+(-0.0)t^7+(-0.0)t^9+(-0.0)t^11+(-0.0)t^13+(-0.0)t^15+(-0.0)t^17+(-0.0)t^19+\n" ] } ], "source": [ "def A(k):\n", " a = 3\n", " x0=1\n", " x0p=1\n", " if k==0:\n", " return x0\n", " if k==1:\n", " return x0p\n", " \n", " return (((k-2)*(k-1) - a*(a+1))/((k-1)*(k)))*A(k-2)\n", "\n", "#And odd polynomial\n", "poly = \"\"\n", "for k in range(0,10):\n", " poly = poly + f\"({A(2*k+1)})t^{2*k+1}+\"\n", "print(poly)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we saw in class, if $\\alpha=2n$ is even, $x_{E}(t)$ will be an $2n$ degree polynomial and if $\\alpha=2n+1$ is odd, then \n", "$x_{O}(t)$ will be a polynomial of degree $2n+1$. \n", "\n", "We need to fix the function a little and make it so that we can pass in the arguments for a, x0, x0p. \n", "This is just basic good programming practice. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1)t^1+(-1.6666666666666667)t^3+(-0.0)t^5+(-0.0)t^7+(-0.0)t^9+(-0.0)t^11+(-0.0)t^13+(-0.0)t^15+(-0.0)t^17+(-0.0)t^19+\n" ] } ], "source": [ "def A(k, a, x0,x0p):\n", " if k==0:\n", " return x0\n", " if k==1:\n", " return x0p\n", " \n", " return (((k-2)*(k-1) - a*(a+1))/((k-1)*(k)))*A(k-2, a, x0, x0p)\n", "\n", "poly = \"\"\n", "for k in range(0,10):\n", " poly = poly + f\"({A(2*k+1, 3, 1, 1)})t^{2*k+1}+\"\n", "print(poly)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below, we plot the solution for the parameters $a=3$, $x(0)=1$ and $x'(0)=1$. We plot degree $3,4,5,6$ polynomials. Each of\n", "these is an approximation to the actual solution. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "