{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Notebook to plot a curve and find its length.\n",
    "First import the python modules we will be using."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importing the required modules \n",
    "import matplotlib.pyplot as plt \n",
    "import numpy as np \n",
    "import sympy as sp\n",
    "from scipy.integrate import quad"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Edit the following to give the vales of $a$ and $b$ where $[a,b]$ is \n",
    "the domain of the curve and use the functions `x_eqn(t)` and `y_eqn(t)`\n",
    "to give the coordinates $x(t)$ and $y(t)$ of \n",
    "the curve.  In the example here we have $a=0$,\n",
    "$b=50$, $x(t) = e^{-.1t}\\cos(t)$, and $y(t) = e^{-.1t}\\sin(t)$.\n",
    "Note the we can not just use `cos(t)`, but have to use\n",
    "`np.cos(t)`.  This is because different python modules\n",
    "(in this case numpy) store functions in different formats.\n",
    "So we are telling python the use the numpy format.  Maybe\n",
    "the most annoying fact along these lines is that\n",
    "powers are expressed as `t**3` rather than `t^3`\n",
    "in python.\n",
    "\n",
    "Once you have all this edited hit `shift-enter` and you\n",
    "should get the graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# setting the t - coordinates \n",
    "a, b = 0,30 # Change as needed\n",
    "t_domain = np.arange(a, b, 0.01) \n",
    "# give the parametric equations of x and y \n",
    "def x_eqn(t):\n",
    "    return np.exp(-.1*t)*np.cos(t)\n",
    "def y_eqn(t):\n",
    "    return np.exp(-.1*t)*np.sin(t)\n",
    "x = [x_eqn(t) for t in t_domain ]\n",
    "y = [y_eqn(t) for t in t_domain ] \n",
    "  \n",
    "# potting the points \n",
    "plt.plot(x, y) \n",
    "plt.axis('equal') \n",
    "# function to show the plot \n",
    "plt.show() \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now compute the length.  As we need to\n",
    "take derivatives we need to reenter our functions\n",
    "in a format that can be used by sympy which is a\n",
    "module that can do symbolic calculations.  \n",
    "This is basically just taking the expressions\n",
    "in `x_eqn(t)` and `y_eqn(t)` and \n",
    "using them in the definitions of `x` and `y`\n",
    "in the following with each `.np` changed to a `.sp`.\n",
    "Then `shift-enter` should\n",
    "give you both the approximate length of the curve and a\n",
    "bound on the error.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " The length is approxamatly\n",
      " 9.549521776483614 \n",
      " wth and error of at most\n",
      " 1.0602098950411436e-13\n"
     ]
    }
   ],
   "source": [
    "t = sp.Symbol('t')\n",
    "x =  sp.exp(-.1*t)*sp.cos(t)\n",
    "y =  sp.exp(-.1*t)*sp.sin(t)\n",
    "v = sp.sqrt( sp.diff(x,t)**2 + sp.diff(y,t)**2 )\n",
    "def vel(u):\n",
    "    return v.subs(t,u)\n",
    "I = quad(vel,a,b)\n",
    "print(\" The length is approxamatly\\n\", I[0],\"\\n wth and error of at most\\n\",I[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "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.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
