From 76e44fd7b1af1ff3bfb78e8cbd63fec376349096 Mon Sep 17 00:00:00 2001 From: "Ryan C. Cooper" Date: Tue, 14 Jan 2020 10:16:01 -0500 Subject: [PATCH] cleaning up files --- .../01-Introduction-checkpoint.ipynb | 460 - 01_Introduction/octave-workspace | Bin 153 -> 0 bytes .../02_Getting-started-checkpoint.ipynb | 13750 ---------------- .../octave-workspace | Bin 153 -> 0 bytes ...tent-coding and functions-checkpoint.ipynb | 1041 -- 05_consistent coding/gp_image_01.png | Bin 170 -> 0 bytes 05_consistent coding/my_caller.m | 23 - 05_consistent coding/my_function.m | 21 - 05_consistent coding/nitrogen_pressure.m | 10 - 05_consistent coding/octave-workspace | Bin 2893 -> 0 bytes 05_consistent coding/setdefaults.m | 3 - data/carpet_age.csv | 24 - data/life_exp_avg_continent_year.csv | 13 - data/mae_bulletin.txt | 431 - data/maunaloa_CO2.csv | 703 - ...NumPy_Arrays_and_Plotting-checkpoint.ipynb | 1644 -- ...Regression_with_Real_Data-checkpoint.ipynb | 1230 -- 17 files changed, 19353 deletions(-) delete mode 100644 01_Introduction/.ipynb_checkpoints/01-Introduction-checkpoint.ipynb delete mode 100644 01_Introduction/octave-workspace delete mode 100644 02_Roundoff-Truncation errors/.ipynb_checkpoints/02_Getting-started-checkpoint.ipynb delete mode 100644 02_Roundoff-Truncation errors/octave-workspace delete mode 100644 05_consistent coding/.ipynb_checkpoints/05_consistent-coding and functions-checkpoint.ipynb delete mode 100644 05_consistent coding/gp_image_01.png delete mode 100644 05_consistent coding/my_caller.m delete mode 100644 05_consistent coding/my_function.m delete mode 100644 05_consistent coding/nitrogen_pressure.m delete mode 100644 05_consistent coding/octave-workspace delete mode 100644 05_consistent coding/setdefaults.m delete mode 100644 data/carpet_age.csv delete mode 100644 data/life_exp_avg_continent_year.csv delete mode 100644 data/mae_bulletin.txt delete mode 100644 data/maunaloa_CO2.csv delete mode 100644 notebooks_en/.ipynb_checkpoints/4_NumPy_Arrays_and_Plotting-checkpoint.ipynb delete mode 100644 notebooks_en/.ipynb_checkpoints/5_Linear_Regression_with_Real_Data-checkpoint.ipynb diff --git a/01_Introduction/.ipynb_checkpoints/01-Introduction-checkpoint.ipynb b/01_Introduction/.ipynb_checkpoints/01-Introduction-checkpoint.ipynb deleted file mode 100644 index ccd5cd7..0000000 --- a/01_Introduction/.ipynb_checkpoints/01-Introduction-checkpoint.ipynb +++ /dev/null @@ -1,460 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "# Freefall Model\n", - "## Octave solution (will run same on Matlab)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "An object falling is subject to the force of \n", - "\n", - "- gravity ($F_g$=mg) and \n", - "- drag ($F_d=cv^2$)\n", - "\n", - "Acceleration of the object:\n", - "\n", - "$\\sum F=ma=F_g-F_d=mg - cv^2 = m\\frac{dv}{dt}$\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true, - "slideshow": { - "slide_type": "skip" - } - }, - "outputs": [], - "source": [ - "%plot --format svg" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "Define time from 0 to 12 seconds\n", - "\n", - "t=[0,2,4,6,8,10,12]'" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false, - "slideshow": { - "slide_type": "fragment" - } - }, - "outputs": [], - "source": [ - "t=[0,2,4,6,8,10,12]';\n", - "% or \n", - "t=[0:2:12]';" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "### Define constants and analytical solution (meters-kilogram-sec)\n", - "\n", - "g=9.81 m/s$^2$, c=0.25 kg/m, m=60 kg\n", - "\n", - "$v_{terminal}=\\sqrt{\\frac{mg}{c}}$\n", - "\n", - "$v=v_{terminal}\\tanh{\\left(\\frac{gt}{v_{terminal}}\\right)}$" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false, - "slideshow": { - "slide_type": "fragment" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "v_terminal = 48.522\n", - "v_analytical =\n", - "\n", - " 0.00000\n", - " 18.61630\n", - " 32.45521\n", - " 40.64183\n", - " 44.84646\n", - " 46.84974\n", - " 47.77002\n", - "\n" - ] - } - ], - "source": [ - "c=0.25; m=60; g=9.81; v_terminal=sqrt(m*g/c)\n", - "\n", - "v_analytical = v_terminal*tanh(g*t/v_terminal)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "### Define numerical method\n", - "#### Finite difference approximation\n", - "\n", - "$\\frac{v(t_{i+1})-v(t_{i})}{t_{i+1}-t_{i}}=g-\\frac{c}{m}v(t_{i})^2$\n", - "\n", - "solve for $v(t_{i+1})$\n", - "\n", - "$v(t_{i+1})=v(t_{i})+\\left(g-\\frac{c}{m}v(t_{i})^2\\right)(t_{i+1}-t_{i})$\n", - "\n", - "or\n", - "\n", - "$v(t_{i+1})=v(t_{i})+\\frac{dv_{i}}{dt}(t_{i+1}-t_{i})$\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false, - "slideshow": { - "slide_type": "subslide" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "v_numerical =\n", - "\n", - " 0.00000\n", - " 19.62000\n", - " 36.03213\n", - " 44.83284\n", - " 47.70298\n", - " 48.35986\n", - " 48.49089\n", - "\n" - ] - } - ], - "source": [ - "v_numerical=zeros(length(t),1);\n", - "for i=1:length(t)-1\n", - " v_numerical(i+1)=v_numerical(i)+(g-c/m*v_numerical(i)^2)*2;\n", - "end\n", - "v_numerical" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "Display time, velocity (analytical) and velocity (numerical)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false, - "slideshow": { - "slide_type": "fragment" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "time (s)|vel analytical (m/s)|vel numerical (m/s)\n", - "-----------------------------------------------\n", - " 0.0 | 0.00 | 0.00\n", - " 2.0 | 18.62 | 19.62\n", - " 4.0 | 32.46 | 36.03\n", - " 6.0 | 40.64 | 44.83\n", - " 8.0 | 44.85 | 47.70\n", - " 10.0 | 46.85 | 48.36\n", - " 12.0 | 47.77 | 48.49\n" - ] - } - ], - "source": [ - "fprintf('time (s)|vel analytical (m/s)|vel numerical (m/s)\\n')\n", - "fprintf('-----------------------------------------------')\n", - "M=[t,v_analytical,v_numerical];\n", - "fprintf('%7.1f | %18.2f | %15.2f\\n',M(:,1:3)');" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "## Set default values for plotting" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": true, - "slideshow": { - "slide_type": "fragment" - } - }, - "outputs": [], - "source": [ - "set (0, \"defaultaxesfontsize\", 18)\n", - "set (0, \"defaulttextfontsize\", 18) \n", - "set (0, \"defaultlinelinewidth\", 4)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false, - "slideshow": { - "slide_type": "subslide" - } - }, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "Gnuplot\n", - "Produced by GNUPLOT 5.0 patchlevel 3 \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t \n", - "\t \n", - "\t\n", - "\t\n", - "\t \n", - "\t \n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\t\n", - "\t\t0\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t10\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t20\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t30\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t40\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t50\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t0\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t2\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t4\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t6\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t8\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t10\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t12\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\n", - "\t\tvelocity (m/s)\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\ttime (s)\n", - "\t\n", - "\n", - "\n", - "\n", - "\tgnuplot_plot_1a\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\tgnuplot_plot_2a\n", - "\n", - "\t\t \n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot(t,v_analytical,'-',t,v_numerical,'o-')\n", - "xlabel('time (s)')\n", - "ylabel('velocity (m/s)')" - ] - } - ], - "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/01_Introduction/octave-workspace b/01_Introduction/octave-workspace deleted file mode 100644 index 8c437bb6e55a5d1b6115661b3a20e86870909d32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeZIE=ep))iu=hVPIxpU`Wg>29gX6|5<=Ua%xV_zyJULGXmL6K+FfkHXuRW)ST4Z s)VvZqpa4)UCy*#Ej4v)J%FIiLX#g3JmQ#{Vk|uVbru4khf}H#k0D5999{>OV diff --git a/02_Roundoff-Truncation errors/.ipynb_checkpoints/02_Getting-started-checkpoint.ipynb b/02_Roundoff-Truncation errors/.ipynb_checkpoints/02_Getting-started-checkpoint.ipynb deleted file mode 100644 index c2b832b..0000000 --- a/02_Roundoff-Truncation errors/.ipynb_checkpoints/02_Getting-started-checkpoint.ipynb +++ /dev/null @@ -1,13750 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "# Errors in Numerical Modeling\n", - "\n", - "## 1 - Roundoff \n", - "## 2 - Truncation" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "# 1- Roundoff" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "## Just storing a number in a computer requires rounding\n", - "\n", - "1. digital representation of a number is rarely exact\n", - "\n", - "2. arithmetic (+,-,/,\\*) causes roundoff error\n", - "\n", - "[Consider the number $\\pi$](https://www.piday.org/million/). How many digits can a floating point number in a computer accurately represent?" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "slideshow": { - "slide_type": "fragment" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "double precision 64 bit pi = 3.1415926535897931159979635\n", - "\n", - "single precision 32 bit pi = 3.1415927410125732421875000\n", - "\n", - "First 26 digits of pi = 3.14159265358979323846264338\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "pi=np.pi\n", - "double=np.array([pi],dtype='float64')\n", - "single=np.array([pi],dtype='float32')\n", - "print('double precision 64 bit pi = %1.25f\\n'%double) # 64-bit\n", - "print('single precision 32 bit pi = %1.25f\\n'%single) # 32-bit\n", - "print('First 26 digits of pi = 3.14159265358979323846264338')" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "realmax = 1.79769313486231570815e+308\n", - "\n", - "realmin = 2.22507385850720138309e-308\n", - "\n", - "maximum relative error = 2.22044604925031308085e-16\n", - "\n" - ] - } - ], - "source": [ - "print('realmax = %1.20e\\n'%np.finfo('float64').max)\n", - "print('realmin = %1.20e\\n'%np.finfo('float64').tiny)\n", - "print('maximum relative error = %1.20e\\n'%np.finfo('float64').eps)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "## Machine epsilon\n", - "\n", - "Smallest number that can be added to 1 and change the value in a computer" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": { - "slideshow": { - "slide_type": "fragment" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "summation 1+eps/2 over 1000000 minus 1 = 0.0\n", - "1000000 *eps/2 = 1.11022302463e-10\n" - ] - } - ], - "source": [ - "s=1;\n", - "N=1000000\n", - "eps=np.finfo('float64').eps\n", - "for i in range(1,N):\n", - " s+=eps/2;\n", - "\n", - "print('summation 1+eps/2 over ',N,' minus 1 =',s-1)\n", - "print(N,'*eps/2 =',N*eps/2)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "# 2- Truncation error\n", - "## Freefall is example of \"truncation error\"\n", - "### Truncation error results from approximating exact mathematical procedure\n", - "\n", - "We approximated the derivative as $\\delta v/\\delta t\\approx\\Delta v/\\Delta t$\n", - "\n", - "Can reduce error by decreasing step size -> $\\Delta t$=`delta_time`" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "## Truncation error as a Taylor series " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Taylor series:\n", - "$f(x)=f(a)+f'(a)(x-a)+\\frac{f''(a)}{2!}(x-a)^{2}+\\frac{f'''(a)}{3!}(x-a)^{3}+...$\n", - "\n", - "We can approximate the next value in a function by adding Taylor series terms:\n", - "\n", - "|Approximation | formula |\n", - "|---|-----------------------------|\n", - "|$0^{th}$-order | $f(x_{i+1})=f(x_{i})+R_{1}$ |\n", - "|$1^{st}$-order | $f(x_{i+1})=f(x_{i})+f'(x_{i})h+R_{2}$ |\n", - "|$2^{nd}$-order | $f(x_{i+1})=f(x_{i})+f'(x_{i})h+\\frac{f''(x_{i})}{2!}h^{2}+R_{3}$|\n", - "|$n^{th}$-order | $f(x_{i+1})=f(x_{i})+f'(x_{i})h+\\frac{f''(x_{i})}{2!}h^{2}+...\\frac{f^{(n)}}{n!}h^{n}+R_{n}$|\n", - "\n", - "Where $R_{n}=O(h^{n+1})$ is the error associated with truncating the approximation at order $n$." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "![3](https://media.giphy.com/media/xA7G2n20MzTOw/giphy.gif)\n", - "\n", - "$n^{th}$-order approximation equivalent to \n", - "an $n^{th}$-order polynomial. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Play with NumPy Arrays\n", - "\n", - "\n", - "In engineering applications, most computing situations benefit from using *arrays*: they are sequences of data all of the _same type_. They behave a lot like lists, except for the constraint in the type of their elements. There is a huge efficiency advantage when you know that all elements of a sequence are of the same type—so equivalent methods for arrays execute a lot faster than those for lists.\n", - "\n", - "The Python language is expanded for special applications, like scientific computing, with **libraries**. The most important library in science and engineering is **NumPy**, providing the _n-dimensional array_ data structure (a.k.a, `ndarray`) and a wealth of functions, operations and algorithms for efficient linear-algebra computations.\n", - "\n", - "In this lesson, you'll start playing with NumPy arrays and discover their power. You'll also meet another widely loved library: **Matplotlib**, for creating two-dimensional plots of data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Importing libraries\n", - "\n", - "First, a word on importing libraries to expand your running Python session. Because libraries are large collections of code and are for special purposes, they are not loaded automatically when you launch Python (or IPython, or Jupyter). You have to import a library using the `import` command. For example, to import **NumPy**, with all its linear-algebra goodness, we enter:\n", - "\n", - "```python\n", - "import numpy as np\n", - "```\n", - "\n", - "Once you execute that command in a code cell, you can call any NumPy function using the dot notation, prepending the library name. For example, some commonly used functions are:\n", - "\n", - "* [`np.linspace()`](https://docs.scipy.org/doc/numpy/reference/generated/np.linspace.html)\n", - "* [`np.ones()`](https://docs.scipy.org/doc/numpy/reference/generated/np.ones.html#np.ones)\n", - "* [`np.zeros()`](https://docs.scipy.org/doc/numpy/reference/generated/np.zeros.html#np.zeros)\n", - "* [`np.empty()`](https://docs.scipy.org/doc/numpy/reference/generated/np.empty.html#np.empty)\n", - "* [`np.copy()`](https://docs.scipy.org/doc/numpy/reference/generated/np.copy.html#np.copy)\n", - "\n", - "Follow the links to explore the documentation for these very useful NumPy functions!" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Creating arrays\n", - "\n", - "To create a NumPy array from an existing list of (homogeneous) numbers, we call **`np.array()`**, like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 3, 5, 8, 17])" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.array([3, 5, 8, 17])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "NumPy offers many [ways to create arrays](https://docs.scipy.org/doc/numpy/reference/routines.array-creation.html#routines-array-creation) in addition to this. We already mentioned some of them above. \n", - "\n", - "Play with `np.ones()` and `np.zeros()`: they create arrays full of ones and zeros, respectively. We pass as an argument the number of array elements we want. " - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 1., 1., 1., 1., 1.])" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.ones(5)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 0., 0., 0.])" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.zeros(3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Another useful one: `np.arange()` gives an array of evenly spaced values in a defined interval. \n", - "\n", - "*Syntax:*\n", - "\n", - "`np.arange(start, stop, step)`\n", - "\n", - "where `start` by default is zero, `stop` is not inclusive, and the default\n", - "for `step` is one. Play with it!\n" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0, 1, 2, 3])" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.arange(4)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([2, 3, 4, 5])" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.arange(2, 6)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([2, 4])" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.arange(2, 6, 2)" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5])" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.arange(2, 6, 0.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`np.linspace()` is similar to `np.arange()`, but uses number of samples instead of a step size. It returns an array with evenly spaced numbers over the specified interval. \n", - "\n", - "*Syntax:*\n", - "\n", - "`np.linspace(start, stop, num)`\n", - "\n", - "`stop` is included by default (it can be removed, read the docs), and `num` by default is 50. " - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 2. , 2.02040816, 2.04081633, 2.06122449, 2.08163265,\n", - " 2.10204082, 2.12244898, 2.14285714, 2.16326531, 2.18367347,\n", - " 2.20408163, 2.2244898 , 2.24489796, 2.26530612, 2.28571429,\n", - " 2.30612245, 2.32653061, 2.34693878, 2.36734694, 2.3877551 ,\n", - " 2.40816327, 2.42857143, 2.44897959, 2.46938776, 2.48979592,\n", - " 2.51020408, 2.53061224, 2.55102041, 2.57142857, 2.59183673,\n", - " 2.6122449 , 2.63265306, 2.65306122, 2.67346939, 2.69387755,\n", - " 2.71428571, 2.73469388, 2.75510204, 2.7755102 , 2.79591837,\n", - " 2.81632653, 2.83673469, 2.85714286, 2.87755102, 2.89795918,\n", - " 2.91836735, 2.93877551, 2.95918367, 2.97959184, 3. ])" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.linspace(2.0, 3.0)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "50" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(np.linspace(2.0, 3.0))" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 2. , 2.2, 2.4, 2.6, 2.8, 3. ])" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.linspace(2.0, 3.0, 6)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([-1. , -0.75, -0.5 , -0.25, 0. , 0.25, 0.5 , 0.75, 1. ])" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.linspace(-1, 1, 9)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Array operations\n", - "\n", - "Let's assign some arrays to variable names and perform some operations with them." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "x_array = np.linspace(-1, 1, 9)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "Now that we've saved it with a variable name, we can do some computations with the array. E.g., take the square of every element of the array, in one go:" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 1. 0.5625 0.25 0.0625 0. 0.0625 0.25 0.5625 1. ]\n" - ] - } - ], - "source": [ - "y_array = x_array**2\n", - "print(y_array)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also take the square root of a positive array, using the `np.sqrt()` function:" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 1. 0.75 0.5 0.25 0. 0.25 0.5 0.75 1. ]\n" - ] - } - ], - "source": [ - "z_array = np.sqrt(y_array)\n", - "print(z_array)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we have different arrays `x_array`, `y_array` and `z_array`, we can do more computations, like add or multiply them. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 0. -0.1875 -0.25 -0.1875 0. 0.3125 0.75 1.3125 2. ]\n" - ] - } - ], - "source": [ - "add_array = x_array + y_array \n", - "print(add_array)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Array addition is defined element-wise, like when adding two vectors (or matrices). Array multiplication is also element-wise:" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[-1. -0.5625 -0.25 -0.0625 0. 0.0625 0.25 0.5625 1. ]\n" - ] - } - ], - "source": [ - "mult_array = x_array * z_array\n", - "print(mult_array)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also divide arrays, but you have to be careful not to divide by zero. This operation will result in a **`nan`** which stands for *Not a Number*. Python will still perform the division, but will tell us about the problem. \n", - "\n", - "Let's see how this might look:" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:1: RuntimeWarning: invalid value encountered in true_divide\n", - " \"\"\"Entry point for launching an IPython kernel.\n" - ] - }, - { - "data": { - "text/plain": [ - "array([-1. , -1.33333333, -2. , -4. , nan,\n", - " 4. , 2. , 1.33333333, 1. ])" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x_array / y_array" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Multidimensional arrays\n", - "\n", - "### 2D arrays \n", - "\n", - "NumPy can create arrays of N dimensions. For example, a 2D array is like a matrix, and is created from a nested list as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[1 2]\n", - " [3 4]]\n" - ] - } - ], - "source": [ - "array_2d = np.array([[1, 2], [3, 4]])\n", - "print(array_2d)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2D arrays can be added, subtracted, and multiplied:" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "X = np.array([[1, 2], [3, 4]])\n", - "Y = np.array([[1, -1], [0, 1]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The addition of these two matrices works exactly as you would expect:" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[2, 1],\n", - " [3, 5]])" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X + Y" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "What if we try to multiply arrays using the `'*'`operator?" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 1, -2],\n", - " [ 0, 4]])" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X * Y" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The multiplication using the `'*'` operator is element-wise. If we want to do matrix multiplication we use the `'@'` operator:" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1, 1],\n", - " [3, 1]])" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X @ Y" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Or equivalently we can use `np.dot()`:" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1, 1],\n", - " [3, 1]])" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.dot(X, Y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3D arrays\n", - "\n", - "Let's create a 3D array by reshaping a 1D array. We can use [`np.reshape()`](https://docs.scipy.org/doc/numpy/reference/generated/np.reshape.html), where we pass the array we want to reshape and the shape we want to give it, i.e., the number of elements in each dimension. \n", - "\n", - "*Syntax*\n", - " \n", - "`np.reshape(array, newshape)`\n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [], - "source": [ - "a = np.arange(24)" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 0 1 2 3]\n", - " [ 4 5 6 7]\n", - " [ 8 9 10 11]]\n", - "\n", - " [[12 13 14 15]\n", - " [16 17 18 19]\n", - " [20 21 22 23]]]\n" - ] - } - ], - "source": [ - "a_3D = np.reshape(a, (2, 3, 4))\n", - "print(a_3D)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can check for the shape of a NumPy array using the function `np.shape()`:" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(2, 3, 4)" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.shape(a_3D)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Visualizing the dimensions of the `a_3D` array can be tricky, so here is a diagram that will help you to understand how the dimensions are assigned: each dimension is shown as a coordinate axis. For a 3D array, on the \"x axis\", we have the sub-arrays that themselves are two-dimensional (matrices). We have two of these 2D sub-arrays, in this case; each one has 3 rows and 4 columns. Study this sketch carefully, while comparing with how the array `a_3D` is printed out above. \n", - "\n", - " \n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "When we have multidimensional arrays, we can access slices of their elements by slicing on each dimension. This is one of the advantages of using arrays: we cannot do this with lists. \n", - "\n", - "Let's access some elements of our 2D array called `X`." - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1, 2],\n", - " [3, 4]])" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the element in the 1st row and 1st column \n", - "X[0, 0]" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the element in the 1st row and 2nd column \n", - "X[0, 1]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercises:\n", - "\n", - "From the X array:\n", - "\n", - "1. Grab the 2nd element in the 1st column.\n", - "2. Grab the 2nd element in the 2nd column." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Play with slicing on this array:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([1, 3])" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the 1st column\n", - "X[:, 0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When we don't specify the start and/or end point in the slicing, the symbol `':'` means \"all\". In the example above, we are telling NumPy that we want all the elements from the 0-th index in the second dimension (the first column)." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([1, 2])" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the 1st row\n", - "X[0, :]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercises:\n", - "\n", - "From the X array:\n", - "\n", - "1. Grab the 2nd column.\n", - "2. Grab the 2nd row." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's practice with a 3D array. " - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[[ 0, 1, 2, 3],\n", - " [ 4, 5, 6, 7],\n", - " [ 8, 9, 10, 11]],\n", - "\n", - " [[12, 13, 14, 15],\n", - " [16, 17, 18, 19],\n", - " [20, 21, 22, 23]]])" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we want to grab the first column of both matrices in our `a_3D` array, we do:" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 0, 4, 8],\n", - " [12, 16, 20]])" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D[:, :, 0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The line above is telling NumPy that we want:\n", - "\n", - "* first `':'` : from the first dimension, grab all the elements (2 matrices).\n", - "* second `':'`: from the second dimension, grab all the elements (all the rows).\n", - "* `'0'` : from the third dimension, grab the first element (first column).\n", - "\n", - "If we want the first 2 elements of the first column of both matrices: " - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 0, 4],\n", - " [12, 16]])" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D[:, 0:2, 0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Below, from the first matrix in our `a_3D` array, we will grab the two middle elements (5,6):" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([5, 6])" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D[0, 1, 1:3]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercises:\n", - "\n", - "From the array named `a_3D`: \n", - "\n", - "1. Grab the two middle elements (17, 18) from the second matrix.\n", - "2. Grab the last row from both matrices.\n", - "3. Grab the elements of the 1st matrix that exclude the first row and the first column. \n", - "4. Grab the elements of the 2nd matrix that exclude the last row and the last column. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## NumPy == Fast and Clean! \n", - "\n", - "When we are working with numbers, arrays are a better option because the NumPy library has built-in functions that are optimized, and therefore faster than vanilla Python. Especially if we have big arrays. Besides, using NumPy arrays and exploiting their properties makes our code more readable.\n", - "\n", - "For example, if we wanted to add element-wise the elements of 2 lists, we need to do it with a `for` statement. If we want to add two NumPy arrays, we just use the addtion `'+'` symbol!\n", - "\n", - "Below, we will add two lists and two arrays (with random elements) and we'll compare the time it takes to compute each addition." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Element-wise sum of a Python list\n", - "\n", - "Using the Python library [`random`](https://docs.python.org/3/library/random.html), we will generate two lists with 100 pseudo-random elements in the range [0,100), with no numbers repeated." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#import random library\n", - "import random" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "lst_1 = random.sample(range(100), 100)\n", - "lst_2 = random.sample(range(100), 100)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[69, 21, 55, 9, 12, 57, 75, 81, 15, 17]\n", - "[57, 29, 94, 67, 51, 71, 78, 55, 41, 72]\n" - ] - } - ], - "source": [ - "#print first 10 elements\n", - "print(lst_1[0:10])\n", - "print(lst_2[0:10])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We need to write a `for` statement, appending the result of the element-wise sum into a new list we call `result_lst`. \n", - "\n", - "For timing, we can use the IPython \"magic\" `%%time`. Writing at the beginning of the code cell the command `%%time` will give us the time it takes to execute all the code in that cell. " - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 36 µs, sys: 1 µs, total: 37 µs\n", - "Wall time: 38.9 µs\n" - ] - } - ], - "source": [ - "%%time\n", - "res_lst = []\n", - "for i in range(100):\n", - " res_lst.append(lst_1[i] + lst_2[i])" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[126, 50, 149, 76, 63, 128, 153, 136, 56, 89]\n" - ] - } - ], - "source": [ - "print(res_lst[0:10])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Element-wise sum of NumPy arrays\n", - "\n", - "In this case, we generate arrays with random integers using the NumPy function [`np.random.randint()`](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/np.random.randint.html). The arrays we generate with this function are not going to be like the lists: in this case we'll have 100 elements in the range [0, 100) but they can repeat. Our goal is to compare the time it takes to compute addition of a _list_ or an _array_ of numbers, so all that matters is that the arrays and the lists are of the same length and type (integers)." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "arr_1 = np.random.randint(0, 100, size=100)\n", - "arr_2 = np.random.randint(0, 100, size=100)" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[31 13 72 30 13 29 34 64 26 56]\n", - "[ 3 57 63 51 35 75 56 59 86 50]\n" - ] - } - ], - "source": [ - "#print first 10 elements\n", - "print(arr_1[0:10])\n", - "print(arr_2[0:10])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can use the `%%time` cell magic, again, to see how long it takes NumPy to compute the element-wise sum." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 20 µs, sys: 1 µs, total: 21 µs\n", - "Wall time: 26 µs\n" - ] - } - ], - "source": [ - "%%time\n", - "arr_res = arr_1 + arr_2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that in the case of arrays, the code not only is more readable (just one line of code), but it is also faster than with lists. This time advantage will be larger with bigger arrays/lists. \n", - "\n", - "(Your timing results may vary to the ones we show in this notebook, because you will be computing in a different machine.)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercise\n", - "\n", - "1. Try the comparison between lists and arrays, using bigger arrays; for example, of size 10,000. \n", - "2. Repeat the analysis, but now computing the operation that raises each element of an array/list to the power two. Use arrays of 10,000 elements. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Time to Plot\n", - "\n", - "You will love the Python library **Matplotlib**! You'll learn here about its module `pyplot`, which makes line plots. \n", - "\n", - "We need some data to plot. Let's define a NumPy array, compute derived data using its square, cube and square root (element-wise), and plot these values with the original array in the x-axis. " - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 0. 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55\n", - " 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1. 1.05 1.1 1.15\n", - " 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75\n", - " 1.8 1.85 1.9 1.95 2. ]\n" - ] - } - ], - "source": [ - "xarray = np.linspace(0, 2, 41)\n", - "print(xarray)" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "pow2 = xarray**2\n", - "pow3 = xarray**3\n", - "pow_half = np.sqrt(xarray)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To plot the resulting arrays as a function of the orginal one (`xarray`) in the x-axis, we need to import the module `pyplot` from **Matplotlib**." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from matplotlib import pyplot\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The line `%matplotlib inline` is an instruction to get the output of plotting commands displayed \"inline\" inside the notebook. Other options for how to deal with plot output are available, but not of interest to you right now. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll use the `pyplot.plot()` function, specifying the line color (`'k'` for black) and line style (`'-'`, `'--'` and `':'` for continuous, dashed and dotted line), and giving each line a label. Note that the values for `color`, `linestyle` and `label` are given in quotes." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Plot x^2\n", - "pyplot.plot(xarray, pow2, color='k', linestyle='-', label='square')\n", - "#Plot x^3\n", - "pyplot.plot(xarray, pow3, color='k', linestyle='--', label='cube')\n", - "#Plot sqrt(x)\n", - "pyplot.plot(xarray, pow_half, color='k', linestyle=':', label='square root')\n", - "#Plot the legends in the best location\n", - "pyplot.legend(loc='best')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To illustrate other features, we will plot the same data, but varying the colors instead of the line style. We'll also use LaTeX syntax to write formulas in the labels. If you want to know more about LaTeX syntax, there is a [quick guide to LaTeX](https://users.dickinson.edu/~richesod/latex/latexcheatsheet.pdf) available online.\n", - "\n", - "Adding a semicolon (`';'`) to the last line in the plotting code block prevents that ugly output, like ``. Try it." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Plot x^2\n", - "pyplot.plot(xarray, pow2, color='red', linestyle='-', label='$x^2$')\n", - "#Plot x^3\n", - "pyplot.plot(xarray, pow3, color='green', linestyle='-', label='$x^3$')\n", - "#Plot sqrt(x)\n", - "pyplot.plot(xarray, pow_half, color='blue', linestyle='-', label='$\\sqrt{x}$')\n", - "#Plot the legends in the best location\n", - "pyplot.legend(loc='best'); " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That's very nice! By now, you are probably imagining all the great stuff you can do with Jupyter notebooks, Python and its scientific libraries **NumPy** and **Matplotlib**. We just saw an introduction to plotting but we will keep learning about the power of **Matplotlib** in the next lesson. \n", - "\n", - "If you are curious, you can explore all the beautiful plots you can make by browsing the [Matplotlib gallery](http://matplotlib.org/gallery.html)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercise:\n", - "\n", - "Pick two different operations to apply to the `xarray` and plot them the resulting data in the same plot. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## What we've learned\n", - "\n", - "* How to import libraries\n", - "* Multidimensional arrays using NumPy\n", - "* Accessing values and slicing in NumPy arrays\n", - "* `%%time` magic to time cell execution.\n", - "* Performance comparison: lists vs NumPy arrays\n", - "* Basic plotting with `pyplot`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## References\n", - "\n", - "1. _Effective Computation in Physics: Field Guide to Research with Python_ (2015). Anthony Scopatz & Kathryn D. Huff. O'Reilly Media, Inc.\n", - "\n", - "2. _Numerical Python: A Practical Techniques Approach for Industry_. (2015). Robert Johansson. Appress. \n", - "\n", - "2. [\"The world of Jupyter\"—a tutorial](https://github.com/barbagroup/jupyter-tutorial). Lorena A. Barba - 2016" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Execute this cell to load the notebook's style sheet, then ignore it\n", - "from IPython.core.display import HTML\n", - "css_file = '../style/custom.css'\n", - "HTML(open(css_file, \"r\").read())" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "# Thanks" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "###### Content under Creative Commons Attribution license CC-BY 4.0, code under BSD 3-Clause License © 2017 L.A. Barba, N.C. Clementi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Play with NumPy Arrays\n", - "\n", - "Welcome to **Lesson 4** of the first course module in _\"Engineering Computations_.\" You have come a long way! \n", - "\n", - "Remember, this course assumes no coding experience, so the first three lessons were focused on creating a foundation with Python programming constructs using essentially _no mathematics_. The previous lessons are:\n", - "\n", - "* [Lesson 1](http://go.gwu.edu/engcomp1lesson1): Interacting with Python\n", - "* [Lesson 2](http://go.gwu.edu/engcomp1lesson2): Play with data in Jupyter\n", - "* [Lesson 3](http://go.gwu.edu/engcomp1lesson3): Strings and lists in action\n", - "\n", - "In engineering applications, most computing situations benefit from using *arrays*: they are sequences of data all of the _same type_. They behave a lot like lists, except for the constraint in the type of their elements. There is a huge efficiency advantage when you know that all elements of a sequence are of the same type—so equivalent methods for arrays execute a lot faster than those for lists.\n", - "\n", - "The Python language is expanded for special applications, like scientific computing, with **libraries**. The most important library in science and engineering is **NumPy**, providing the _n-dimensional array_ data structure (a.k.a, `ndarray`) and a wealth of functions, operations and algorithms for efficient linear-algebra computations.\n", - "\n", - "In this lesson, you'll start playing with NumPy arrays and discover their power. You'll also meet another widely loved library: **Matplotlib**, for creating two-dimensional plots of data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Importing libraries\n", - "\n", - "First, a word on importing libraries to expand your running Python session. Because libraries are large collections of code and are for special purposes, they are not loaded automatically when you launch Python (or IPython, or Jupyter). You have to import a library using the `import` command. For example, to import **NumPy**, with all its linear-algebra goodness, we enter:\n", - "\n", - "```python\n", - "import numpy\n", - "```\n", - "\n", - "Once you execute that command in a code cell, you can call any NumPy function using the dot notation, prepending the library name. For example, some commonly used functions are:\n", - "\n", - "* [`np.linspace()`](https://docs.scipy.org/doc/numpy/reference/generated/np.linspace.html)\n", - "* [`np.ones()`](https://docs.scipy.org/doc/numpy/reference/generated/np.ones.html#np.ones)\n", - "* [`np.zeros()`](https://docs.scipy.org/doc/numpy/reference/generated/np.zeros.html#np.zeros)\n", - "* [`np.empty()`](https://docs.scipy.org/doc/numpy/reference/generated/np.empty.html#np.empty)\n", - "* [`np.copy()`](https://docs.scipy.org/doc/numpy/reference/generated/np.copy.html#np.copy)\n", - "\n", - "Follow the links to explore the documentation for these very useful NumPy functions!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Warning:\n", - "\n", - "You will find _a lot_ of sample code online that uses a different syntax for importing. They will do:\n", - "```python\n", - "import numpy as np\n", - "```\n", - "All this does is create an alias for `numpy` with the shorter string `np`, so you then would call a **NumPy** function like this: `np.linspace()`. This is just an alternative way of doing it, for lazy people that find it too long to type `numpy` and want to save 3 characters each time. For the not-lazy, typing `numpy` is more readable and beautiful. \n", - "\n", - "We like it better like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import numpy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Creating arrays\n", - "\n", - "To create a NumPy array from an existing list of (homogeneous) numbers, we call **`np.array()`**, like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 3, 5, 8, 17])" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.array([3, 5, 8, 17])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "NumPy offers many [ways to create arrays](https://docs.scipy.org/doc/numpy/reference/routines.array-creation.html#routines-array-creation) in addition to this. We already mentioned some of them above. \n", - "\n", - "Play with `np.ones()` and `np.zeros()`: they create arrays full of ones and zeros, respectively. We pass as an argument the number of array elements we want. " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 1., 1., 1., 1., 1.])" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.ones(5)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 0., 0., 0.])" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.zeros(3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Another useful one: `np.arange()` gives an array of evenly spaced values in a defined interval. \n", - "\n", - "*Syntax:*\n", - "\n", - "`np.arange(start, stop, step)`\n", - "\n", - "where `start` by default is zero, `stop` is not inclusive, and the default\n", - "for `step` is one. Play with it!\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0, 1, 2, 3])" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.arange(4)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([2, 3, 4, 5])" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.arange(2, 6)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([2, 4])" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.arange(2, 6, 2)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5])" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.arange(2, 6, 0.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`np.linspace()` is similar to `np.arange()`, but uses number of samples instead of a step size. It returns an array with evenly spaced numbers over the specified interval. \n", - "\n", - "*Syntax:*\n", - "\n", - "`np.linspace(start, stop, num)`\n", - "\n", - "`stop` is included by default (it can be removed, read the docs), and `num` by default is 50. " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 2. , 2.02040816, 2.04081633, 2.06122449, 2.08163265,\n", - " 2.10204082, 2.12244898, 2.14285714, 2.16326531, 2.18367347,\n", - " 2.20408163, 2.2244898 , 2.24489796, 2.26530612, 2.28571429,\n", - " 2.30612245, 2.32653061, 2.34693878, 2.36734694, 2.3877551 ,\n", - " 2.40816327, 2.42857143, 2.44897959, 2.46938776, 2.48979592,\n", - " 2.51020408, 2.53061224, 2.55102041, 2.57142857, 2.59183673,\n", - " 2.6122449 , 2.63265306, 2.65306122, 2.67346939, 2.69387755,\n", - " 2.71428571, 2.73469388, 2.75510204, 2.7755102 , 2.79591837,\n", - " 2.81632653, 2.83673469, 2.85714286, 2.87755102, 2.89795918,\n", - " 2.91836735, 2.93877551, 2.95918367, 2.97959184, 3. ])" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.linspace(2.0, 3.0)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "50" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(np.linspace(2.0, 3.0))" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 2. , 2.2, 2.4, 2.6, 2.8, 3. ])" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.linspace(2.0, 3.0, 6)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([-1. , -0.75, -0.5 , -0.25, 0. , 0.25, 0.5 , 0.75, 1. ])" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.linspace(-1, 1, 9)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Array operations\n", - "\n", - "Let's assign some arrays to variable names and perform some operations with them." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "x_array = np.linspace(-1, 1, 9)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "Now that we've saved it with a variable name, we can do some computations with the array. E.g., take the square of every element of the array, in one go:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 1. 0.5625 0.25 0.0625 0. 0.0625 0.25 0.5625 1. ]\n" - ] - } - ], - "source": [ - "y_array = x_array**2\n", - "print(y_array)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also take the square root of a positive array, using the `np.sqrt()` function:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 1. 0.75 0.5 0.25 0. 0.25 0.5 0.75 1. ]\n" - ] - } - ], - "source": [ - "z_array = np.sqrt(y_array)\n", - "print(z_array)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we have different arrays `x_array`, `y_array` and `z_array`, we can do more computations, like add or multiply them. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 0. -0.1875 -0.25 -0.1875 0. 0.3125 0.75 1.3125 2. ]\n" - ] - } - ], - "source": [ - "add_array = x_array + y_array \n", - "print(add_array)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Array addition is defined element-wise, like when adding two vectors (or matrices). Array multiplication is also element-wise:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[-1. -0.5625 -0.25 -0.0625 0. 0.0625 0.25 0.5625 1. ]\n" - ] - } - ], - "source": [ - "mult_array = x_array * z_array\n", - "print(mult_array)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also divide arrays, but you have to be careful not to divide by zero. This operation will result in a **`nan`** which stands for *Not a Number*. Python will still perform the division, but will tell us about the problem. \n", - "\n", - "Let's see how this might look:" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "//anaconda/envs/future/lib/python3.5/site-packages/ipykernel/__main__.py:1: RuntimeWarning: invalid value encountered in true_divide\n", - " if __name__ == '__main__':\n" - ] - }, - { - "data": { - "text/plain": [ - "array([-1. , -1.33333333, -2. , -4. , nan,\n", - " 4. , 2. , 1.33333333, 1. ])" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x_array / y_array" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Multidimensional arrays\n", - "\n", - "### 2D arrays \n", - "\n", - "NumPy can create arrays of N dimensions. For example, a 2D array is like a matrix, and is created from a nested list as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[1 2]\n", - " [3 4]]\n" - ] - } - ], - "source": [ - "array_2d = np.array([[1, 2], [3, 4]])\n", - "print(array_2d)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2D arrays can be added, subtracted, and multiplied:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "X = np.array([[1, 2], [3, 4]])\n", - "Y = np.array([[1, -1], [0, 1]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The addition of these two matrices works exactly as you would expect:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[2, 1],\n", - " [3, 5]])" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X + Y" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "What if we try to multiply arrays using the `'*'`operator?" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 1, -2],\n", - " [ 0, 4]])" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X * Y" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The multiplication using the `'*'` operator is element-wise. If we want to do matrix multiplication we use the `'@'` operator:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1, 1],\n", - " [3, 1]])" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X @ Y" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Or equivalently we can use `np.dot()`:" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1, 1],\n", - " [3, 1]])" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.dot(X, Y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3D arrays\n", - "\n", - "Let's create a 3D array by reshaping a 1D array. We can use [`np.reshape()`](https://docs.scipy.org/doc/numpy/reference/generated/np.reshape.html), where we pass the array we want to reshape and the shape we want to give it, i.e., the number of elements in each dimension. \n", - "\n", - "*Syntax*\n", - " \n", - "`np.reshape(array, newshape)`\n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "a = np.arange(24)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 0 1 2 3]\n", - " [ 4 5 6 7]\n", - " [ 8 9 10 11]]\n", - "\n", - " [[12 13 14 15]\n", - " [16 17 18 19]\n", - " [20 21 22 23]]]\n" - ] - } - ], - "source": [ - "a_3D = np.reshape(a, (2, 3, 4))\n", - "print(a_3D)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can check for the shape of a NumPy array using the function `np.shape()`:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(2, 3, 4)" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.shape(a_3D)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Visualizing the dimensions of the `a_3D` array can be tricky, so here is a diagram that will help you to understand how the dimensions are assigned: each dimension is shown as a coordinate axis. For a 3D array, on the \"x axis\", we have the sub-arrays that themselves are two-dimensional (matrices). We have two of these 2D sub-arrays, in this case; each one has 3 rows and 4 columns. Study this sketch carefully, while comparing with how the array `a_3D` is printed out above. \n", - "\n", - " \n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "When we have multidimensional arrays, we can access slices of their elements by slicing on each dimension. This is one of the advantages of using arrays: we cannot do this with lists. \n", - "\n", - "Let's access some elements of our 2D array called `X`." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1, 2],\n", - " [3, 4]])" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the element in the 1st row and 1st column \n", - "X[0, 0]" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the element in the 1st row and 2nd column \n", - "X[0, 1]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercises:\n", - "\n", - "From the X array:\n", - "\n", - "1. Grab the 2nd element in the 1st column.\n", - "2. Grab the 2nd element in the 2nd column." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Play with slicing on this array:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([1, 3])" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the 1st column\n", - "X[:, 0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When we don't specify the start and/or end point in the slicing, the symbol `':'` means \"all\". In the example above, we are telling NumPy that we want all the elements from the 0-th index in the second dimension (the first column)." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([1, 2])" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the 1st row\n", - "X[0, :]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercises:\n", - "\n", - "From the X array:\n", - "\n", - "1. Grab the 2nd column.\n", - "2. Grab the 2nd row." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's practice with a 3D array. " - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[[ 0, 1, 2, 3],\n", - " [ 4, 5, 6, 7],\n", - " [ 8, 9, 10, 11]],\n", - "\n", - " [[12, 13, 14, 15],\n", - " [16, 17, 18, 19],\n", - " [20, 21, 22, 23]]])" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we want to grab the first column of both matrices in our `a_3D` array, we do:" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 0, 4, 8],\n", - " [12, 16, 20]])" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D[:, :, 0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The line above is telling NumPy that we want:\n", - "\n", - "* first `':'` : from the first dimension, grab all the elements (2 matrices).\n", - "* second `':'`: from the second dimension, grab all the elements (all the rows).\n", - "* `'0'` : from the third dimension, grab the first element (first column).\n", - "\n", - "If we want the first 2 elements of the first column of both matrices: " - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 0, 4],\n", - " [12, 16]])" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D[:, 0:2, 0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Below, from the first matrix in our `a_3D` array, we will grab the two middle elements (5,6):" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([5, 6])" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D[0, 1, 1:3]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercises:\n", - "\n", - "From the array named `a_3D`: \n", - "\n", - "1. Grab the two middle elements (17, 18) from the second matrix.\n", - "2. Grab the last row from both matrices.\n", - "3. Grab the elements of the 1st matrix that exclude the first row and the first column. \n", - "4. Grab the elements of the 2nd matrix that exclude the last row and the last column. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## NumPy == Fast and Clean! \n", - "\n", - "When we are working with numbers, arrays are a better option because the NumPy library has built-in functions that are optimized, and therefore faster than vanilla Python. Especially if we have big arrays. Besides, using NumPy arrays and exploiting their properties makes our code more readable.\n", - "\n", - "For example, if we wanted to add element-wise the elements of 2 lists, we need to do it with a `for` statement. If we want to add two NumPy arrays, we just use the addtion `'+'` symbol!\n", - "\n", - "Below, we will add two lists and two arrays (with random elements) and we'll compare the time it takes to compute each addition." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Element-wise sum of a Python list\n", - "\n", - "Using the Python library [`random`](https://docs.python.org/3/library/random.html), we will generate two lists with 100 pseudo-random elements in the range [0,100), with no numbers repeated." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#import random library\n", - "import random" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "lst_1 = random.sample(range(100), 100)\n", - "lst_2 = random.sample(range(100), 100)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[69, 21, 55, 9, 12, 57, 75, 81, 15, 17]\n", - "[57, 29, 94, 67, 51, 71, 78, 55, 41, 72]\n" - ] - } - ], - "source": [ - "#print first 10 elements\n", - "print(lst_1[0:10])\n", - "print(lst_2[0:10])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We need to write a `for` statement, appending the result of the element-wise sum into a new list we call `result_lst`. \n", - "\n", - "For timing, we can use the IPython \"magic\" `%%time`. Writing at the beginning of the code cell the command `%%time` will give us the time it takes to execute all the code in that cell. " - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 36 µs, sys: 1 µs, total: 37 µs\n", - "Wall time: 38.9 µs\n" - ] - } - ], - "source": [ - "%%time\n", - "res_lst = []\n", - "for i in range(100):\n", - " res_lst.append(lst_1[i] + lst_2[i])" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[126, 50, 149, 76, 63, 128, 153, 136, 56, 89]\n" - ] - } - ], - "source": [ - "print(res_lst[0:10])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Element-wise sum of NumPy arrays\n", - "\n", - "In this case, we generate arrays with random integers using the NumPy function [`np.random.randint()`](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/np.random.randint.html). The arrays we generate with this function are not going to be like the lists: in this case we'll have 100 elements in the range [0, 100) but they can repeat. Our goal is to compare the time it takes to compute addition of a _list_ or an _array_ of numbers, so all that matters is that the arrays and the lists are of the same length and type (integers)." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "arr_1 = np.random.randint(0, 100, size=100)\n", - "arr_2 = np.random.randint(0, 100, size=100)" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[31 13 72 30 13 29 34 64 26 56]\n", - "[ 3 57 63 51 35 75 56 59 86 50]\n" - ] - } - ], - "source": [ - "#print first 10 elements\n", - "print(arr_1[0:10])\n", - "print(arr_2[0:10])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can use the `%%time` cell magic, again, to see how long it takes NumPy to compute the element-wise sum." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 20 µs, sys: 1 µs, total: 21 µs\n", - "Wall time: 26 µs\n" - ] - } - ], - "source": [ - "%%time\n", - "arr_res = arr_1 + arr_2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that in the case of arrays, the code not only is more readable (just one line of code), but it is also faster than with lists. This time advantage will be larger with bigger arrays/lists. \n", - "\n", - "(Your timing results may vary to the ones we show in this notebook, because you will be computing in a different machine.)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercise\n", - "\n", - "1. Try the comparison between lists and arrays, using bigger arrays; for example, of size 10,000. \n", - "2. Repeat the analysis, but now computing the operation that raises each element of an array/list to the power two. Use arrays of 10,000 elements. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Time to Plot\n", - "\n", - "You will love the Python library **Matplotlib**! You'll learn here about its module `pyplot`, which makes line plots. \n", - "\n", - "We need some data to plot. Let's define a NumPy array, compute derived data using its square, cube and square root (element-wise), and plot these values with the original array in the x-axis. " - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 0. 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55\n", - " 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1. 1.05 1.1 1.15\n", - " 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75\n", - " 1.8 1.85 1.9 1.95 2. ]\n" - ] - } - ], - "source": [ - "xarray = np.linspace(0, 2, 41)\n", - "print(xarray)" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "pow2 = xarray**2\n", - "pow3 = xarray**3\n", - "pow_half = np.sqrt(xarray)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To plot the resulting arrays as a function of the orginal one (`xarray`) in the x-axis, we need to import the module `pyplot` from **Matplotlib**." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from matplotlib import pyplot\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The line `%matplotlib inline` is an instruction to get the output of plotting commands displayed \"inline\" inside the notebook. Other options for how to deal with plot output are available, but not of interest to you right now. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll use the `pyplot.plot()` function, specifying the line color (`'k'` for black) and line style (`'-'`, `'--'` and `':'` for continuous, dashed and dotted line), and giving each line a label. Note that the values for `color`, `linestyle` and `label` are given in quotes." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Plot x^2\n", - "pyplot.plot(xarray, pow2, color='k', linestyle='-', label='square')\n", - "#Plot x^3\n", - "pyplot.plot(xarray, pow3, color='k', linestyle='--', label='cube')\n", - "#Plot sqrt(x)\n", - "pyplot.plot(xarray, pow_half, color='k', linestyle=':', label='square root')\n", - "#Plot the legends in the best location\n", - "pyplot.legend(loc='best')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To illustrate other features, we will plot the same data, but varying the colors instead of the line style. We'll also use LaTeX syntax to write formulas in the labels. If you want to know more about LaTeX syntax, there is a [quick guide to LaTeX](https://users.dickinson.edu/~richesod/latex/latexcheatsheet.pdf) available online.\n", - "\n", - "Adding a semicolon (`';'`) to the last line in the plotting code block prevents that ugly output, like ``. Try it." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Plot x^2\n", - "pyplot.plot(xarray, pow2, color='red', linestyle='-', label='$x^2$')\n", - "#Plot x^3\n", - "pyplot.plot(xarray, pow3, color='green', linestyle='-', label='$x^3$')\n", - "#Plot sqrt(x)\n", - "pyplot.plot(xarray, pow_half, color='blue', linestyle='-', label='$\\sqrt{x}$')\n", - "#Plot the legends in the best location\n", - "pyplot.legend(loc='best'); " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That's very nice! By now, you are probably imagining all the great stuff you can do with Jupyter notebooks, Python and its scientific libraries **NumPy** and **Matplotlib**. We just saw an introduction to plotting but we will keep learning about the power of **Matplotlib** in the next lesson. \n", - "\n", - "If you are curious, you can explore all the beautiful plots you can make by browsing the [Matplotlib gallery](http://matplotlib.org/gallery.html)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercise:\n", - "\n", - "Pick two different operations to apply to the `xarray` and plot them the resulting data in the same plot. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## What we've learned\n", - "\n", - "* How to import libraries\n", - "* Multidimensional arrays using NumPy\n", - "* Accessing values and slicing in NumPy arrays\n", - "* `%%time` magic to time cell execution.\n", - "* Performance comparison: lists vs NumPy arrays\n", - "* Basic plotting with `pyplot`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## References\n", - "\n", - "1. _Effective Computation in Physics: Field Guide to Research with Python_ (2015). Anthony Scopatz & Kathryn D. Huff. O'Reilly Media, Inc.\n", - "\n", - "2. _Numerical Python: A Practical Techniques Approach for Industry_. (2015). Robert Johansson. Appress. \n", - "\n", - "2. [\"The world of Jupyter\"—a tutorial](https://github.com/barbagroup/jupyter-tutorial). Lorena A. Barba - 2016" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Execute this cell to load the notebook's style sheet, then ignore it\n", - "from IPython.core.display import HTML\n", - "css_file = '../style/custom.css'\n", - "HTML(open(css_file, \"r\").read())" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.7976931348623157e+308" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.finfo('float64').max" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "# Freefall Model (revisited)\n", - "## Octave solution (will run same on Matlab)\n", - "\n", - "## Create function called `freefall.m`\n", - "\n", - "Define time from 0 to 12 seconds with `N` timesteps \n", - "function defined as `freefall`\n", - "\n", - "m=60 kg, c=0.25 kg/m" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "### Set default values in Octave for linewidth and text size" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": true, - "slideshow": { - "slide_type": "fragment" - } - }, - "outputs": [], - "source": [ - "set (0, \"defaultaxesfontsize\", 18)\n", - "set (0, \"defaulttextfontsize\", 18) \n", - "set (0, \"defaultlinelinewidth\", 4)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "## Freefall example\n", - "\n", - "Estimated the function with a $1^{st}$-order approximation, so \n", - "\n", - "$v(t_{i+1})=v(t_{i})+v'(t_{i})(t_{i+1}-t_{i})+R_{1}$\n", - "\n", - "$v'(t_{i})=\\frac{v(t_{i+1})-v(t_{i})}{t_{i+1}-t_{i}}-\\frac{R_{1}}{t_{i+1}-t_{i}}$\n", - "\n", - "$\\frac{R_{1}}{t_{i+1}-t_{i}}=\\frac{v''(\\xi)}{2!}(t_{i+1}-t_{i})$\n", - "\n", - "or the truncation error for a first-order Taylor series approximation is\n", - "\n", - "$R_{1}=O(\\Delta t^{2})$\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "outputs": [], - "source": [ - "function [v_analytical,v_terminal,t]=freefall(N)\n", - " % help file for freefall.m\n", - " % N is number of timesteps between 0 and 12 sec\n", - " % v_an...\n", - " t=linspace(0,12,N)';\n", - " c=0.25; m=60; g=9.81; v_terminal=sqrt(m*g/c);\n", - "\n", - " v_analytical = v_terminal*tanh(g*t/v_terminal);\n", - " v_numerical=zeros(length(t),1);\n", - " delta_time =diff(t);\n", - " for i=1:length(t)-1\n", - " v_numerical(i+1)=v_numerical(i)+(g-c/m*v_numerical(i)^2)*delta_time(i);\n", - " end\n", - " % Print values near 0,2,4,6,8,10,12 seconds\n", - " indices = round(linspace(1,length(t),7));\n", - " fprintf('time (s)|vel analytical (m/s)|vel numerical (m/s)\\n')\n", - " fprintf('-----------------------------------------------\\n')\n", - " M=[t(indices),v_analytical(indices),v_numerical(indices)];\n", - " fprintf('%7.1f | %18.2f | %15.2f\\n',M(:,1:3)');\n", - " plot(t,v_analytical,'-',t,v_numerical,'o-')\n", - "end\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "time (s)|vel analytical (m/s)|vel numerical (m/s)\n", - "-----------------------------------------------\n", - " 0.0 | 0.00 | 0.00\n", - " 2.0 | 18.62 | 18.62\n", - " 4.0 | 32.46 | 32.46\n", - " 6.0 | 40.64 | 40.65\n", - " 8.0 | 44.85 | 44.85\n", - " 10.0 | 46.85 | 46.85\n", - " 12.0 | 47.77 | 47.77\n" - ] - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "Gnuplot\n", - "Produced by GNUPLOT 5.0 patchlevel 3 \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t \n", - "\t \n", - "\t\n", - "\t\n", - "\t \n", - "\t \n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\t\n", - "\t\t0\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t10\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t20\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t30\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t40\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t50\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t0\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t2\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t4\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t6\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t8\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t10\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t12\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\n", - "\tgnuplot_plot_1a\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\tgnuplot_plot_2a\n", - "\n", - "\t\t \n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "[v_analytical,v_terminal,t]=freefall(10000);" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ans = 1.4400e-06\r\n" - ] - } - ], - "source": [ - "(12/10000)^2" - ] - } - ], - "metadata": { - "celltoolbar": "Slideshow", - "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.7" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/02_Roundoff-Truncation errors/octave-workspace b/02_Roundoff-Truncation errors/octave-workspace deleted file mode 100644 index 8c437bb6e55a5d1b6115661b3a20e86870909d32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeZIE=ep))iu=hVPIxpU`Wg>29gX6|5<=Ua%xV_zyJULGXmL6K+FfkHXuRW)ST4Z s)VvZqpa4)UCy*#Ej4v)J%FIiLX#g3JmQ#{Vk|uVbru4khf}H#k0D5999{>OV diff --git a/05_consistent coding/.ipynb_checkpoints/05_consistent-coding and functions-checkpoint.ipynb b/05_consistent coding/.ipynb_checkpoints/05_consistent-coding and functions-checkpoint.ipynb deleted file mode 100644 index b4918d4..0000000 --- a/05_consistent coding/.ipynb_checkpoints/05_consistent-coding and functions-checkpoint.ipynb +++ /dev/null @@ -1,1041 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true, - "slideshow": { - "slide_type": "skip" - } - }, - "outputs": [], - "source": [ - "%plot --format svg" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "# Good coding habits\n", - "## naming folders and files" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "# [Stanford file naming best practices](https://library.stanford.edu/research/data-management-services/data-best-practices/best-practices-file-naming)\n", - "\n", - "1. Include information to distinguish file name e.g. project name, objective of function, name/initials, type of data, conditions, version of file, \n", - "2. if using dates, use YYYYMMDD, so the computer organizes by year, then month, then day\n", - "3. avoid special characters e.g. !, #, \\$, ...\n", - "4. avoid using spaces if not necessary, some programs consider a space as a break in code use dashes `-` or underscores `_` or CamelCase" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "## Commenting your code\n", - "\n", - "Its important to comment your code \n", - "\n", - "- what are variable's units,\n", - "\n", - "- what the is the function supposed to do, \n", - "\n", - "- etc. \n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false, - "slideshow": { - "slide_type": "subslide" - } - }, - "outputs": [], - "source": [ - "function i=code(j)\n", - " % Example of bad variable names and bad function name\n", - " for w=1:j\n", - " i(w)=w;\n", - " end\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false, - "slideshow": { - "slide_type": "subslide" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'code' is a command-line function\n", - "\n", - " Example of bad variable names and bad function name\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 code" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "## Choose variable names that describe the variable" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false, - "slideshow": { - "slide_type": "subslide" - } - }, - "outputs": [], - "source": [ - "function count_vector=counting_function(max_value)\n", - " % Good variable names and better help documentation\n", - " % \n", - " % counting function creates a vector from 1 to max_value where each \n", - " % index, i, is stored in each vector spot\n", - " for i=1:max_value\n", - " count_vector(i)=i; % set each element in count_vector to i\n", - " end\n", - "end " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false, - "slideshow": { - "slide_type": "subslide" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'counting_function' is a command-line function\n", - "\n", - " Good variable names and better help documentation\n", - " \n", - " counting function creates a vector from 1 to max_value where each \n", - " index, i, is stored in each vector spot\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 counting_function" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true, - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "## Putting it all together" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "0. Use (https://github.uconn.edu/) to create an account and create your first repository \"01_ME3255_repo\"\n", - "1. Create a new file in your github repo with the default plot settings:\n", - " \n", - " ` set (0, \"defaultaxesfontsize\", 18)\n", - " set (0, \"defaulttextfontsize\", 18) \n", - " set (0, \"defaultlinelinewidth\", 4)`\n", - "1. Clone your \"01_ME3255_repo\" repository to your computer\n", - "2. open Matlab (cli, jupyter or gui)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "5\\. Change working directory to 01_ME3255_repo *e.g.* \n", - " Windows:`cd('C:\\Users\\rcc02007\\Documents\\Github\\01_ME3255_repo')`, \n", - " Mac: `cd('/Users/rcc02007/Documents/Github/01_ME3255_repo')`" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "6\\. Run `>> setdefaults.m`\n", - "\n", - "7\\. Create a new m-file called nitrogen_pressure.m\n", - "\n", - "8\\. Create a function based upon the ideal gas law for nitrogen, Pv=RT\n", - " 1. R=0.2968 kJ/(kg-K)\n", - " 2. inputs to function are v (specific volume m^3/kg), and T, temperature (K)\n", - " 3. output is P, pressure (kPa)\n", - "\n", - "9\\. Once the function works, commit the change to the repository (add a message, like 'added file nitrogen_pressure.m'\n", - "\n", - "10\\. After file is 'committed', 'push' the changes to your github account" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "for the command-line git user, this is steps 8 and 9:\n", - "1. `$ git add *`\n", - "2. `$ git commit -m 'added file nitrogen_pressure.m'`\n", - "3. `$ git push -u origin master\n", - " Username for 'https://github.uconn.edu':rcc02007 \n", - " Password for 'https://rcc02007@github.uconn.edu': `\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true, - "slideshow": { - "slide_type": "subslide" - } - }, - "source": [ - "Now, use this function to plot the range of pressures that a pressure vessel would experience if it is 1000 gallons (3.79 m^3) with 10-20 kg of Nitrogen and temperatures range from -10 to 35 degrees C. \n", - "\n", - "```matlab\n", - "v=0.379/linspace(10,20,10);\n", - "T=273.15+linspace(-10,35,10);\n", - "[v_grid,T_grid]=meshgrid(v,T);\n", - "P = nitrogen_pressure(v,T);\n", - "pcolor(v_grid,T_grid,P)\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false, - "slideshow": { - "slide_type": "subslide" - } - }, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "Gnuplot\n", - "Produced by GNUPLOT 5.0 patchlevel 3 \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t \n", - "\t \n", - "\t\n", - "\t\n", - "\t \n", - "\t \n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\tgnuplot_plot_1a\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\t\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t0.15\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t0.2\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t0.25\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t0.3\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t0.35\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t0.4\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\tspecific volume (m3/kg)\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t-10\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t-5\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t0\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t5\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t10\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t15\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t20\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t25\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t30\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\t\n", - "\t\t35\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\tTemperature (C)\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\t\t\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\t\n", - "\t\tPressure (kPa)\n", - "\t\n", - "\n", - "\n", - "\n", - "\tgnuplot_plot_1b\n", - "\n", - "\n", - "\n", - ";\n", - "\n", - "\t\n", - "\n", - "\n", - "\n", - "\t\t\n", - "\t\t150\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t200\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t250\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t300\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t350\n", - "\t\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t\n", - "\n", - "\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "setdefaults;\n", - "v=3.79./linspace(10,20,10);\n", - "T=273.15+linspace(-10,35,10);\n", - "[v_grid,T_grid]=meshgrid(v,T);\n", - "P = nitrogen_pressure(v_grid,T_grid);\n", - "pcolor(v_grid,T_grid-273.15,P-100)\n", - "h=colorbar();\n", - "xlabel('specific volume (m^3/kg)')\n", - "ylabel('Temperature (C)')\n", - "ylabel(h,'Pressure (kPa)')\n", - "scale=0.1; % these lines are used to keep xlabel from being cutoff in jupyter\n", - "pos = get(gca, 'Position'); % these lines are used to keep xlabel from being cutoff in jupyter\n", - "pos(2) = pos(2)+scale*pos(4); % these lines are used to keep xlabel from being cutoff in jupyter\n", - "pos(4) = (1-scale)*pos(4); % these lines are used to keep xlabel from being cutoff in jupyter\n", - "set(gca, 'Position', pos) % these lines are used to keep xlabel from being cutoff in jupyter\n", - "%colormap winter\n", - "%colormap summer\n", - "%colormap jet\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "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/05_consistent coding/gp_image_01.png b/05_consistent coding/gp_image_01.png deleted file mode 100644 index ef291b593f623b8b543ea653c733167f14e20882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^OhD|w0V4Oi7>WQXwj^(N7l!{JxM1({$v}~KPZ!4! ziK$D^t>!yyAmDoN<_WI8|2yh)*jZR|8#@>83pLrbn%OLGLC*Y@3f~;{0&>J(ZGL?I zWQ?1fK>9k3yJi=!9DiKzxu#M{rgKq${H)5okGqTf4o%`H6Zy3u_L}#*wM7PU-tvF0 Q0Ig#1boFyt=akR{05-`#_y7O^ diff --git a/05_consistent coding/my_caller.m b/05_consistent coding/my_caller.m deleted file mode 100644 index f0cd536..0000000 --- a/05_consistent coding/my_caller.m +++ /dev/null @@ -1,23 +0,0 @@ -function [ax,ay]=my_caller(x,y,t) - % Help documentation of "my_caller" - % This function computes the acceleration in the x- and y-directions given - % three vectors of position in x- and y-directions as a function of time - % x = x-position - % y = y-position - % t = time - % output - % ax = acceleration in x-direction - % ay = acceleration in y-direction - - function v=diff_match_dims(x,t) - v=zeros(length(t),1); - v(1:end-1)=diff(x)./diff(t); - v(end)=v(end-1); - end - - [vx,vy]=my_function(x,y,t); - - ax = diff_match_dims(vx,t); - ay = diff_match_dims(vy,t); - -end diff --git a/05_consistent coding/my_function.m b/05_consistent coding/my_function.m deleted file mode 100644 index 5953061..0000000 --- a/05_consistent coding/my_function.m +++ /dev/null @@ -1,21 +0,0 @@ -function [vx,vy] = my_function(x,y,t) - % Help documentation of "my_function" - % This function computes the velocity in the x- and y-directions given - % three vectors of position in x- and y-directions as a function of time - % x = x-position - % y = y-position - % t = time - % output - % vx = velocity in x-direction - % vy = velocity in y-direction - - vx=zeros(length(t),1); - vy=zeros(length(t),1); - - vx(1:end-1) = diff(x)./diff(t); % calculate vx as delta x/delta t - vy(1:end-1) = diff(y)./diff(t); % calculate vy as delta y/delta t - - vx(end) = vx(end-1); - vy(end) = vy(end-1); - -end diff --git a/05_consistent coding/nitrogen_pressure.m b/05_consistent coding/nitrogen_pressure.m deleted file mode 100644 index a76abf3..0000000 --- a/05_consistent coding/nitrogen_pressure.m +++ /dev/null @@ -1,10 +0,0 @@ -function P=nitrogen_pressure(v,T) - % function to calculate Pressure of Nitrogen using ideal gas law given the specific - % volume, v (m^3/kg), and temperature, T (K) - % Pv = RT - % R=0.2968; % kJ/kg-K - % P [in kPa] = nitrogen_pressure(v [in m^3/kg], T[in K]) - R=0.2968; % kJ/kg-K - P=R*T./v; -end - diff --git a/05_consistent coding/octave-workspace b/05_consistent coding/octave-workspace deleted file mode 100644 index 22452b765ec0a86316ae5fc4d81dae991809e2e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2893 zcmeH|e@sB(*7ezQHgE7Q#TL5Le=tz`4K9J@@y$C}XJ9 z6rm_d#0f|YoMR{=4rT)-xIh@lAc!o95X+=gT(P8c;N1Rkt+nnS{o&c3_p|e!z0Y&@ zyx;HpMyE0y;q3pYaPx zkfPYFAYXS=is^>8WM6HRp>SxRLTQj;_3yj;oZ4mh?ZwffH}q0yv&-l5>}8m}+7sZC zAcMktE~TbQhPwu$^z|7TsF7V=reHayg9_)83gyTsx)^YGNRElyQz?0`&=753UiyNR zhFlz;5xGVV)4W&3;66E4mOL0r9F!y1xA(d4{b&qds0^cYGy)^E#`}FV-XDu@GI%R6 zDfYW#tyEx};1A!!T?%|$GMMDLg27~ukM*aY(C{ohg_RFz#3sLFtcq6P(5e$H-gOFG zp7EGHY0Y4^<=A>J5rZ}P%cSKk3{s;$toLwHqRiF#)-j0^{ofS%F7H-i7cqaz%8mg= z_)e&@8SEz_e1Gg=P(n!3MM5P`6CczJ9#Nu&xH$FZj1s-XxPNPm3f~e|+3U`!aF1A3 zU+tpC)2~MT45n^q&)PUgQoR)e<@ENQr;!B+J%=RJJ12$^acZ<$oVA%3;LN4y$i?d7!Y ziW;@+o^Kls(txSRx7|{uLCCWYV~#s(;h^I-PK&Rn#(zlsMT^?_n84OOIxrnq^ee9E za3QQ%?;59p=yts+$E1OMQKx%5v^W>^-Cnn5Es{p&nk7OVY>dlnuU6^M;2pTr(?gHl zosp;INA*~elX3rZ8w1Wb=7oA04OrB(me;e6*Rzh-v!2(pp4YR1*Rz4wvys=ck=JuB zI0wbC@tA|S4+{>;;2v6r1+t1=pfjsL?s=DIBTp-OaXyx3CC^`ZhA6-pHBOXCXQgpf z|JJw*=`C3HNj|m%|6$vn^zZ-Gza^}9QY4B+4_UKFO{XaC>f?-S#fAeL!Q7-Uok|y{ zOPFo!1nW0Dc2LMg3ihg$WSSRn2{I@q=U*+dWfx^ilrl=na79&YJm%-Wj*;5V$W4WB zjF5q4gj?zLAyN?*|K7ooLGsac&9q \n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "When we have multidimensional arrays, we can access slices of their elements by slicing on each dimension. This is one of the advantages of using arrays: we cannot do this with lists. \n", - "\n", - "Let's access some elements of our 2D array called `X`." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1, 2],\n", - " [3, 4]])" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the element in the 1st row and 1st column \n", - "X[0, 0]" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the element in the 1st row and 2nd column \n", - "X[0, 1]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercises:\n", - "\n", - "From the X array:\n", - "\n", - "1. Grab the 2nd element in the 1st column.\n", - "2. Grab the 2nd element in the 2nd column." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Play with slicing on this array:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([1, 3])" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the 1st column\n", - "X[:, 0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When we don't specify the start and/or end point in the slicing, the symbol `':'` means \"all\". In the example above, we are telling NumPy that we want all the elements from the 0-th index in the second dimension (the first column)." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([1, 2])" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Grab the 1st row\n", - "X[0, :]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercises:\n", - "\n", - "From the X array:\n", - "\n", - "1. Grab the 2nd column.\n", - "2. Grab the 2nd row." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's practice with a 3D array. " - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[[ 0, 1, 2, 3],\n", - " [ 4, 5, 6, 7],\n", - " [ 8, 9, 10, 11]],\n", - "\n", - " [[12, 13, 14, 15],\n", - " [16, 17, 18, 19],\n", - " [20, 21, 22, 23]]])" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we want to grab the first column of both matrices in our `a_3D` array, we do:" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 0, 4, 8],\n", - " [12, 16, 20]])" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D[:, :, 0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The line above is telling NumPy that we want:\n", - "\n", - "* first `':'` : from the first dimension, grab all the elements (2 matrices).\n", - "* second `':'`: from the second dimension, grab all the elements (all the rows).\n", - "* `'0'` : from the third dimension, grab the first element (first column).\n", - "\n", - "If we want the first 2 elements of the first column of both matrices: " - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 0, 4],\n", - " [12, 16]])" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D[:, 0:2, 0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Below, from the first matrix in our `a_3D` array, we will grab the two middle elements (5,6):" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([5, 6])" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a_3D[0, 1, 1:3]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercises:\n", - "\n", - "From the array named `a_3D`: \n", - "\n", - "1. Grab the two middle elements (17, 18) from the second matrix.\n", - "2. Grab the last row from both matrices.\n", - "3. Grab the elements of the 1st matrix that exclude the first row and the first column. \n", - "4. Grab the elements of the 2nd matrix that exclude the last row and the last column. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## NumPy == Fast and Clean! \n", - "\n", - "When we are working with numbers, arrays are a better option because the NumPy library has built-in functions that are optimized, and therefore faster than vanilla Python. Especially if we have big arrays. Besides, using NumPy arrays and exploiting their properties makes our code more readable.\n", - "\n", - "For example, if we wanted to add element-wise the elements of 2 lists, we need to do it with a `for` statement. If we want to add two NumPy arrays, we just use the addtion `'+'` symbol!\n", - "\n", - "Below, we will add two lists and two arrays (with random elements) and we'll compare the time it takes to compute each addition." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Element-wise sum of a Python list\n", - "\n", - "Using the Python library [`random`](https://docs.python.org/3/library/random.html), we will generate two lists with 100 pseudo-random elements in the range [0,100), with no numbers repeated." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#import random library\n", - "import random" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "lst_1 = random.sample(range(100), 100)\n", - "lst_2 = random.sample(range(100), 100)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[69, 21, 55, 9, 12, 57, 75, 81, 15, 17]\n", - "[57, 29, 94, 67, 51, 71, 78, 55, 41, 72]\n" - ] - } - ], - "source": [ - "#print first 10 elements\n", - "print(lst_1[0:10])\n", - "print(lst_2[0:10])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We need to write a `for` statement, appending the result of the element-wise sum into a new list we call `result_lst`. \n", - "\n", - "For timing, we can use the IPython \"magic\" `%%time`. Writing at the beginning of the code cell the command `%%time` will give us the time it takes to execute all the code in that cell. " - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 36 µs, sys: 1 µs, total: 37 µs\n", - "Wall time: 38.9 µs\n" - ] - } - ], - "source": [ - "%%time\n", - "res_lst = []\n", - "for i in range(100):\n", - " res_lst.append(lst_1[i] + lst_2[i])" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[126, 50, 149, 76, 63, 128, 153, 136, 56, 89]\n" - ] - } - ], - "source": [ - "print(res_lst[0:10])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Element-wise sum of NumPy arrays\n", - "\n", - "In this case, we generate arrays with random integers using the NumPy function [`numpy.random.randint()`](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.randint.html). The arrays we generate with this function are not going to be like the lists: in this case we'll have 100 elements in the range [0, 100) but they can repeat. Our goal is to compare the time it takes to compute addition of a _list_ or an _array_ of numbers, so all that matters is that the arrays and the lists are of the same length and type (integers)." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "arr_1 = numpy.random.randint(0, 100, size=100)\n", - "arr_2 = numpy.random.randint(0, 100, size=100)" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[31 13 72 30 13 29 34 64 26 56]\n", - "[ 3 57 63 51 35 75 56 59 86 50]\n" - ] - } - ], - "source": [ - "#print first 10 elements\n", - "print(arr_1[0:10])\n", - "print(arr_2[0:10])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can use the `%%time` cell magic, again, to see how long it takes NumPy to compute the element-wise sum." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 20 µs, sys: 1 µs, total: 21 µs\n", - "Wall time: 26 µs\n" - ] - } - ], - "source": [ - "%%time\n", - "arr_res = arr_1 + arr_2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that in the case of arrays, the code not only is more readable (just one line of code), but it is also faster than with lists. This time advantage will be larger with bigger arrays/lists. \n", - "\n", - "(Your timing results may vary to the ones we show in this notebook, because you will be computing in a different machine.)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercise\n", - "\n", - "1. Try the comparison between lists and arrays, using bigger arrays; for example, of size 10,000. \n", - "2. Repeat the analysis, but now computing the operation that raises each element of an array/list to the power two. Use arrays of 10,000 elements. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Time to Plot\n", - "\n", - "You will love the Python library **Matplotlib**! You'll learn here about its module `pyplot`, which makes line plots. \n", - "\n", - "We need some data to plot. Let's define a NumPy array, compute derived data using its square, cube and square root (element-wise), and plot these values with the original array in the x-axis. " - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ 0. 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55\n", - " 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1. 1.05 1.1 1.15\n", - " 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75\n", - " 1.8 1.85 1.9 1.95 2. ]\n" - ] - } - ], - "source": [ - "xarray = numpy.linspace(0, 2, 41)\n", - "print(xarray)" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "pow2 = xarray**2\n", - "pow3 = xarray**3\n", - "pow_half = numpy.sqrt(xarray)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To plot the resulting arrays as a function of the orginal one (`xarray`) in the x-axis, we need to import the module `pyplot` from **Matplotlib**." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from matplotlib import pyplot\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The line `%matplotlib inline` is an instruction to get the output of plotting commands displayed \"inline\" inside the notebook. Other options for how to deal with plot output are available, but not of interest to you right now. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll use the `pyplot.plot()` function, specifying the line color (`'k'` for black) and line style (`'-'`, `'--'` and `':'` for continuous, dashed and dotted line), and giving each line a label. Note that the values for `color`, `linestyle` and `label` are given in quotes." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Plot x^2\n", - "pyplot.plot(xarray, pow2, color='k', linestyle='-', label='square')\n", - "#Plot x^3\n", - "pyplot.plot(xarray, pow3, color='k', linestyle='--', label='cube')\n", - "#Plot sqrt(x)\n", - "pyplot.plot(xarray, pow_half, color='k', linestyle=':', label='square root')\n", - "#Plot the legends in the best location\n", - "pyplot.legend(loc='best')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To illustrate other features, we will plot the same data, but varying the colors instead of the line style. We'll also use LaTeX syntax to write formulas in the labels. If you want to know more about LaTeX syntax, there is a [quick guide to LaTeX](https://users.dickinson.edu/~richesod/latex/latexcheatsheet.pdf) available online.\n", - "\n", - "Adding a semicolon (`';'`) to the last line in the plotting code block prevents that ugly output, like ``. Try it." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Plot x^2\n", - "pyplot.plot(xarray, pow2, color='red', linestyle='-', label='$x^2$')\n", - "#Plot x^3\n", - "pyplot.plot(xarray, pow3, color='green', linestyle='-', label='$x^3$')\n", - "#Plot sqrt(x)\n", - "pyplot.plot(xarray, pow_half, color='blue', linestyle='-', label='$\\sqrt{x}$')\n", - "#Plot the legends in the best location\n", - "pyplot.legend(loc='best'); " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That's very nice! By now, you are probably imagining all the great stuff you can do with Jupyter notebooks, Python and its scientific libraries **NumPy** and **Matplotlib**. We just saw an introduction to plotting but we will keep learning about the power of **Matplotlib** in the next lesson. \n", - "\n", - "If you are curious, you can explore all the beautiful plots you can make by browsing the [Matplotlib gallery](http://matplotlib.org/gallery.html)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercise:\n", - "\n", - "Pick two different operations to apply to the `xarray` and plot them the resulting data in the same plot. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## What we've learned\n", - "\n", - "* How to import libraries\n", - "* Multidimensional arrays using NumPy\n", - "* Accessing values and slicing in NumPy arrays\n", - "* `%%time` magic to time cell execution.\n", - "* Performance comparison: lists vs NumPy arrays\n", - "* Basic plotting with `pyplot`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## References\n", - "\n", - "1. _Effective Computation in Physics: Field Guide to Research with Python_ (2015). Anthony Scopatz & Kathryn D. Huff. O'Reilly Media, Inc.\n", - "\n", - "2. _Numerical Python: A Practical Techniques Approach for Industry_. (2015). Robert Johansson. Appress. \n", - "\n", - "2. [\"The world of Jupyter\"—a tutorial](https://github.com/barbagroup/jupyter-tutorial). Lorena A. Barba - 2016" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Execute this cell to load the notebook's style sheet, then ignore it\n", - "from IPython.core.display import HTML\n", - "css_file = '../style/custom.css'\n", - "HTML(open(css_file, \"r\").read())" - ] - } - ], - "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.7" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks_en/.ipynb_checkpoints/5_Linear_Regression_with_Real_Data-checkpoint.ipynb b/notebooks_en/.ipynb_checkpoints/5_Linear_Regression_with_Real_Data-checkpoint.ipynb deleted file mode 100644 index 0d7bf0e..0000000 --- a/notebooks_en/.ipynb_checkpoints/5_Linear_Regression_with_Real_Data-checkpoint.ipynb +++ /dev/null @@ -1,1230 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "###### Content under Creative Commons Attribution license CC-BY 4.0, code under BSD 3-Clause License © 2017 L.A. Barba, N.C. Clementi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Linear regression with real data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Earth temperature over time\n", - "\n", - "In this lesson, we will apply all that we've learned (and more) to analyze real data of Earth temperature over time.\n", - "\n", - "Is global temperature rising? How much? This is a question of burning importance in today's world!\n", - "\n", - "Data about global temperatures are available from several sources: NASA, the National Climatic Data Center (NCDC) and the University of East Anglia in the UK. Check out the [University Corporation for Atmospheric Research](https://www2.ucar.edu/climate/faq/how-much-has-global-temperature-risen-last-100-years) (UCAR) for an in-depth discussion.\n", - "\n", - "The [NASA Goddard Space Flight Center](http://svs.gsfc.nasa.gov/goto?3901) is one of our sources of global climate data. They produced the video below showing a color map of the changing global surface **temperature anomalies** from 1880 to 2015.\n", - "\n", - "The term [global temperature anomaly](https://www.ncdc.noaa.gov/monitoring-references/faq/anomalies.php) means the difference in temperature with respect to a reference value or a long-term average. It is a very useful way of looking at the problem and in many ways better than absolute temperature. For example, a winter month may be colder than average in Washington DC, and also in Miami, but the absolute temperatures will be different in both places." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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\nAEIQgAQhCAP/2Q==\n", - "text/html": [ - "\n", - " \n", - " " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from IPython.display import YouTubeVideo\n", - "YouTubeVideo('gGOzHVUQCw0')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "How would we go about understanding the _trends_ from the data on global temperature?\n", - "\n", - "The first step in analyzing unknown data is to generate some simple plots using **Matplotlib**. We are going to look at the temperature-anomaly history, contained in a file, and make our first plot to explore this data. \n", - "\n", - "We are going to smooth the data and then we'll fit a line to it to find a trend, plotting along the way to see how it all looks.\n", - "\n", - "Let's get started!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Step 1: Read a data file\n", - "\n", - "We took the data from the [NOAA](https://www.ncdc.noaa.gov/cag/) (National Oceanic and Atmospheric Administration) webpage. Feel free to play around with the webpage and analyze data on your own, but for now, let's make sure we're working with the same dataset.\n", - "\n", - "\n", - "We have a file named `land_global_temperature_anomaly-1880-2016.csv` in our `data` folder. This file contains the year on the first column, and averages of land temperature anomaly listed sequentially on the second column, from the year 1880 to 2016. We will load the file, then make an initial plot to see what it looks like.\n", - "\n", - "\n", - "##### Note:\n", - "\n", - "If you downloaded this notebook alone, rather than the full collection for this course, you may not have the data file on the location we assume below. In that case, you can download the data if you add a code cell, and execute the following code in it:\n", - "\n", - "```Python\n", - "from urllib.request import urlretrieve\n", - "URL = 'http://go.gwu.edu/engcomp1data5?accessType=DOWNLOAD'\n", - "urlretrieve(URL, 'land_global_temperature_anomaly-1880-2016.csv')\n", - "```\n", - "The data file will be downloaded to your working directory, and you will then need to remove the path information, i.e., the string `'../../data/'`, from the definition of the variable `fname` below.\n", - "\n", - "Let's start by importing NumPy." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import numpy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To load our data from the file, we'll use the function [`numpy.loadtxt()`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html), which lets us immediately save the data into NumPy arrays. (We encourage you to read the documentation for details on how the function works.) Here, we'll save the data into the arrays `year` and `temp_anomaly`. " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "fname = '../data/land_global_temperature_anomaly-1880-2016.csv'\n", - "\n", - "year, temp_anomaly = numpy.loadtxt(fname, delimiter=',', skiprows=5, unpack=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercise\n", - "\n", - "Inspect the data by printing `year` and `temp_anomaly`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Step 2: Plot the data\n", - "\n", - "Let's first load the **Matplotlib** module called `pyplot`, for making 2D plots. Remember that to get the plots inside the notebook, we use a special \"magic\" command, `%matplotlib inline`:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from matplotlib import pyplot\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `plot()` function of the `pyplot` module makes simple line plots. We avoid that stuff that appeared on top of the figure, that `Out[x]: [< ...>]` ugliness, by adding a semicolon at the end of the plotting command." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "pyplot.plot(year, temp_anomaly);" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "Now we have a line plot, but if you see this plot without any information you would not be able to figure out what kind of data it is! We need labels on the axes, a title and why not a better color, font and size of the ticks. \n", - "**Publication quality** plots should always be your standard for plotting. \n", - "How you present your data will allow others (and probably you in the future) to better understand your work. \n", - "\n", - "We can customize the style of our plots using parameters for the lines, text, font and other plot options. We set some style options that apply for all the plots in the current session with [`pyplot.rc()`](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.rc.html)\n", - "Here, we'll make the font of a specific type and size (serif and 16 points). You can also customize other parameters like line width, color, and so on (check out the documentation)." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "pyplot.rc('font', family='serif', size='18')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll redo the same plot, but now we'll add a few things to make it prettier and **publication quality**. We'll add a title, label the axes and, show a background grid. Study the commands below and look at the result!" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#You can set the size of the figure by doing:\n", - "pyplot.figure(figsize=(10,5))\n", - "\n", - "#Plotting\n", - "pyplot.plot(year, temp_anomaly, color='#2929a3', linestyle='-', linewidth=1) \n", - "pyplot.title('Land global temperature anomalies. \\n')\n", - "pyplot.xlabel('Year')\n", - "pyplot.ylabel('Land temperature anomaly [°C]')\n", - "pyplot.grid();" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "Better, no? Feel free to play around with the parameters and see how the plot changes. There's nothing like trial and error to get the hang of it. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Step 3: Least-squares linear regression \n", - "\n", - "In order to have an idea of the general behavior of our data, we can find a smooth curve that (approximately) fits the points. We generally look for a curve that's simple (e.g., a polynomial), and does not reproduce the noise that's always present in experimental data. \n", - "\n", - "Let $f(x)$ be the function that we'll fit to the $n+1$ data points: $(x_i, y_i)$, $i = 0, 1, ... ,n$:\n", - "\n", - "$$ \n", - " f(x) = f(x; a_0, a_1, ... , a_m) \n", - "$$\n", - "\n", - "The notation above means that $f$ is a function of $x$, with $m+1$ variable parameters $a_0, a_1, ... , a_m$, where $m < n$. We need to choose the form of $f(x)$ a priori, by inspecting the experimental data and knowing something about the phenomenon we've measured. Thus, curve fitting consists of two steps: \n", - "\n", - "1. Choosing the form of $f(x)$.\n", - "2. Computing the parameters that will give us the \"best fit\" to the data. \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the \"best\" fit?\n", - "\n", - "When the noise in the data is limited to the $y$-coordinate, it's common to use a **least-squares fit**, which minimizes the function\n", - "\n", - "$$\n", - "\\begin{equation} \n", - " S(a_0, a_1, ... , a_m) = \\sum_{i=0}^{n} [y_i - f(x_i)]^2\n", - "\\end{equation} \n", - "$$\n", - "\n", - "with respect to each $a_j$. We find the values of the parameters for the best fit by solving the following equations:\n", - "\n", - "$$\n", - "\\begin{equation}\n", - " \\frac{\\partial{S}}{\\partial{a_k}} = 0, \\quad k = 0, 1, ... , m.\n", - "\\end{equation}\n", - "$$\n", - "\n", - "Here, the terms $r_i = y_i - f(x_i)$ are called residuals: they tell us the discrepancy between the data and the fitting function at $x_i$. \n", - "\n", - "Take a look at the function $S$: what we want to minimize is the sum of the squares of the residuals. The equations (2) are generally nonlinear in $a_j$ and might be difficult to solve. Therefore, the fitting function is commonly chosen as a linear combination of specified functions $f_j(x)$, \n", - "\n", - "$$\n", - "\\begin{equation*}\n", - " f(x) = a_0f_0(x) + a_1f_1(x) + ... + a_mf_m(x)\n", - "\\end{equation*}\n", - "$$\n", - "\n", - "which results in equations (2) being linear. In the case that the fitting function is polynomial, we have have $f_0(x) = 1, \\; f_1(x) = x, \\; f_2(x) = x^2$, and so on. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Linear regression \n", - "\n", - "When we talk about linear regression we mean \"fitting a straight line to the data.\" Thus,\n", - "\n", - "$$\n", - "\\begin{equation}\n", - " f(x) = a_0 + a_1x\n", - "\\end{equation}\n", - "$$\n", - "\n", - "In this case, the function that we'll minimize is:\n", - "\n", - "$$\n", - "\\begin{equation}\n", - " S(a_0, a_1) = \\sum_{i=0}^{n} [y_i - f(x_i)]^2 = \\sum_{i=0}^{n} (y_i - a_0 - a_1x_i)^2 \n", - "\\end{equation} \n", - "$$\n", - "\n", - "Equations (2) become:\n", - "\n", - "$$\n", - "\\begin{equation}\n", - " \\frac{\\partial{S}}{\\partial{a_0}} = \\sum_{i=0}^{n} -2(y_i - a_0 - a_1x_i) = 2 \\left[ a_0(n+1) + a_1\\sum_{i=0}^{n} x_i - \\sum_{i=0}^{n} y_i \\right] = 0\n", - "\\end{equation} \n", - "$$\n", - "\n", - "$$\n", - "\\begin{equation}\n", - " \\frac{\\partial{S}}{\\partial{a_1}} = \\sum_{i=0}^{n} -2(y_i - a_0 - a_1x_i)x_i = 2 \\left[ a_0\\sum_{i=0}^{n} x_i + a_1\\sum_{i=0}^{n} x_{i}^2 - \\sum_{i=0}^{n} x_iy_i \\right] = 0\n", - "\\end{equation} \n", - "$$\n", - "\n", - "Let's divide both equations by $2(n+1)$ and rearrange terms.\n", - "\n", - "Rearranging (6) and (7):\n", - "\n", - "$$\n", - "\\begin{align}\n", - " 2 \\left[ a_0(n+1) + a_1\\sum_{i=0}^{n} x_i - \\sum_{i=0}^{n} y_i \\right] &= 0 \\nonumber \\\\ \n", - " \\frac{a_0(n+1)}{n+1} + a_1 \\frac{\\sum_{i=0}^{n} x_i}{n+1} - \\frac{\\sum_{i=0}^{n} y_i}{n+1} &= 0 \\\\\n", - "\\end{align}\n", - "$$\n", - "\n", - "$$\n", - "\\begin{align}\n", - " a_0 = \\bar{y} - a_1\\bar{x}\n", - "\\end{align}\n", - "$$\n", - "\n", - "where $\\bar{x} = \\frac{\\sum_{i=0}^{n} x_i}{n+1}$ and $\\bar{y} = \\frac{\\sum_{i=0}^{n} y_i}{n+1}$.\n", - "\n", - "Rearranging (7):\n", - "\n", - "$$\n", - "\\begin{align}\n", - " 2 \\left[ a_0\\sum_{i=0}^{n} x_i + a_1\\sum_{i=0}^{n} x_{i}^2 - \\sum_{i=0}^{n} x_iy_i \\right] &= 0 \\\\\n", - " a_0\\sum_{i=0}^{n} x_i + a_1\\sum_{i=0}^{n} x_{i}^2 - \\sum_{i=0}^{n} x_iy_i &=0 \\\\\n", - "\\end{align}\n", - "$$\n", - "\n", - "Now, if we replace $a_0$ from equation (8) into (9) and rearrange terms:\n", - "\n", - "$$\n", - "\\begin{align*}\n", - " (\\bar{y} - a_1\\bar{x})\\sum_{i=0}^{n} x_i + a_1\\sum_{i=0}^{n} x_{i}^2 - \\sum_{i=0}^{n} x_iy_i &= 0 \\\\ \n", - "\\end{align*}\n", - "$$\n", - "\n", - "Replacing the definitions of the mean values into the equation, \n", - "\n", - "$$\n", - "\\begin{align*}\n", - " \\left[\\frac{1}{n+1}\\sum_{i=0}^{n} y_i - \\frac{a_1}{n+1}\\sum_{i=0}^{n} x_i \\right]\\sum_{i=0}^{n} x_i + a_1\\sum_{i=0}^{n} x_{i}^2 - \\sum_{i=0}^{n} x_iy_i &= 0 \\\\ \n", - " \\frac{1}{n+1}\\sum_{i=0}^{n} y_i \\sum_{i=0}^{n} x_i - \\frac{a_1}{n+1}\\sum_{i=0}^{n} x_i \\sum_{i=0}^{n} x_i + a_1\\sum_{i=0}^{n} x_{i}^2 - \\sum_{i=0}^{n} x_iy_i &= 0 \\\\ \n", - "\\end{align*}\n", - "$$\n", - "\n", - "Leaving everything in terms of $\\bar{x}$, \n", - "\n", - "$$\n", - "\\begin{align*}\n", - " \\sum_{i=0}^{n} y_i \\bar{x} - a_1\\sum_{i=0}^{n} x_i \\bar{x} + a_1\\sum_{i=0}^{n} x_{i}^2 - \\sum_{i=0}^{n} x_iy_i = 0 \n", - "\\end{align*}\n", - "$$\n", - "\n", - "Grouping the terms that have $a_1$ on the left-hand side and the rest on the right-hand side:\n", - "\n", - "$$\n", - "\\begin{align*}\n", - " a_1\\left[ \\sum_{i=0}^{n} x_{i}^2 - \\sum_{i=0}^{n} x_i \\bar{x}\\right] &= \\sum_{i=0}^{n} x_iy_i - \\sum_{i=0}^{n} y_i \\bar{x} \\\\\n", - " a_1 \\sum_{i=0}^{n} (x_{i}^2 - x_i \\bar{x}) &= \\sum_{i=0}^{n} (x_iy_i - y_i \\bar{x}) \\\\\n", - " a_1 \\sum_{i=0}^{n} x_{i}(x_{i} -\\bar{x}) &= \\sum_{i=0}^{n} y_i(x_i - \\bar{x}) \n", - "\\end{align*}\n", - "$$\n", - "\n", - "Finally, we get that:\n", - "\n", - "$$\n", - "\\begin{align}\n", - " a_1 = \\frac{ \\sum_{i=0}^{n} y_{i} (x_i - \\bar{x})}{\\sum_{i=0}^{n} x_i (x_i - \\bar{x})}\n", - "\\end{align}\n", - "$$\n", - "\n", - "Then our coefficients are:\n", - "\n", - "$$\n", - "\\begin{align}\n", - " a_1 = \\frac{ \\sum_{i=0}^{n} y_{i} (x_i - \\bar{x})}{\\sum_{i=0}^{n} x_i (x_i - \\bar{x})} \\quad , \\quad a_0 = \\bar{y} - a_1\\bar{x}\n", - "\\end{align}\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Let's fit!\n", - "\n", - "Let's now fit a straight line through the temperature-anomaly data, to see the trend over time. We'll use least-squares linear regression to find the slope and intercept of a line \n", - "\n", - "$$y = a_1x+a_0$$\n", - "\n", - "that fits our data.\n", - "\n", - "In our case, the `x`-data corresponds to `year`, and the `y`-data is `temp_anomaly`. To calculate our coefficients with the formula above, we need the mean values of our data. Sine we'll need to compute the mean for both `x` and `y`, it could be useful to write a custom Python _function_ that computes the mean for any array, and we can then reuse it.\n", - "\n", - "It is good coding practice to *avoid repeating* ourselves: we want to write code that is reusable, not only because it leads to less typing but also because it reduces errors. If you find yourself doing the same calculation multiple times, it's better to encapsulate it into a *function*. \n", - "\n", - "Remember the _key concept_ from [Lesson 1](http://go.gwu.edu/engcomp1lesson1): A function is a compact collection of code that executes some action on its arguments. \n", - "\n", - "Once *defined*, you can *call* a function as many times as you want. When we *call* a function, we execute all the code inside the function. The result of the execution depends on the *definition* of the function and on the values that are *passed* into it as *arguments*. Functions might or might not *return* values in their last operation. \n", - "\n", - "The syntax for defining custom Python functions is:\n", - "\n", - "```python\n", - "def function_name(arg_1, arg_2, ...):\n", - " '''\n", - " docstring: description of the function\n", - " '''\n", - " \n", - "```\n", - "\n", - "The **docstring** of a function is a message from the programmer documenting what he or she built. Docstrings should be descriptive and concise. They are important because they explain (or remind) the intended use of the function to the users. You can later access the docstring of a function using the function `help()` and passing the name of the function. If you are in a notebook, you can also prepend a question mark `'?'` before the name of the function and run the cell to display the information of a function. \n", - "\n", - "Try it!" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "?print" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using the `help` function instead:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on built-in function print in module builtins:\n", - "\n", - "print(...)\n", - " print(value, ..., sep=' ', end='\\n', file=sys.stdout, flush=False)\n", - " \n", - " Prints the values to a stream, or to sys.stdout by default.\n", - " Optional keyword arguments:\n", - " file: a file-like object (stream); defaults to the current sys.stdout.\n", - " sep: string inserted between values, default a space.\n", - " end: string appended after the last value, default a newline.\n", - " flush: whether to forcibly flush the stream.\n", - "\n" - ] - } - ], - "source": [ - "help(print)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's define a custom function that calculates the mean value of any array. Study the code below carefully. " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def mean_value(array):\n", - " \"\"\" Calculate the mean value of an array \n", - " \n", - " Arguments\n", - " ---------\n", - " array: Numpy array \n", - " \n", - " Returns\n", - " ------- \n", - " mean: mean value of the array\n", - " \"\"\"\n", - " sum_elem = 0\n", - " for element in array:\n", - " sum_elem += element # this is the same as sum_elem = sum_elem + element\n", - " \n", - " mean = sum_elem / len(array)\n", - " \n", - " return mean\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once you execute the cell above, the function`mean_value()` becomes available to use on any argument of the correct type. This function works on arrays of any length. We can try it now with our data." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1948.0\n" - ] - } - ], - "source": [ - "year_mean = mean_value(year)\n", - "print(year_mean)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0526277372263\n" - ] - } - ], - "source": [ - "temp_anomaly_mean = mean_value(temp_anomaly)\n", - "print(temp_anomaly_mean)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Neat! You learned how to write a Python function, and we wrote one for computing the mean value of an array of numbers. We didn't have to, though, because NumPy has a built-in function to do just what we needed: [`numpy.mean()`](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.mean.html).\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercise \n", - "\n", - "Calculate the mean of the `year` and `temp_anomaly` arrays using the NumPy built-in function, and compare the results with the ones obtained using our custom `mean_value` function." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we have mean values, we can compute our coefficients by following equations (12). We first calculate $a_1$ and then use that value to calculate $a_0$.\n", - "\n", - "Our coefficients are:\n", - "\n", - "$$\n", - " a_1 = \\frac{ \\sum_{i=0}^{n} y_{i} (x_i - \\bar{x})}{\\sum_{i=0}^{n} x_i (x_i - \\bar{x})} \\quad , \\quad a_0 = \\bar{y} - a_1\\bar{x}\n", - "$$ \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We already calculated the mean values of the data arrays, but the formula requires two sums over new derived arrays. Guess what, NumPy has a built-in function for that: [`numpy.sum()`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.sum.html). Study the code below." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "a_1 = numpy.sum(temp_anomaly*(year - year_mean)) / numpy.sum(year*(year - year_mean)) " - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0103702839435\n" - ] - } - ], - "source": [ - "print(a_1)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "a_0 = temp_anomaly_mean - a_1*year_mean" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-20.1486853847\n" - ] - } - ], - "source": [ - "print(a_0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Exercise\n", - "\n", - "Write a function that computes the coefficients, call the function to compute them and compare the result with the values we obtained before. As a hint, we give you the structure that you should follow:\n", - "\n", - "```python\n", - "def coefficients(x, y, x_mean, y_mean):\n", - " \"\"\"\n", - " Write docstrings here\n", - " \"\"\"\n", - "\n", - " a_1 = \n", - " a_0 = \n", - " \n", - " return a_1, a_0\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now have the coefficients of a linear function that best fits our data. With them, we can compute the predicted values of temperature anomaly, according to our fit. Check again the equations above: the values we are going to compute are $f(x_i)$. \n", - "\n", - "Let's call `reg` the array obtined from evaluating $f(x_i)$ for all years." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "reg = a_0 + a_1 * year" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With the values of our linear regression, we can plot it on top of the original data to see how they look together. Study the code below. " - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nzMzMzEr+D3e5KbvwEdppAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "pyplot.figure(figsize=(10, 5))\n", - "\n", - "pyplot.plot(year, temp_anomaly, color='#2929a3', linestyle='-', linewidth=1, alpha=0.5) \n", - "pyplot.plot(year, reg, 'k--', linewidth=2, label='Linear regression')\n", - "pyplot.xlabel('Year')\n", - "pyplot.ylabel('Land temperature anomaly [°C]')\n", - "pyplot.legend(loc='best', fontsize=15)\n", - "pyplot.grid();" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Step 4: Apply regression using NumPy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Above, we coded linear regression from scratch. But, guess what: we didn't have to because NumPy has built-in functions that do what we need!\n", - "\n", - "Yes! Python and NumPy are here to help! With [`polyfit()`](https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.polyfit.html), we get the slope and $y$-intercept of the line that best fits the data. With [`poly1d()`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.poly1d.html), we can build the linear function from its slope and $y$-intercept.\n", - "\n", - "Check it out:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# First fit with NumPy, then name the coefficients obtained a_1n, a_0n:\n", - "a_1n, a_0n = numpy.polyfit(year, temp_anomaly, 1)\n", - "\n", - "f_linear = numpy.poly1d((a_1n, a_0n)) " - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0103702839435\n" - ] - } - ], - "source": [ - "print(a_1n)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-20.1486853847\n" - ] - } - ], - "source": [ - "print(a_0n)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " \n", - "0.01037 x - 20.15\n" - ] - } - ], - "source": [ - "print(f_linear)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nzMzMzEr+D3e5KbvwEdppAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "pyplot.figure(figsize=(10, 5))\n", - "\n", - "pyplot.plot(year, temp_anomaly, color='#2929a3', linestyle='-', linewidth=1, alpha=0.5) \n", - "pyplot.plot(year, f_linear(year), 'k--', linewidth=2, label='Linear regression')\n", - "pyplot.xlabel('Year')\n", - "pyplot.ylabel('Land temperature anomaly [°C]')\n", - "pyplot.legend(loc='best', fontsize=15)\n", - "pyplot.grid();" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## \"Split regression\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you look at the plot above, you might notice that around 1970 the temperature starts increasing faster that the previous trend. So maybe one single straight line does not give us a good-enough fit.\n", - "\n", - "What if we break the data in two (before and after 1970) and do a linear regression in each segment? \n", - "\n", - "To do that, we first need to find the position in our `year` array where the year 1970 is located. Thankfully, NumPy has a function called [`numpy.where()`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html) that can help us. We pass a condition and `numpy.where()` tells us where in the array the condition is `True`. \n" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(array([90]),)" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "numpy.where(year==1970)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To split the data, we use the powerful instrument of _slicing_ with the colon notation. Remember that a colon between two indices indicates a range of values from a `start` to an `end`. The rule is that `[start:end]` includes the element at index `start` but excludes the one at index `end`. For example, to grab the first 3 years in our `year` array, we do:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 1880., 1881., 1882.])" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "year[0:3]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we know how to split our data in two sets, to get two regression lines. We need two slices of the arrays `year` and `temp_anomaly`, which we'll save in new variable names below. After that, we complete two linear fits using the helpful NumPy functions we learned above." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "year_1 , temp_anomaly_1 = year[0:90], temp_anomaly[0:90]\n", - "year_2 , temp_anomaly_2 = year[90:], temp_anomaly[90:]\n", - "\n", - "m1, b1 = numpy.polyfit(year_1, temp_anomaly_1, 1)\n", - "m2, b2 = numpy.polyfit(year_2, temp_anomaly_2, 1)\n", - "\n", - "f_linear_1 = numpy.poly1d((m1, b1))\n", - "f_linear_2 = numpy.poly1d((m2, b2))" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\nAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "pyplot.figure(figsize=(10, 5))\n", - "\n", - "pyplot.plot(year, temp_anomaly, color='#2929a3', linestyle='-', linewidth=1, alpha=0.5) \n", - "pyplot.plot(year_1, f_linear_1(year_1), 'g--', linewidth=2, label='1880-1969')\n", - "pyplot.plot(year_2, f_linear_2(year_2), 'r--', linewidth=2, label='1970-2016')\n", - "\n", - "pyplot.xlabel('Year')\n", - "pyplot.ylabel('Land temperature anomaly [°C]')\n", - "pyplot.legend(loc='best', fontsize=15)\n", - "pyplot.grid();" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have two different curves for two different parts of our data set. A little problem with this and is that the end point of our first regression doesn't match the starting point of the second regression. We did this for the purpose of learning, but it is not rigorously correct. We'll fix in in the next course module when we learn more about different types of regression. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## We learned:\n", - "\n", - "* Making our plots more beautiful\n", - "* Defining and calling custom Python functions\n", - "* Applying linear regression to data\n", - "* NumPy built-ins for linear regression\n", - "* The Earth is warming up!!!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## References\n", - "\n", - "1. [_Essential skills for reproducible research computing_](https://barbagroup.github.io/essential_skills_RRC/) (2017). Lorena A. Barba, Natalia C. Clementi, Gilbert Forsyth. \n", - "2. _Numerical Methods in Engineering with Python 3_ (2013). Jaan Kiusalaas. Cambridge University Press.\n", - "3. _Effective Computation in Physics: Field Guide to Research with Python_ (2015). Anthony Scopatz & Kathryn D. Huff. O'Reilly Media, Inc.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Execute this cell to load the notebook's style sheet, then ignore it\n", - "from IPython.core.display import HTML\n", - "css_file = '../style/custom.css'\n", - "HTML(open(css_file, \"r\").read())" - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "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.7" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -}