eom 0.11.0

Configurable ODE/PDE solver
Documentation
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Accuracy check\n",
    "======="
   ]
  },
  {
   "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": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[m\u001b[m\u001b[32m\u001b[1m   Compiling\u001b[m eom v0.9.0 (file:///home/teramura/rhq/github.com/termoshtt/eom)\n",
      "\u001b[m\u001b[m\u001b[32m\u001b[1m    Finished\u001b[m release [optimized] target(s) in 4.8 secs\n",
      "\u001b[m\u001b[m\u001b[32m\u001b[1m     Running\u001b[m `/home/teramura/rhq/github.com/termoshtt/eom/target/release/examples/l63_accuracy`\n"
     ]
    }
   ],
   "source": [
    "! cargo run --release --example l63_accuracy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "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": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7fc055b10cc0>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nts1ERnqAAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fc055b80ef0>"
      ]
     },
     "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.4"
  },
  "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
}