{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "using PyPlot" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0:0.1:10.0\n" ] } ], "source": [ "# Create evenly spaced time samples from t=0 to t=10.\n", "t_min = 0.0\n", "t_max = 10.0\n", "num_samples = 101\n", "dt = (t_max - t_min) / (num_samples - 1)\n", "\n", "t = linspace(t_min, t_max, num_samples)\n", "\n", "println(t)\n", "println(dt)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhoAAADPCAYAAACz1XiTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzt3XmcW3W9//HXSWaSmU5n6bRM22Gm7dAWu9CytAVbyuIF6q3IBTcUBFHxPuy9Fam9158s/hT1QhGv6O+KgtUrelUEvazKIhWkpay1C2CB0tKV7st0ZjpLZpJ8f398TzJJJsksnUwmmffz8QhNTk5yvgltzud8vt/v5+sYYwwiIiIiGeDJdgNEREQkfynQEBERkYxRoCEiIiIZo0BDREREMkaBhoiIiGSMAg0RERHJGAUaIiIikjEKNERERCRjFGiIiIhIxijQEBERkYxRoCEiIiIZUzDQBwyHw+zZs4fS0lIcxxnow4uIiEgfGGNoamqiuroaj6fneYoBDzT27NlDbW3tQB9WRERE+sGuXbuoqanp8f4DHmiUlpYCtqFlZWUDfXgRERHpg8bGRmpra6Pn8Z4a8EAj0l1SVlamQENERKRfGOAV4A1gGPBBYFRGjtTbYQ8DHmiIiIhIf3oNuAr4e8y2QuCLwJ3u/exRoCEiIpKzNgPnAC0J2zuAHwNHgN8OdKPiaHqriIhIzroNaAVCSZ4zwH3YjEf2KNAQEREZ7EwrmE1gtoMx7sYO4HdAMM0LC4DfZLp1aSnQEBERGaxME4T/HcxYMNPATAQzA8x9wDEg0N0bAAcy3840NEZDRERkMDLNYD4AvE5818jbYK4GvgNOCdDczRtlt3aVMhoiIiKD0v/Djq9IHH/hdp2Yb4D5GOlzBiHgmkw0rscUaIiIiAxG5m4gnGYHD5gR2HoZqYKNpcDk/m5ZryjQEBERyZbwKgheDh3V0FEDwc+BWQcmAOzp5sUG2Au8BFwExBbSGgHcDvxnRprdGxqjISIikg2hOyD8deyp2J05Yh6A4H3gXQ74gPY0b+AByoAJwBPAduBNoBiYB/gz1PDeUaAhIiIy0MKr3SAD4qenuvdDXwTvPwJPknr6ahCcT8Q8nuDeBhd1nYiIiAy08F2kv9Z3wFQAXpKfqr3AWcCFGWhc/+pVoHH33Xczc+bM6IJoc+fO5cknn8xU20RERHKXaYfQA9BxDXRcAcHbwexzn1tN+kJbIQi/Bc7j2PEWYNcs8br3zwXnT+AM/nxBr7pOampquP3225k0aRIAv/rVr7j00ktZv34906dPz0gDRUREco55F9oXAjuxwUEYeBRC/wEFy+kMGNLxgvMB4D3gYTCvgVMEXAzOrIw1vb85xkRrmfZJZWUl3/ve97j22mt7tH9jYyPl5eU0NDRomXgREck/JgDtM4DdJF+DxAHPB4GnSZ3V8IDnRvB+M1Ot7LW+nr/7PBg0FArxhz/8gebmZubOnZtyv0AgQCDQWSK1sbGxr4cUEREZ/MKPYDMZqXjt2iVOqut8D+ADzxf6v21Z0OvOnTfeeIPhw4fj9/tZtGgRDz/8MNOmTUu5/7JlyygvL4/eamuzWwpVRESkX5hGCP4GOu6E4P22ZDhA+HHSd40EwbwAnl+4+8Xu6wYZ3ofAOTFTLR9Qve46aW9vZ+fOnRw9epQHH3yQn//856xcuTJlsJEso1FbW6uuExERyU3GQPC/oOPb2EXNPNgukhIovA34C4QfJVoqPBVfM7ADwsvtdFc84LnIZjKcsZn9DH3Q166T4x6jceGFFzJx4kR++tOf9mh/jdEQEZGc1vET6Phq6ucLPgzmj6QuH+6AMxV86zLRuozp6/n7uOfFGGPiMhYiIiJ5y7RCx3fS7xN8hW5Pr95/7bcmDXa9Ggx60003sXDhQmpra2lqauL+++/nueee46mnnspU+0RERLIjfADCfwfHB55Z4BRD6Fmgu0kNB8HzbxD+Hnb8RWRmibsWiXMpeD6XsWYPNr0KNPbv38/VV1/N3r17KS8vZ+bMmTz11FNcdNFFmWqfiIjIwDKHoO3/QOghOqenlkLhYvD0cEKDMwsKn4HgnWCewpYLn2IzGZ7Pg9OTOhr54bjHaPSWxmiIiMigZRqg5QNgttK1BoYD3n8As6L79yl6ATynue9pgHDOBxdZG6MhIiKSNzqW26qeSQttGQj9BRhL6tOnB5zp4Jzauclxcj7IOB4KNEREZGgKH4HwdjAtnds67iX1bBGAQnBmYsdbJJ5CPUAB+P7LBhcCKNAQEZGhJvgKHLsUmk6CptOgcQK0fBnCe8Hs7e7FQAj8T4DnjPinPO8H/9PgfX+GGp6b+lyCXEREJOd0PA0tVyRsbIeO30JwBXjKgCNp3sALThV454N3JYTfBbMfnGrwTMhcu3OYAg0RERkaTDu0LsJ2jSTOgwiBOQCcBDSQfIyGu1/BJzsfeiYCE/u/rXlEXSciIpKfTJsNLiKCT4A5QurS4CEIvQtUkHytEg94zrEzT6THFGiIiEj+MAYC90HDfDhaDUfHQONCaH8CQpvpPpEftoM5PTPcx07nn96PQvHvwdGpszfUdSIiIvnBGGj5CrT/D3HX0aE10HwVFF5I+hklLu9U8D0PoXUQXgcUgvcC8NRkqOH5TYGGiIjkh44n3SAD4gMK937Him7y+A54JoNnkn3oPcPe5Lgo/yMiIrnJBN2qm67Az0g+tiKiAJxJpD71GSi6STUw+pkCDRERyR3hBmi+Aw5Pg8Nj4fAEOPZVCG2H0Oukni2Cfc6UQOHH3cdeoBA7DsMHRd+Hwssy2/4hSF0nIiKSG8KHoeFiCG2js2ukBdp+DYEHwduDU5qnBIYth9C/Q8dDdm0TzwQovBw8IzLY+KFLgYaIiOSG5m/YzEWXAZ0hW0Y8PMxdUyRVVsOBwovtXe/J4L0hY02VTuo6ERGRwce0224S4wYV4SMQiF22PVEIwo3Y01qyU5sXnBHguzIjzZXUlNEQEZHBo+MtaP4hBP4EhMApg+KrwDcXu85IOl4ovBo6fg800xlwhMAZBcP/FzwVmWy9JKFAQ0REBof2l6H+k0QXLgMwjdDyUzeb0R1ja2CU/B0Cf4DQq4AXCs4D36XgFGWu7ZKSAg0REck+E4SGRUAHScdghA6A1w8E0r+P70KbBSm6Frg2I02V3lGgISIiA8sYCG2xa5F4J4CnFNqfhfC+NC8KQ9ikGVnoAd8l4B3f/+2V46JAQ0REBk7LH+DYnRDa4W7wQfEnwDsCW9ciTR0MEwbfx6D9QezpK4SNPEJQOB9Kf5jhxktfKNAQEZGBcexH0LSMzoXKANqh9X7wlJF6VdUIB4Ytsbe230J4l51J4v84FM5TRc9BSoGGiIhkXug9aLrdfZAYUITsVFZPugXPHPDU2voXjgeGfydDDZX+pkBDRET6V3APBFbaWhiFM8B3OrQ8gM1kpMpahMEUghMi+QqrBoZ/RUu05yAFGiIi0j/CLVB/A7Q+gg0o3MCiYCr4xhLfZZKECYLvXOhYiT09RYKSMJR8DYqvyGDjJVMUaIiIyPEzBg5/AQIv0BkguH8G34Hwlm7jDCiAil9D8A1oe9iuQ+IdD8WfBG9t5touGaVAQ0REjl/gRQg8n+LJEITD4E23sqoXij4MHh/4Ztmb5AUFGiIi0nPhY9D8ILSuABMA3wwYfiW0PET66alhMAXghOk6BsNjXzv8uky2XLJEgYaIiPRM+yY4cKVdrh0AA4G10PQLKJxI2hoYODarMWwBBJ6ic/GzIHhGQsXdUDgt059AskCBhoiIdM+0wYGrIFxP/MwRN7gIvuPOCEkzRdUzBip/AcEt0Pa0fc/CqeC/EJzCDDZeskmBhoiIxDMGgtsh3AwFNeCtgObHIXwgzWsKwEm3uqoHhl9l7xZMguGT+rPFMogp0BARkU7Nf4b6O6Fjs7vBCyUXg9NC92MwSDGzxGtnjQz/XAYaLIOdKp+IiIjV9AAc+Bfo2BKzMWSzGa0r6bZEuHGgdKldPTXKA8UfgqqHwVOegUbLYKeMhoiIQKgRDt/iPkhWIjzUTYlwDxS+D8q/AmX/Au2vuZVBp4D3hMy0WXKCAg0RkaHEhKFlJTT9LwT3QcEYKP0YBN+zgUHK1xm3ayRVGfEwlF5r7zpF4D8rA42XXKRAQ0RkqAi3wb4vQusLRMdbBP5ux2UUjHG3pRrQ6UDYA14PNtCIjNVwZ5qUfAJKPp7xjyC5p1djNJYtW8acOXMoLS2lqqqKyy67jE2bNmWqbSIi0p8O/Qe0vuQ+CMX/GdxH+joYAA5U/Q5KLgfPCHBKwD8LRv0EKr+nZdolqV5lNFauXMnixYuZM2cOwWCQm2++mQULFvDmm29SUlKSqTaKiEhvmDC0vAiBt203xvDzwFNiu0tS1rkwpB/s6YGiMztv3J5mX5FOjjGmm2HEqR08eJCqqipWrlzJueee26PXNDY2Ul5eTkNDA2VlZd2/IN8dboX6Nij3QUsHNARgZDGU+KCxDSqKoKwo260UkVzR+jrsXQLB3diuEDewKD4d2tekf60TTjEGw7G3MfdB8Zn93mTJDX09fx/XGI2GhgYAKisrU+4TCAQIBALRx42NjcdzyNwTNtDWAa8ehI2H4L0m2N8MR9vAMXaAFcaO5nboet8Birx2v1I/nFQBI4rt/Vk1MG6E/R0p0ExlkSGvfSu89xm7BgkQ1xXSus7GHekYB4rOgsAr2B+fSInwUhj1nwoypE/6nNEwxnDppZdSX1/P88+nWrEPbrnlFr71rW912Z7XGY09zbDmILy0HzYetmlMJyaAMAY87tce2Z7svhPZB6IBSOSxB/d93WPWVsC0MVBTAZUlMG0seBR8iOStcABa19sy3v6TobAa9t4ATY+RfKxF7EVMKg6Me9b+2fJnWxm08CQouQgcf0Y+huSOvmY0+hxoLF68mMcff5zVq1dTU1OTcr9kGY3a2tr8CzSaOuDPu+HJXbC72Q0KYgIKjxtsOLirF5ImyIjdB7oEGZH3NTH7Rt4b9/lhPqgbCVVlMP1EOHWcO1pcRHKaCcPh5XDkv+1KqgA4MOwcaHsB6Ej92thsaRdeKJ4P1f/d702W/DCgXSfXXXcdjz32GKtWrUobZAD4/X78/jyOhPe1wj2b4OWD9gcAA143KIjNWkQDARN/RZH0vol/nCzIiDx2wp2PI691DLQG4M09sGkPrHzLdr+cWAGjy2He++B91RohLpKL9t8KR+9L2GigZTV40q01AoS9UOAH00r8oFAPFJwIVRrgKf2vV4GGMYbrrruOhx9+mOeee466urpMtWvwO9QGP9gEr7qLDHligotkwUOyc7pjkt+P2z8h6HBiMhmRoIKYfRO7Wwjbftn2MGw/CDsPwiub7RiPqnKYOAbOmWbvi8jg0r4L2nfaMRLF0+0YjC5BRkQozVojER4ovQIKRkLT7yF4AApOgNLLoewK8Jb2/2eQIa9XgcbixYu57777ePTRRyktLWXfvn0AlJeXU1xcnJEGDjr17fDr7fDYe3agZwF0CQa6/cce2S9mdHfs/USJ75UyI5IYlIQT9nMHnzrAsTZoboMd++GZDVBbaYON6RPgjEngUy03kaxp2wJ7b4WWmFkiBWOgeCKpFzZL8xsSFYLyK8A3Hkb8c781VySdXo3RcFKk2u+9914++9nP9ug9cnp666tH4JaNdhYJxIy7iO3O6MFYjNhulJSzTZLtE/ueCceKHjvS2MSBX4nZjpjXR3iwgcgwH5xWByPL4bRJMDr1rCIR6WeBbbD1UxBO7N7A7SqF1AFF5LcjRTBSuQhGfaVfmytDx4CM0TiOkhu5LRCC72yC1Qei08m7ZBkiWQzjdAYd0ftOwn3cE7y7Pdl9YtYViGQ7Iu/vJL5/EnGDQ2O3xzQ4MfDAHe/R1gavvGWP/cRL8L5x8P6pUFYCdSdqUKlIfwnWQ9MLNqgomgjDTof9P7ClwlMV1jIp/m0D7nx4KL0Imp4gWk7cWwUjF0H5lf3+EUS6o/x4d7a1wA0bYW9rmiuJ2MAgZpfY+8b9ZfAYez+MO97CXScgEmBEtpMQsMSNzSD5sWK3d2li4hiQ2AGm7gsTA4/ItNzNO+wNbLBx8Tw49WQo9GoKrUhfmA7Ycycc/j1xa4v4xkFoOykzFukuLgDwQvllMOYWqLoJ2rfZaan+KW6WQ2TgHVdl0L7Iqa6TV+vh398CE7In3MhsEidNdwd0dpVEamY4xHeFlBXAyCKoHgYj/FDuh9JCOzMkEITiAmhpt5VB24NQ3wqHjkFLAI62QEcwvnsmOtU1pgsndvZLXJtdnlDXx9BNxiOSlnWPXeCF06fAB86EKnWviPTYrv8L9X8kaQVObzczR2K7YuN4wTMMJjwEvvSzAUX6IiuVQfPa4wdh2WZ7VZ/soj22WyPa9UFMZsJ9kddATQmcPRrmjoaqYijz0eeppe0hqG+xx9q8HzbuhcNNsLfeBiLRDIeTJtuR+OOWJBWbLMjwJGRBgiFYuxHWvQm1o2FEGcw4GaZPAq+unkToOAxHHoGWjYAXyuZC0fug/rEUL0i1DkkM44Gi06DtdeKyIf7JUH2HggwZdJTRSOZ3e+C/dsRkJgxxWYrE7EXiAE+A2mFwcQ188EQoKcx8m8MGth6Ao62w7QCs3Q6HGlO0mYQMRkL2I7ZWR4QTSjI2xSQUDnNsBmdUBZw3B4YXw4RxUDJEZiSJxDr6DOy4EUxshsKAxw8ESBlUdMkudtkBTv4LOAXQvNqWG/dPgaJT+n4BI9IDA14ZtK8GfaDxyAH47lbiZozEdZmY+BN3XLcCMGsE/MtkmJDl+ejG2O6X1gC8tBleeBsaW9xuIIgO/LQ7d52hklgErEvp4iTBSLKsh8cDs0+FD18AhUqgSZ4KtUDHQVuHorASWjfBpk9jg4nEoD0m6E8q8u8txXTVkZ+DMf/Wf20X6SEFGv3h4QNw+7b4PtAuU1PdrpTot+YGGO8rhVumw5hBfvX+3iF49g14bTu0t7nVTEnIWCQJNBIzHj3pWond1+ux3SljR8PcWTBjmq6+JPe1H4A998CRJ+0AT4DhZ4C3EI69Qso1R1LNCotwCsBXAcH9REd9Oz4bZFQtBkeDsGXgKdA4Xm83w2ff7JxpkTiwMrEMeOREO8wLt0yFs0ZmodHHKWzg1bfhuddh98H4AWaJa61027WSuN6Ku1+X2h2O/Y5rx9puleElMGM6lA+ivwsiPdG+H96+BjrqiQ8oPODpSBNIdBdoeKHyI3DiTdD8sq0O6hkOpeeCV/9OJHsUaByPLa02yGgPx5wwE0+SCcGGAeZWwo2TYYQvO+3uT8ZAYzM8+QqseRuCMTNbUi3qFqu3s1YAPDG/tHPPgvefabNFpaW6YpPBw4Sg4UU49CebwfCNhlGXwJHHof4ZkmYtEmd1JUqcBRblBW85TL7fHkdkEFGg0VfGwEc3wnut9nHsmIzYK4/EGRtfHA+fydPR3YF2aGiG9w7A4y/AkUbiF29LckXW5Yc1yT5dFoCL3S9m3/JymDsPzpyjgEOyK9QKm/8Nmv6GjYLD2BLgwfT1LHoyoHP46RDYDKGjRHcePg9qbtLMERmUNL21L4yBb+6EXYH4H4TEKaKRaasGe+K79WQ4Pwe7SnrK74MqH1SNgNNOhq274XADbNoKr79jB3iaJIPcosEYSQa7JRsAZ5Jf2TUchaeegDUvQ0UFDB8OM0+FupMUeEjmtO2Bw09DRwP4R8OoD8J7P4Kmde4OkQuQZOMuEoQ9Cd2NiQzUfgMKx0LL62DawD8BfCce32cQGYSGdkbj4cPwnR2px2QkVt70OvD998FZFdlp72BwsB7W/B0O1cOO3dB0zG5Ptu4KxHebdPnhTbEtMYvkuIHN+DqYM8fuNnoMVI7q388mQ5MJwrYfwIGHAI/79y1kLzQ8QZJX6Uw26yrh+ehvSiQTAtEF0WpuhlEf79/PIZJhymj0VkcYfrAnZoNbAwLsD0zYS5er8B9MgTlDfDn1E0bAh86x94NBeOV1eHE9HDriBhfu99VtqWRsMBebBYH47ztaaMytzLprC7y3pfP58SfBxR+BClUllR5qPwSHnoGOo27W4gJ471448LC7Q7hzJhYhUpYCh/iLkC7cYn7VS6H+CWh9E/BC6Vyo+gyUzu6nDyQy+A3NjEbYwL9uhVeaSFpGPNkaIrdPhH/QCS2txmPw4BPwzlaS1hlJzF70ZFwHkLJYmOPYLFMk61E3Gc6cD7V1/fmpJB+YMOy4B/b8Dvt3x+sGsF5wgiQtnpV0TFHcm6Z53oGRl8CEb7i7xlzEiOQoZTR6Y2UjvHTMLS0eW6rbvQqJ/igYCDuw6EQFGT1RNhw+dzkcrofd+6CpCVa+CM0txH/PMa/pktFIfFOTpAR8zADSUOQ1IdjyNmzeCJOngK8QCn1w8gyoO1ljO4aS5q2w/wkIHITCETD6g1D/Auz5bec+kWqdpoOkJfiB6KrJKTnu2NAC+36O182GhKFyIYy7IWZXBRgydA29jEbIwIffht3t9mokcXG02G/DAeaVwQ8nxU/FlJ4LBGDDRnhrM7Q0w8F9EA7bYK5L7Y1e1OdIdiUZ2Rfc/19uzY4TxsK8C6CtBYqKYcIU8Pn7/aNKlpkwbPkB7HvUPem7WS8TtEMjkpb87qamRdrZI16oOBvqvgn1f4bAe7Yy6IiLoGhcf3wikUFF01t76of74Rf7ia58CvHTViNXysaBigJ4egYUKMjoN4cOwV+eg7fetieGxNLnyabEJtsGXYOPpKP8k7xnoQ/OuhBmnAnHjoJ/GJQrY5UzwkHY9zjsfgRad9q1Q044H7w+2PtQ1/3TdoH0YFBn0nLgDhTVwpTltuS4yBCgQKMnGkJw/iYIuWnTxDUHooMPsen6X0yG00oGto1DRWsrHGuGlhZ45CE4etROmyXkXom6+6UKNBJjv6RXnjH/f7tsT1iVt6oG5n0Ixr/Plmb3FkLBACyGJ+k1vgP16wEDFTNg+GTY+HWof5W4FKTjAYLJMw9Js2IRqf6ORHih7HQYMQcOPmpXY/WNglGXQdVl4B1+3B9RJFco0OiJ7+6DXx+my+Jo0HUQ6Oeq4PrqgW3fUBUOw+Z3YPsO6GiHzW9Bc7M7ViZJpqJLoJEim5Eq85F0TRZ3f18RdLTZJydMhTkLYGwdhN3BIB6N9ciI9nroaAJfJRQOh8AheONb0PgmnRFhGPwjIHiYrmMn0mUmUmW7Yp53jBusxO7nhYISOOXnNnshMsQp0OjO1gD807vu1XKqk43bZTLCC3+cAmXegWufdGprhTWvwLq1cKwJvMamyyN6WqMj2YmnN5kPxwHCUD4Cmg7bJ0+cDKdfCOOnQUfAZsf8xRps2lPGDdgi39fRt+DdX8KR9fax44UT5kLzJjuY08QWxzJ0XUU49rl03SMpgksAPFAy0QY5DS8TnZUy8iKo+Wco0gWHCGjWSfd+XW+DCMed5hD2dP74xM46AfjP8QoysqmoGM45394AQiH4659h7cv2fvT/Y4zE2StJpUiRp+peIWQvppsOd27bsxl2b4KKkdB00G4eVg6nnA+nXgDNDdByFIpKoWKIrlVhQhAKgLeIaLG1PX+BHY9A01bAA6POgMrT4N3/7pzlFXntwdWdAWGidP+PU/4diP33njjWwgteP0z6BpScBMEGCDbacRdedZuK9IehkdHoMDDnHQiEuy4OBp0nGuPAnBK4V3UYBqW2Vtj+ri0U1tIEz/3ZnsRSzWBJNlslXSXSxO2pumM8JvlJze+HjtbOx6PGw1kftd0t+zbZF4w9GUZPzv3pjqE2OPquDQzKJoCvDJr3wru/hz1/hXAHeIuh5iLoOAT7nyf+JO8QrY+SKOVMj266QJJ2lUXfFIqroWgkNK7r3FY5H8YtgmHje/KpRYY0dZ2kc8dB+MXh+KmsEP+DZLBT4B6eBBM19TEnNDXCa2tgz077uH4fNB6lM4DMQBdL0tR9mgGFkaJkka4CE4YR1XDSbNixDlrqobgcJs+Hk8+xgcqev9sumcrxMOokd4qmgfYW8HihsKi7b6b32o5CywEoLIHh1faYgUbY+Qw0bAVPIYyZDVWz4N0/wLbHIBhZiNBrt9e/bjMZsd0dDimyE2m6OtKtfJp2umm6sRbDYOaPoWSCrQ7a0QC+kVA4hJcTEOklBRqpHAvD2e9CIPYHKuGEEbk6/VAF3KFFjXJWRwesWw3rXoRjDe5JLpKtitTXSLKcfapAI9lg0aSVS3sz6DRN3Qafz2YKYlP7FTVQMxN2vALNblfNqEkw7WJ73M0roHEPFBbD+Hkw8QNweDO8+wwcO2C7cCacCyfOgV2rYesKaDkEvlKYcB6MnQXvPAh713Qet7QWRp8O2//UOQjWwQYQhX4IJ7Qx3WdKl53o9Wvc16XManiheCyMmmunv4aOgacIRv8j1FwJRWNSvE5EekKBRipPNsGSvSQ/oSTMi3+sDiYrm5HzjLHdK14vHNwDf3kI9u2MPJl8FgvEn9h6HGikCFQyHZTEZkpMzOfxetwqlZHt7oDWAq9bDTN2Orfjvo8T/x7R9iceNNVJvi/ZiTSfrSddJJ5ICjJEdNGy4hqYeScUVdm/A+F28Phyv5tKZJDQYNBkjIEfHol5TGc3sYP9TzSbUaYgI184DhS6NTBG18CnvwyH98HRI3aGSNNhePZ/7awRj8f9O5BwYouUn+7rOSpxsKp9U/e5ZPv35r1j2hobIDhhO1XYid1u4rfHCbpNSmhr4ncRuz3VgMseDcbthTBJSs9jD1IxByb/qy0z3rzNjgU54TwYda7t4gH7d8Crf88ig0F+BxqvtMG7HfYHy3GDCoM9CcT+toYd+OLI7LRRBsbIMfYGQB1MmglbXoOjh23wYYLw0p/cLhbHvQXj36MnK9LG6mlAEfn7mGo2THwjUg9eTfr+pvPj9HR7ynam2J5q/5i36/q8G8glDVAcMB4YNQ+OvgbBJrvZWwwn/hPUfdZWAR3+rykOKiKDSX4HGo8f6wwwoDOFamJ+2QxwWhGcrKufIaXQB1PnxG+beia89Soc2WfHIgwvg7VP2m6YxPE8sVKdTHt6lZ80oEjxnqm2DcR26H1Gw3hSZ0jwgqcATLt9seMhuqLqyf8VCztqAAAQr0lEQVQM4z5iuz+ObbcHKBlvp8yKSE7J30Cj3cCfm92TgKcz7QvxJw2Ab1QNePNkEBpWCrMuiN92ynzY9Ars22ZPhKPHwaYX4MgeOmeShLpmOsKe5OMMkgYqSeqCZI3TOXA2sZ2pPlN32Ymwx/7SmNh/gGHwjYDZy2ymYv9z0N4AxaNhzPlQ6Pb/enxQdnI/fC4RyZb8DTSeaIZDbr+04/7YRRdMc/cxji3MNVXZDEmhaBic+gF7i5h5Prz3Nmx/HUIdMLIGMPC3R+y4j8iVOYnTLFOckNN1yfRHBiVl90Sq90kT+KTsCvHaqbemnfiVU0Mw4TKY+AlbtKthEzgFMGo2jDmncxzFhMuTH09Ecl7+Bhp/aEpIdzv2BzTx9/PqCvBqVLr0guOB2mn2FmvqfNi+AY7VQ3EpjJ8Jbz4Lbz4DgWa7T2EpFPnh2CGi9THw2MGaiYMfk57wndTbk2YVnNQDW2Or4/boc3tt3DSiDhrfjT9u2SQ446sQbIbdz9rsRNEJUHMhDK+xu9Z9oufHEpG8kZ/TW42B03dCY5iUxZQMUAisq4NhWqdCMigUhIb99n75aBuo7FoP76yG5sNQXAGT5kHTXnjraehocV/oQNUkOLodgm6mBMcOXPX5IdSaZHqrF0xHTBDjKiy09S8i+0f+LB0NHUftMR2v+5wDExZA6VjY9oSt+IkDVafB5I/CqBl226ENdv+Kk6Fi8sB8lyKSNZreGmtFKzRE6hJEprDG/OhG7p7sV5AhmectgMqEQnDjZ9lbohkXw8GttoR3RS0Mq7DVQre9BIe32u6J6plQfSocfAs2/wUad9uKnhPmwfi5sPd12PoXW7DLXwZ159riXA3bYduz0Lwf/OUw/lwYO9sGC3tftcFDYQlUnwVFlbY9Ey+BkNsd4olZ/6dkrL2JiHQjPzMaV+yHl1uTpJcTCnTdOhKuGOCl6kVERHJQX8/fvb6cX7VqFZdccgnV1dU4jsMjjzzS27fIvHXttjZGpG5GlFsIwDhQ7MBHhmenfSIiIkNErwON5uZmTj31VO66665MtOf47Q1CmzsiLuzpGmxEHs8ohiJ1m4iIiGRSr8doLFy4kIULF2aiLf3jZ8fsn9GZJt74QXG42xcUD3jTREREhpqMDwYNBAIEAoHo48bGxswe8A/Nttskrqxzwry+AuBj6jYRERHJtIz3HSxbtozy8vLorba2NrMHbHCji0iZ8WhxrpjbKX4oV7eJiIhIpmX8bHvjjTfS0NAQve3atStzB1vXbgsKGUgebDi222SaL3NtEBERkaiMd534/X78/gEq8b28OaFQUUywEREGPlUyMO0REREZ4vKr/2BVAEIJWYxYBjjBCzOV0RARERkIvc5oHDt2jC1btkQfb9u2jQ0bNlBZWcm4ceP6tXG91hozrTWyNHXseifGgXH5WQxVRERkMOr1Wfdvf/sbH/hA50qWS5cuBeCaa67hl7/8Zb81rNde74A29366aa1ziwa8aSIiIkNVrwON888/nwGuWt4zv2wBT8JCUsnWzP70sAFrkoiIyFCXP2M03gja8RnhJGM0ItNaiz1Q403yYhEREcmE/Ak0Gk3ntNbYYCN2amtZ/nxcERGRXJAfIyPrw7AzHLMhybRWB7hE4zNEREQGUn5c4j/Yg2mtBvik1jcREREZSPkRaOwIgded1hoRW3IcIOSBoiSDQ0VERCRj8qPrpA0IQmcNjYS0hnHsc+UKNERERAZSfgQaG0IxD5KMzwCYXwAj8yOBIyIikityP9DYFYK1YTvYM3KLFUluvF9lx0VERAZa7gcau91IwniwK6bFiAQdjgeKlM0QEREZaLkfaFRG7sSUHY+M0Qg7nc+N0vgMERGRgZb7gcYm09k94rj/SRyjUQB8uHBg2yUiIiJ5ML31f9rtYmmQvIYGQJUHynP/o4qIiOSa3D/77gjbLpLYLIaJ+TPsQHs2GiYiIiK533USLfbpJKxtErO9KvfjKRERkVyU+4HG4djxGCkGfF6p8RkiIiLZkNuX+htDsMPEZzJiRbZP1NLwIiIi2ZDbgcY2Q7TseERi0BH2wP4BbpeIiIgAud51UhFTJyPsBRJraDgJ+4mIiMhAyu1AYxTd19DwAxeq60RERCQbcrvr5NchW0MjXcKi3IFhymiIiIhkQ25nNDaGO8uMJy4NDza7cXBgmyQiIiKdcjvQGBa546SoCurE1NkQERGRgZbbgcao2BVbU3SPXKzxGSIiItmS24HGS4kLqsWIbK/J7WEoIiIiuSx3z8IdBt4geQ2NaDeKB7YNeMtERETElbsZDSfmTiTYiB0QahzwOqCeExERkazJ3YxGgQPjcbMXbnEu4+m84UAI+Ifc/YgiIiK5LnfPwu0GDqWpoRHpQjlTNTRERESyJXcDjbUGmpzOOhqxy8PHLhG/Kum8VxERERkAuRtotEfuJAs23FLkjhOzn4iIiAy03B0MOt2xYVIYkq5xgvvcGeo6ERERyZbczWhEKn6m6hkx2BknZw5Mc0RERKSr3A00/gx0uM2PG5cRc7/dAy8royEiIpItudt1cgSiNTQcY2+JYzRw3P1EREQkG/qU0fjJT35CXV0dRUVFzJo1i+eff76/29W9usgdt35G2GuDjrC3s44GwEkD3zQRERGxeh1oPPDAAyxZsoSbb76Z9evXc84557Bw4UJ27tyZifalNh/b+rgxGgndJMOBU9R1IiIiki29DjTuvPNOrr32Wr7whS8wdepUfvjDH1JbW8vdd9+difal9pQDwYRprRGRMRuNjtY6ERERyaJeBRrt7e2sXbuWBQsWxG1fsGABL774YtLXBAIBGhsb4279YhvgSTGtFTrHaCjQEBERyZpeBRqHDh0iFAoxevTouO2jR49m3759SV+zbNkyysvLo7fa2tq+tzZWJTE1NDy2aFfkFjtGo7J/DiciIiK916fBoI4Tn0UwxnTZFnHjjTfS0NAQve3atasvh+zqn4CiuFbF3Nw/JgOn9s/hREREpPd6Nb111KhReL3eLtmLAwcOdMlyRPj9fvx+f99bmEoFcANwS4rnDXA7qRddExERkYzrVUbD5/Mxa9YsVqxYEbd9xYoVzJs3r18b1iPfAL4J+LABRSRsKgN+BXx04JskIiIinXpdsGvp0qVcffXVzJ49m7lz57J8+XJ27tzJokWLMtG+9BxsRuPLwEPAYWAccBmdJcpFREQka3odaHzyk5/k8OHDfPvb32bv3r2ccsopPPHEE4wfPz4T7euZSuAL2Tu8iIiIJOcYY1ItS5YRDQ0NVFRUsGvXLsrKygby0CIiItJHjY2N1NbWcvToUcrLy3v8ugFf66SpqQmg/6a5ioiIyIBpamrqVaAx4BmNcDjMnj17KC0tTTklti8ikZYyJZmj7zjz9B1nnr7jzNN3nHnZ+I6NMTQ1NVFdXY3H0/O5JAOe0fB4PNTU1GTs/cvKyvQXO8P0HWeevuPM03ecefqOM2+gv+PeZDIi+lSwS0RERKQnFGiIiIhIxnhvueWWW7LdiP7i9Xo5//zzKSgY8B6hIUPfcebpO848fceZp+8483LlOx7wwaAiIiIydKjrRERERDJGgYaIiIhkjAINERERyRgFGiIiIpIxCjREREQkY/Im0PjJT35CXV0dRUVFzJo1i+effz7bTcoby5YtY86cOZSWllJVVcVll13Gpk2bst2svLZs2TIcx2HJkiXZbkpe2b17N1dddRUjR45k2LBhnHbaaaxduzbbzcobwWCQr3/969TV1VFcXMxJJ53Et7/9bcLhcLablrNWrVrFJZdcQnV1NY7j8Mgjj8Q9b4zhlltuobq6muLiYs4//3w2btyYpdYmlxeBxgMPPMCSJUu4+eabWb9+Peeccw4LFy5k586d2W5aXli5ciWLFy/m5ZdfZsWKFQSDQRYsWEBzc3O2m5aX1qxZw/Lly5k5c2a2m5JX6uvrOfvssyksLOTJJ5/kzTff5Pvf/z4VFRXZblre+O53v8s999zDXXfdxVtvvcUdd9zB9773PX70ox9lu2k5q7m5mVNPPZW77ror6fN33HEHd955J3fddRdr1qxhzJgxXHTRRdEFTAcFkwfOPPNMs2jRorhtU6ZMMTfccEOWWpTfDhw4YACzcuXKbDcl7zQ1NZnJkyebFStWmPPOO89cf/312W5S3vja175m5s+fn+1m5LWLL77YfP7zn4/b9tGPftRcddVVWWpRfgHMww8/HH0cDofNmDFjzO233x7d1tbWZsrLy80999yTjSYmlfMZjfb2dtauXcuCBQviti9YsIAXX3wxS63Kbw0NDQBUVlZmuSX5Z/HixVx88cVceOGF2W5K3nnssceYPXs2n/jEJ6iqquL000/nZz/7WbablVfmz5/PM888wzvvvAPAa6+9xurVq/nQhz6U5Zblp23btrFv376485/f7+e8884bVOe/wV23tAcOHTpEKBRi9OjRcdtHjx7Nvn37stSq/GWMYenSpcyfP59TTjkl283JK/fffz/r1q1jzZo12W5KXtq6dSt33303S5cu5aabbuLVV1/ly1/+Mn6/n8985jPZbl5e+NrXvkZDQwNTpkzB6/USCoW49dZbueKKK7LdtLwUOcclO//t2LEjG01KKucDjQjHceIeG2O6bJPj96UvfYnXX3+d1atXZ7speWXXrl1cf/31PP300xQVFWW7OXkpHA4ze/ZsbrvtNgBOP/10Nm7cyN13361Ao5888MAD/OY3v+G+++5j+vTpbNiwgSVLllBdXc0111yT7eblrcF+/sv5QGPUqFF4vd4u2YsDBw50ifLk+Fx33XU89thjrFq1ipqammw3J6+sXbuWAwcOMGvWrOi2UCjEqlWruOuuuwgEAni93iy2MPeNHTuWadOmxW2bOnUqDz74YJZalH+++tWvcsMNN/CpT30KgBkzZrBjxw6WLVumQCMDxowZA9jMxtixY6PbB9v5L+fHaPh8PmbNmsWKFSvitq9YsYJ58+ZlqVX5xRjDl770JR566CGeffZZ6urqst2kvHPBBRfwxhtvsGHDhuht9uzZfPrTn2bDhg0KMvrB2Wef3WVa9jvvvMP48eOz1KL809LSgscTf1rxer2a3pohdXV1jBkzJu78197ezsqVKwfV+S/nMxoAS5cu5eqrr2b27NnMnTuX5cuXs3PnThYtWpTtpuWFxYsXc9999/Hoo49SWloazR6Vl5dTXFyc5dblh9LS0i5jXkpKShg5cqTGwvSTr3zlK8ybN4/bbruNyy+/nFdffZXly5ezfPnybDctb1xyySXceuutjBs3junTp7N+/XruvPNOPv/5z2e7aTnr2LFjbNmyJfp427ZtbNiwgcrKSsaNG8eSJUu47bbbmDx5MpMnT+a2225j2LBhXHnllVlsdYLsTnrpPz/+8Y/N+PHjjc/nM2eccYamXvYjIOnt3nvvzXbT8pqmt/a/P/7xj+aUU04xfr/fTJkyxSxfvjzbTcorjY2N5vrrrzfjxo0zRUVF5qSTTjI333yzCQQC2W5azvrrX/+a9Pf3mmuuMcbYKa7f/OY3zZgxY4zf7zfnnnuueeONN7Lb6ASOMcZkKcYRERGRPJfzYzRERERk8FKgISIiIhmjQENEREQyRoGGiIiIZIwCDREREckYBRoiIiKSMQo0REREJGMUaIiIiEjGKNAQERGRjFGgISIiIhmjQENEREQy5v8D+F8yBL+QyVQAAAAASUVORK5CYII=", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create a goal trajectory.\n", "num_dims = 2\n", "\n", "G = [ (sin.(2*t/pi) + t/pi) ((t/pi).^2) ]\n", "\n", "scatter(G[:,2],G[:,1],c=t,cmap=\"spring\");\n", "plt[:gca]()[:set_aspect](\"equal\");" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create a candidate position trajectory, useful as a debugging tool.\n", "Q = [ (sin.(2*t/pi) + 2*t/pi) (t) ]\n", "\n", "scatter(G[:,2],G[:,1],c=t,cmap=\"spring\");\n", "scatter(Q[:,2],Q[:,1],c=t,cmap=\"summer\");\n", "plt[:gca]()[:set_aspect](\"equal\");" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Create a candidate thrust trajectory, again as a debugging tool.\n", "# Note that our candidate position and thrust trajectories don't\n", "# match each other (i.e., executing this sequence of thrusts\n", "# would not actually produce this sequence of positions). But\n", "# this doesn't matter for now. We can still use this candidate\n", "# trajectory to verify the correctness of our algebraic\n", "# manipulations that we will perform on the objective.\n", "\n", "U = ones(size(Q));" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "86.53018113731959\n" ] } ], "source": [ "# Evaluate our objective, expressed in the most straightforward way possible.\n", "alpha = 1.0\n", "\n", "E = 0.0\n", "for i = 1:num_samples\n", " g_i = G[i,:]\n", " q_i = Q[i,:]\n", " u_i = U[i,:]\n", " r_i = ((q_i - g_i)'*(q_i - g_i) + alpha*u_i'*u_i)*dt\n", " E = E + r_i\n", "end\n", "println(E)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "86.53018113731959\n" ] } ], "source": [ "# As a fun example of the kind of debugging we can do, we can verify\n", "# that our objective can also be written as follows,\n", "#\n", "# trace( (Q-G)(Q-G)' )dt + trace( UU' )dt\n", "#\n", "# Working with this form is not neccesary to complete the homework, it\n", "# is just a fun example of the kind of debugging we can do with our\n", "# candidate trajectory.\n", "\n", "println(trace((Q - G)*(Q - G)')*dt + alpha*trace(U*U')*dt)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.0, 0.0, 0.0, 0.0, 1.0, 1.0]\n", "[0.0, 0.0, 0.0, 0.0, 1.0, 1.0]\n" ] } ], "source": [ "# Create a candidate velocity trajectory. Again, this velocity\n", "# trajectory won't match our position and thrust trajectory.\n", "# But again, this doesn't matter for the purposes of debugging\n", "# our objective function.\n", "Q_dot = zeros(size(Q))\n", "\n", "# Create a single stacked vector of all the variables from our\n", "# candidate trajectory.\n", "X = [ Q Q_dot U ]\n", "x = X'[:]\n", "\n", "println(X[1,:])\n", "println(x[1:6])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "58842.90711475393\n" ] } ], "source": [ "# Choosing an arbitrary incorrect A and b.\n", "num_rows = 10\n", "A_wrong = randn(num_rows,size(x)[1])\n", "b_wrong = ones(num_rows)\n", "\n", "# We can verify that this is the wrong choice of A and b,\n", "# because we don't get the same objective value as we did\n", "# previously.\n", "println(norm(A_wrong*x - b_wrong)^2)" ] } ], "metadata": { "kernelspec": { "display_name": "Julia 0.6.2", "language": "julia", "name": "julia-0.6" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "0.6.2" } }, "nbformat": 4, "nbformat_minor": 2 }