ndarray-odeint 0.7.0

solve ODE using rust-ndarray
Documentation
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Accuracy test for ndarray-odeint"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## generate data for accuracy test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[m\u001b[32m\u001b[1m    Finished\u001b[m dev [unoptimized + debuginfo] target(s) in 0.0 secs\r\n",
      "\u001b[m\u001b[32m\u001b[1m     Running\u001b[m `target/debug/accuracy`\r\n"
     ]
    }
   ],
   "source": [
    "! cargo run --bin accuracy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "euler = pd.read_csv(\"euler.csv\").dropna().set_index(\"dt\")\n",
    "heun = pd.read_csv(\"heun.csv\").dropna().set_index(\"dt\")\n",
    "rk4 = pd.read_csv(\"rk4.csv\").dropna().set_index(\"dt\")\n",
    "diag_rk4 = pd.read_csv(\"diag_rk4.csv\").dropna().set_index(\"dt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7fdc52a01c50>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fdc52a6cdd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(euler, \"b+-\", label=\"Euler\")\n",
    "plt.plot(heun, \"g+-\", label=\"Heun\")\n",
    "plt.plot(rk4, \"r+-\", label=\"RK4\")\n",
    "plt.plot(diag_rk4, \"+-\", label=\"RK4(si)\", color=\"orange\")\n",
    "plt.plot(euler.index, 200*euler.index, \"b:\", label=r\"$\\propto dt^1$\")\n",
    "plt.plot(heun.index, 1000*heun.index**2, \"g:\", label=r\"$\\propto dt^2$\")\n",
    "plt.plot(rk4.index, 80000*rk4.index**4, \"r:\", label=r\"$\\propto dt^4$\")\n",
    "plt.xscale(\"log\")\n",
    "plt.yscale(\"log\")\n",
    "plt.xlabel(\"dt\")\n",
    "plt.ylabel(\"accuray (deviation from truth)\")\n",
    "plt.axis(\"tight\")\n",
    "plt.legend(loc=4, ncol=2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(si) means semi-implicit scheme"
   ]
  }
 ],
 "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.6.1"
  },
  "toc": {
   "colors": {
    "hover_highlight": "#DAA520",
    "running_highlight": "#FF0000",
    "selected_highlight": "#FFD700"
   },
   "moveMenuLeft": true,
   "nav_menu": {
    "height": "66px",
    "width": "252px"
   },
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 4,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}