diff --git a/Matlab refresher.ipynb b/Matlab refresher.ipynb
new file mode 100644
index 0000000..8cefa3e
--- /dev/null
+++ b/Matlab refresher.ipynb
@@ -0,0 +1,34 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Octave",
+ "language": "octave",
+ "name": "octave"
+ },
+ "language_info": {
+ "file_extension": ".m",
+ "help_links": [
+ {
+ "text": "MetaKernel Magics",
+ "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md"
+ }
+ ],
+ "mimetype": "text/x-octave",
+ "name": "octave",
+ "version": "0.19.14"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Untitled.ipynb b/Untitled.ipynb
new file mode 100644
index 0000000..2fd6442
--- /dev/null
+++ b/Untitled.ipynb
@@ -0,0 +1,6 @@
+{
+ "cells": [],
+ "metadata": {},
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/intro_to_numerical_integration.ipynb b/intro_to_numerical_integration.ipynb
new file mode 100644
index 0000000..41b8e77
--- /dev/null
+++ b/intro_to_numerical_integration.ipynb
@@ -0,0 +1,1392 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": true,
+ "slideshow": {
+ "slide_type": "skip"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "setdefaults"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "collapsed": true,
+ "slideshow": {
+ "slide_type": "skip"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "%plot --format svg"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "collapsed": true,
+ "slideshow": {
+ "slide_type": "skip"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "pkg load odepkg"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "slide"
+ }
+ },
+ "source": [
+ "## Intro to functions and m-files"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "slide"
+ }
+ },
+ "source": [
+ "## Building our own functions."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": true,
+ "slideshow": {
+ "slide_type": "fragment"
+ }
+ },
+ "source": [
+ "Functions are saved in memory (or better yet) in a folder in your path or current directory\n",
+ "\n",
+ "Example of storing a function in memory\n",
+ "\n",
+ "$f(x,y) = (xy^{3}-x^{3}y)$"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false,
+ "slideshow": {
+ "slide_type": "fragment"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "f =\n",
+ "\n",
+ "@(x, y) (x .* y .^ 3 - x .^ 3 .* y)\n",
+ "\n",
+ "ans = 6\n"
+ ]
+ }
+ ],
+ "source": [
+ "f= @(x,y) (x.*y.^3-x.^3.*y)\n",
+ "f(1,2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false,
+ "slideshow": {
+ "slide_type": "subslide"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ ""
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "x=linspace(-1,1,10); % 10 data points from -1 to 1\n",
+ "y=linspace(-1,1,10); % 10 data points from -1 to 1\n",
+ "[X,Y]=meshgrid(x,y); % 100 data points from -1 to 1 on the x- and y-axes\n",
+ "Z=f(X,Y); % Z=f(X,Y) evaluated at the 100 data points\n",
+ "\n",
+ "mesh(X,Y,Z)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "slide"
+ }
+ },
+ "source": [
+ "Here we will save a function called `my_ode` as `my_ode.m` For a single-DOF forced spring-mass-damper:\n",
+ "\n",
+ "$\\ddot{x}+2\\dot{x}+9x=\\cos(t/2)$"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "collapsed": true,
+ "slideshow": {
+ "slide_type": "fragment"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "function dr = my_ode(t,r)\n",
+ " % Help documentation for \"my_ode.m\"\n",
+ " % input is time, t (s) and r=[position (m); velocity (m/s)] and time\n",
+ " % output is dr=[velocity (m/s); acceleration (m/s/s)] at time, t\n",
+ " % the ODE is defined by:\n",
+ " %\n",
+ " % a = -2*v-9*x+cos(t/2)\n",
+ " \n",
+ " dr=zeros(size(r));\n",
+ " dr(1)=r(2);\n",
+ " dr(2)=-2*r(2)-9*r(1)+cos(2*t);\n",
+ "\n",
+ "end"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {
+ "collapsed": false,
+ "slideshow": {
+ "slide_type": "subslide"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "'my_ode' is a command-line function\n",
+ "\n",
+ " Help documentation for \"my_ode.m\"\n",
+ " input is time, t (s) and r=[position (m); velocity (m/s)] and time\n",
+ " output is dr=[velocity (m/s); acceleration (m/s/s)] at time, t\n",
+ " the ODE is defined by:\n",
+ "\n",
+ " a = -2*v-9*x+cos(t/2)\n",
+ "\n",
+ "\n",
+ "Additional help for built-in functions and operators is\n",
+ "available in the online version of the manual. Use the command\n",
+ "'doc ' to search the manual index.\n",
+ "\n",
+ "Help and information about Octave is also available on the WWW\n",
+ "at http://www.octave.org and via the help@octave.org\n",
+ "mailing list.\n"
+ ]
+ }
+ ],
+ "source": [
+ "help my_ode"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "slide"
+ }
+ },
+ "source": [
+ "## Euler approximation\n",
+ "\n",
+ "$r_{i+1}=r_{i}+\\frac{dr_{i}}{dt}\\Delta t$"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "collapsed": false,
+ "slideshow": {
+ "slide_type": "fragment"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "dt=0.1;\n",
+ "t=[0:dt:6*pi/2];\n",
+ "x0=0.1;\n",
+ "v0=0;\n",
+ "r=zeros(length(t),2);\n",
+ "r(1,:)=[x0;v0];\n",
+ "for i=2:length(t)\n",
+ " dr=my_ode(t(i-1),r(i-1,:));\n",
+ " r(i,:)=r(i-1,:)+dr*dt;\n",
+ "end\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "collapsed": false,
+ "slideshow": {
+ "slide_type": "subslide"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ ""
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plot(t,r(:,1))\n",
+ "xlabel('time (s)')\n",
+ "ylabel('position (m)')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": false,
+ "slideshow": {
+ "slide_type": "subslide"
+ }
+ },
+ "source": [
+ "## Runge-Kutta\n",
+ "\n",
+ "\n",
+ "Using `ode23` and `ode45` have the same syntax\n",
+ "\n",
+ "Numerical integration algorithms for differential equations:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "collapsed": false,
+ "slideshow": {
+ "slide_type": "subslide"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ ""
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "[t23,r23]=ode23(@(r,t) my_ode(r,t),[t(1),t(end)],[x0 v0]);\n",
+ "[t45,r45]=ode45(@(r,t) my_ode(r,t),[t(1),t(end)],[x0 v0]);\n",
+ "plot(t23,r23(:,1),'-',t45,r45(:,1),'.')\n",
+ "legend('ode23','ode45')\n",
+ "axis([0 10 -0.2 0.3])\n",
+ "xlabel('time (s)')\n",
+ "ylabel('position (m)')"
+ ]
+ }
+ ],
+ "metadata": {
+ "celltoolbar": "Slideshow",
+ "kernelspec": {
+ "display_name": "Octave",
+ "language": "octave",
+ "name": "octave"
+ },
+ "language_info": {
+ "file_extension": ".m",
+ "help_links": [
+ {
+ "text": "MetaKernel Magics",
+ "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md"
+ }
+ ],
+ "mimetype": "text/x-octave",
+ "name": "octave",
+ "version": "0.19.14"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/octave-workspace b/octave-workspace
index 14f8747..8c437bb 100644
Binary files a/octave-workspace and b/octave-workspace differ