Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
compmech-project02/02_Analyze-data_project.ipynb
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
executable file
1304 lines (1304 sloc)
102 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Computational Mechanics Project #02 - Create specifications for a projectile robot\n", | |
"\n", | |
"On the first day of class, we threw $2\"\\times~2\"$ dampened paper (spitballs) at a target on the whiteboard. Now, we are going to analyze the accuracy of the class with some cool Python tools and design a robot that has the same accuracy and precision as the class, but we will have the robot move farther away from the target and use a simpler projectile i.e. a tennis ball so we don't need to worry about knuckle-ball physics. \n", | |
"\n", | |
"The goal of this project is to determine the precision of necessary components for a robot that can reproduce the class throwing distibution. We have generated pseudo random numbers using `numpy.random`, but the class target practice is an example of truly random distributions. If we repeated the exercise, there is a vanishingly small probability that we would hit the same points on the target, and there are no deterministic models that could take into account all of the factors that affected each hit on the board. \n", | |
"\n", | |
"<img src=\"../images/robot_design.png\" style=\"height: 250px;\"/>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"'''Need to either assume an angle or assume an initial velocity(maybe say it it is the average of the two endpoints" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 36, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"import pandas as pd" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 37, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"class_data=pd.read_csv('../data/target_data.csv')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"pandas.core.frame.DataFrame" | |
] | |
}, | |
"execution_count": 38, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"type(class_data)\\\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 39, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"54" | |
] | |
}, | |
"execution_count": 39, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"len(class_data)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 46, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>throw #</th>\n", | |
" <th>x position (m)</th>\n", | |
" <th>z position (m)</th>\n", | |
" <th>picture x position (pixel)</th>\n", | |
" <th>picture z position (pixel)</th>\n", | |
" <th>target x position (pixel)</th>\n", | |
" <th>target z position (pixel)</th>\n", | |
" <th>image #</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>0</td>\n", | |
" <td>-0.466403</td>\n", | |
" <td>-0.304</td>\n", | |
" <td>1260.855114</td>\n", | |
" <td>990.599432</td>\n", | |
" <td>2055.169256</td>\n", | |
" <td>1508.331047</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" throw # x position (m) z position (m) picture x position (pixel) \\\n", | |
"0 0 -0.466403 -0.304 1260.855114 \n", | |
"\n", | |
" picture z position (pixel) target x position (pixel) \\\n", | |
"0 990.599432 2055.169256 \n", | |
"\n", | |
" target z position (pixel) image # \n", | |
"0 1508.331047 1 " | |
] | |
}, | |
"execution_count": 46, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"class_data[0:1]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 22, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"0 0\n", | |
"1 1\n", | |
"2 2\n", | |
"3 3\n", | |
"4 4\n", | |
"5 5\n", | |
"6 6\n", | |
"7 7\n", | |
"8 8\n", | |
"9 9\n", | |
"10 10\n", | |
"11 11\n", | |
"12 12\n", | |
"13 13\n", | |
"14 14\n", | |
"15 15\n", | |
"16 16\n", | |
"17 17\n", | |
"18 18\n", | |
"19 19\n", | |
"20 20\n", | |
"21 21\n", | |
"22 22\n", | |
"23 23\n", | |
"24 24\n", | |
"25 25\n", | |
"26 26\n", | |
"27 27\n", | |
"28 28\n", | |
"29 29\n", | |
"30 30\n", | |
"31 31\n", | |
"32 32\n", | |
"33 33\n", | |
"34 34\n", | |
"35 35\n", | |
"36 36\n", | |
"37 37\n", | |
"38 38\n", | |
"39 39\n", | |
"40 40\n", | |
"41 41\n", | |
"42 42\n", | |
"43 43\n", | |
"44 44\n", | |
"45 45\n", | |
"46 46\n", | |
"47 47\n", | |
"48 48\n", | |
"49 49\n", | |
"50 50\n", | |
"51 51\n", | |
"52 52\n", | |
"53 53\n", | |
"Name: throw #, dtype: int64" | |
] | |
}, | |
"execution_count": 22, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"class_data['throw #']" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 77, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"ename": "KeyError", | |
"evalue": "'x position (m)'", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m/opt/conda/lib/python3.7/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2896\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2897\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2898\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", | |
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", | |
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", | |
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", | |
"\u001b[0;31mKeyError\u001b[0m: 'x position (m)'", | |
"\nDuring handling of the above exception, another exception occurred:\n", | |
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-77-ee4b52fa2181>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mclass_data\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'x position (m)'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", | |
"\u001b[0;32m/opt/conda/lib/python3.7/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2993\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2994\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2995\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2996\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2997\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m/opt/conda/lib/python3.7/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2897\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2898\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2899\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2900\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2901\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mindexer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mindexer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", | |
"\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", | |
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", | |
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", | |
"\u001b[0;31mKeyError\u001b[0m: 'x position (m)'" | |
] | |
} | |
], | |
"source": [ | |
"class_data['x position (m)']" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 50, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"0 -0.466403\n", | |
"1 -0.206978\n", | |
"2 -0.091677\n", | |
"3 0.153336\n", | |
"4 0.364720\n", | |
"5 -0.120502\n", | |
"6 -0.091677\n", | |
"7 -0.096482\n", | |
"8 -0.192565\n", | |
"9 -0.082069\n", | |
"10 0.162944\n", | |
"11 0.249419\n", | |
"12 0.441586\n", | |
"13 0.038035\n", | |
"14 0.076469\n", | |
"15 0.134119\n", | |
"16 0.134119\n", | |
"17 0.162944\n", | |
"18 0.278244\n", | |
"19 0.302265\n", | |
"20 0.210986\n", | |
"21 0.331090\n", | |
"22 0.114902\n", | |
"23 0.134119\n", | |
"24 -0.154132\n", | |
"25 -0.173348\n", | |
"26 -0.307865\n", | |
"27 -0.312670\n", | |
"28 -0.490424\n", | |
"29 -0.711416\n", | |
"30 -0.291312\n", | |
"31 -0.126406\n", | |
"32 -0.197080\n", | |
"33 -0.232417\n", | |
"34 -0.118553\n", | |
"35 -0.071437\n", | |
"36 -0.043952\n", | |
"37 0.011017\n", | |
"38 0.038501\n", | |
"39 0.093470\n", | |
"40 0.168071\n", | |
"41 0.226966\n", | |
"42 0.603896\n", | |
"43 0.305493\n", | |
"44 0.195556\n", | |
"45 0.117028\n", | |
"46 0.018870\n", | |
"47 0.164145\n", | |
"48 0.289788\n", | |
"49 0.525369\n", | |
"50 -0.126406\n", | |
"51 -0.244196\n", | |
"52 -0.212785\n", | |
"53 -0.232417\n", | |
"Name: x position (m), dtype: float64" | |
] | |
}, | |
"execution_count": 50, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"class_data[' x position (m)']\n", | |
"#NOTE the space above" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#x_loc=class_data['x position (m)]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 51, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Variable Type Data/Info\n", | |
"-----------------------------------\n", | |
"A ndarray 10x10: 100 elems, type `float64`, 800 bytes\n", | |
"V ndarray 10x10: 100 elems, type `float64`, 800 bytes\n", | |
"Z ndarray 10x10: 100 elems, type `float64`, 800 bytes\n", | |
"class_data DataFrame throw # x position <...> 1520.031972 2 \n", | |
"d int 3\n", | |
"g float 9.81\n", | |
"np module <module 'numpy' from '/op<...>kages/numpy/__init__.py'>\n", | |
"pd module <module 'pandas' from '/o<...>ages/pandas/__init__.py'>\n", | |
"plt module <module 'matplotlib.pyplo<...>es/matplotlib/pyplot.py'>\n", | |
"rcParams RcParams _internal.classic_mode: F<...>: 0.6\\nytick.right: False\n" | |
] | |
} | |
], | |
"source": [ | |
"whos" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now, we ask ourselves some questions:\n", | |
"\n", | |
"1. How do we quantify the class accuracy and precision?\n", | |
"\n", | |
"2. If we design a robot, what design components can we control?\n", | |
"\n", | |
"3. How can we relate the controlled components to the class accuracy, and specify the component precision?\n", | |
"\n", | |
"The first question, we have some experience from our work in [02_Seeing_Stats](../notebooks/02_Seeing_Stats.ipynb). We can define the mean, standard deviation, measure the first, second, and third quartiles, etc. \n", | |
"\n", | |
"The second question is a physical question. We cannot control the placement of the robot or the target those are chosen for us. We cannot control temperature, mechanical vibrations, etc. We *can* control the desired initial velocity. The initial velocity will have some speed and direction, and both will be subject to random noise. Once the speed and direction are set, the location on the target is determined by kinematic equations for an object in freefall, as such\n", | |
"\n", | |
"$x_{impact} = \\frac{v_x}{v_y}d + x(0)~~~~~~~~~~~~~~~~~~~~(1.a)$\n", | |
"\n", | |
"$z_{impact} = d\\left(\\frac{v_z(0)}{v_y}-\\frac{g}{2v_y^2}d\\right)+ z(0)~~~~~(1.b)$.\n", | |
"\n", | |
"Where the location of impact is at a $y$-distance of $d$ at a point on the target with coordinates $(x_{impact},~z_{impact})$, and the initial velocity is $\\bar{v}=v_x\\hat{i}+v_y\\hat{j}+v_z(0)\\hat{k}$, the object is released at an initial location $\\bar{r}(0)=x(0)\\hat{i}+0\\hat{j}+z(0)\\hat{k}$, and the only acceleration is due to gravity, $\\bar{a}=-g\\hat{k}$. Equation (1) becomes much easier to evaluate if we assume that $v_x=0$, resulting in an evalution of the accuracy of the height of the impact, $z_{impact}$, as such\n", | |
"\n", | |
"$x_{impact} = x(0)~~~~~~~~~~~~~~~~~~~~(2.a)$\n", | |
"\n", | |
"$z_{impact} = \\frac{d}{\\cos{\\theta}}\\left(\\sin{\\theta}-\\frac{g}{2v_0^2\\cos{\\theta}}d\\right)+ z(0)~~~~~(2.b)$.\n", | |
"\n", | |
"Where $\\theta$ is the angle of the initial velocity and $v_0$ is the initial speed. Equation (2) restricts the analysis to height accuracy. You can incorporate the 2D impact analysis if you finish the 1D analysis. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 45, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"d=3\n", | |
"g=9.81\n", | |
"\n", | |
"A,V =np.meshgrid(np.linspace(0,np.pi/4,10),np.linspace(4,12,10))\n", | |
"Z = d/np.cos(A)*(np.sin(A)-g/2/V**2/np.cos(A)*d)+0.3\n", | |
"plt.contourf(V,A*180/np.pi,Z)\n", | |
"plt.colorbar();" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"A,V =np.meshgrid(np.linspace(0,np.pi/4,10),np.linspace(4,12,10))\n", | |
"Z = d/np.cos(A)*(np.sin(A)-g/2/V**2/np.cos(A)*d)+0.3" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"'''what is meant by _finish the analysis?'''" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"'''1. do wal'''" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The third question, is how we can relate equation (2) to the measured points of impact? For this, we can use Monte Carlo methods *(There are other methods, but Monte Carlo is one of the most straight-forward)*. Our Monte Carlo approach is as such, if we have a desired initial speed, $v_0$, and desired angle, $\\theta$, we can propagate the uncertainty of our actual speeds and angles into the $z_{impact}$ locations. Then, we can choose distributions in speed and angles that match the distributions in $z_{impact}$ locations. Here are the steps:\n", | |
"\n", | |
"1. Generate random $\\theta_i$ and $v_{0~i}$ variables\n", | |
"\n", | |
"2. Plug into eqn 2 for random $z_{impact~i}$ locations\n", | |
"\n", | |
"3. Compare to our measured $z_{impact}$ location statistics\n", | |
"\n", | |
"4. Repeat 1-3 until the predicted uncertainty matches the desired uncertainty, we can use a number of comparison metrics:\n", | |
" \n", | |
" - standard deviation\n", | |
" \n", | |
" - first, second, and third quartiles\n", | |
" \n", | |
" - visually, with box plots and histograms" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Project Deliverables\n", | |
"\n", | |
"1. Statistical analysis of class accuracy and precision (x- and z-locations) data is in the csv file [../data/target_data.csv](../data/target_data.csv) _Note: if you want to see how I turned the images into data check out the jupyter notebook [process_target_practice](./process_target_practice.ipynb)\n", | |
"\n", | |
"2. A Monte Carlo model to generate impact heights based upon uncertainty in $\\theta_0$ and $v_0$. \n", | |
"\n", | |
"3. The precision required to recreate the class accuracy and precision with a robot. \n", | |
"**You must show some validation of your work**\n", | |
"\n", | |
"4. [BONUS] Repeat 2-3 taking into account the variation in $x_{impact}$ due to misalignment. \n", | |
"\n", | |
"Given constants and constraints:\n", | |
"\n", | |
"- $d=$3 m, distance to target\n", | |
"\n", | |
"- $g=$9.81 m/s$^2$, acceleration due to gravity\n", | |
"\n", | |
"- $z(0)=$0.3 m, the initial height is 0.3 m above the bull's eye\n", | |
"\n", | |
"- 4 m/s$<v_0<$12 m/s, the initial velocity is always higher than 9 mph and less than 27 mph" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 47, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>throw #</th>\n", | |
" <th>x position (m)</th>\n", | |
" <th>z position (m)</th>\n", | |
" <th>picture x position (pixel)</th>\n", | |
" <th>picture z position (pixel)</th>\n", | |
" <th>target x position (pixel)</th>\n", | |
" <th>target z position (pixel)</th>\n", | |
" <th>image #</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>0</td>\n", | |
" <td>-0.466403</td>\n", | |
" <td>-0.304</td>\n", | |
" <td>1260.855114</td>\n", | |
" <td>990.599432</td>\n", | |
" <td>2055.169256</td>\n", | |
" <td>1508.331047</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" throw # x position (m) z position (m) picture x position (pixel) \\\n", | |
"0 0 -0.466403 -0.304 1260.855114 \n", | |
"\n", | |
" picture z position (pixel) target x position (pixel) \\\n", | |
"0 990.599432 2055.169256 \n", | |
"\n", | |
" target z position (pixel) image # \n", | |
"0 1508.331047 1 " | |
] | |
}, | |
"execution_count": 47, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"class_data[0:1]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 44, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"import numpy as np\n", | |
"import pandas as pd\n", | |
"\n", | |
"#Import rcParams to set font styles\n", | |
"from matplotlib import rcParams\n", | |
"\n", | |
"#Set font style and size \n", | |
"rcParams['font.family'] = 'sans'\n", | |
"rcParams['font.size'] = 16\n", | |
"rcParams['lines.linewidth'] = 3" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Analysis of data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 53, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"x=class_data[' x position (m)']\n", | |
"z=class_data[' z position (m)']" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 67, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0.01207963411779779, 0.25716367278418045)" | |
] | |
}, | |
"execution_count": 67, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"mean_x=np.mean(x)\n", | |
"std_x=np.std(x)\n", | |
"mean_x,std_x" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 64, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(-0.047397370492807414, 0.2548611138551949)" | |
] | |
}, | |
"execution_count": 64, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"mean_z=np.mean(z)\n", | |
"std_z=np.std(z)\n", | |
"mean_z,std_z" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"mean_x=np.mean(x)\n", | |
"std_x=np.std(x,ddof=1)\n", | |
"mean_x,std_x" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"mean_z=np.mean(z)\n", | |
"std_z=np.std(z,ddof=1)\n", | |
"mean_z,std_z" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 74, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The first quartile for the x positon is -0.16854422326722185\n", | |
"The second quartile for the x position is 0.028452517775170515\n", | |
"The third quartile for the x position is 0.1670894539891312\n" | |
] | |
} | |
], | |
"source": [ | |
"quartiles_x = np.percentile(x, q=[25, 50, 75])\n", | |
"\n", | |
"print('The first quartile for the x positon is {}'.format(quartiles_x[0]))\n", | |
"print('The second quartile for the x position is {}'.format(quartiles_x[1]))\n", | |
"print('The third quartile for the x position is {}'.format(quartiles_x[2]))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 73, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The first quartile for the z position is -0.21785495681409592\n", | |
"The second quartile for the z position is -0.070851135369002\n", | |
"The third quartile for the z position is 0.13222390283592378\n" | |
] | |
} | |
], | |
"source": [ | |
"quartiles_z = np.percentile(z, q=[25, 50, 75])\n", | |
"\n", | |
"print('The first quartile for the z position is {}'.format(quartiles_z[0]))\n", | |
"print('The second quartile for the z position is {}'.format(quartiles_z[1]))\n", | |
"print('The third quartile for the z position is {}'.format(quartiles_z[2]))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 75, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZUAAAD9CAYAAAB0i+q4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAYEUlEQVR4nO3dfbBdVZ3m8e9DeNMeaS8KjWMTwksXlfBiv1wtbBkFCsQpaNBhRGhQe2SM090i2sUMMulRGmSE1gGmHWeGWI60xIkKpQ0oDSKkqI4K7Q0vTgJGoAmirRJMEAISXvzNH/tcPJyce3PuzT73BvL9VJ26OWuvtfbaWvc+rL32S6oKSZLasN1sD0CS9OJhqEiSWmOoSJJaY6hIklpjqEiSWrP9bA9gNr3yla+sefPmzfYwJOkFZcWKFQ9X1W79tm3ToTJv3jzGxsZmexiS9IKS5IGJtnn6S5LUGkNFktQaQ0WS1BpDRZLUGkNFktQaQ0WS1BpDRZLUGkNFktSabfrmR2mmJJmR/fh+JM02Q0WaAVP9Y5/EgNALkqe/JEmtMVQkSa0xVCRJrTFUJEmtMVQkSa0xVCRJrTFUJEmtMVQkSa0xVCRJrRlqqCTZM8mVSX6R5NEkX0kyd8C2NcHnd3vqbZfk7CRrkjyZ5M4kJwzniCRJkxnaY1qSvBS4CdgIvBso4GPAsiQHV9XjA3RzGXBpT9kPer6fB5wJLAJWACcBVyQ5tqqunf4RSJKmapjP/novsA+wf1XdC5Dke8A9wPuAiwbo48dVdctEG5PsThMoF1TVJzvFy5LsB1wAGCqSNIOGefrrOOCW8UABqKr7gW8Bx7e0j6OBHYElPeVLgIOS7N3SfiRJAxhmqBwArOxTvgpYMGAff5pkY5InktyU5F/12cdG4N6e8lWdn4PuR5LUgmGGyq7A+j7l64CRAdovAf4MOBJYCLwCuCnJYT37eKQ2fUb4uq7tz5NkYZKxJGNr164dYBiSpEEN+30q/V4IMdDbiqrqnV1f/yHJVTQzn48Bh3b1NaV9VNViYDHA6OioL6yQpBYNc6aynj4zBZpZSr8ZzKSq6jHg68Bru4rXASPZ9LV6I13bJUkzZJihsopmzaPXAuCuafbZOzNZBewE7NtnH2zBfiRJ0zDMULkaOCTJPuMFSeYBb+hsm5IkuwDHALd2FV8HPAWc0lP9VGBl52ozSdIMGeaaymeA9wNXJflLmhnGecCDdN3QmGQv4D7g3Ko6t1N2JrA/sAz4Z2AvmvtR9qArQKrqoSQXA2cneQy4DXgHcATtXbYsSRrQ0EKlqh5PcgRwMXA5zamrG4EPVtWGrqoB5vD8WdNq4G2dz28Cj9Lc33JaVf1jz64WARuAM2hCZzVwYlVd0/pBSZImlU2vxt12jI6O1tjY2GwPQ9pEErbl301t3ZKsqKrRftt8SrEkqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1Qw2VJHsmuTLJL5I8muQrSeYO0G40yeIk30/yRJIfJvlCkr371F2TpPp83jqco5IkTWT7YXWc5KXATcBG4N1AAR8DliU5uKoen6T5ScABwN8Aq4BXA/8FGEvyu1X1YE/964FzespWb/FBSJKmZGihArwX2AfYv6ruBUjyPeAe4H3ARZO0vbCq1nYXJPkWcH+n34/01H+4qm5pa+CSpOkZ5umv44BbxgMFoKruB74FHD9Zw95A6ZQ9AKylmbVIkrZCwwyVA4CVfcpXAQum2lmS+cDuwN19Nv9RZ+1lY5JbXE+RpNkxzFDZFVjfp3wdMDKVjpJsD/xvmpnKZ3s2XwOcDhwNnAI8CXw1yakT9LUwyViSsbVrN5kQSZK2wDDXVKBZnO+VafTzP4A/BI6pqucFVVWd/rzOk68CtwAfB5ZsMqCqxcBigNHR0X7jkyRN0zBnKutpZiu9Rug/g+kryceBhcB7quobm6tfVc8CVwC/neRVg+5HkrTlhjlTWUWzrtJrAXDXIB0kWQR8GPhAVV0+hX2Pz4aciUjSDBrmTOVq4JAk+4wXJJkHvKGzbVJJPkBzX8uiqvrUoDvtrL+8HfhhVf10imOWJG2BYYbKZ4A1wFVJjk9yHHAV8CBw6XilJHsleSbJR7rKTgIuAa4DbkpySNdnQVe9k5N8Mcm7khzeabcM+APgrCEemySpj6Gd/qqqx5McAVwMXE5zSupG4INVtaGraoA5PD/g3tIpf0vn0+1m4LDOv++nucz4EzTrN08A3wXeUlXXt3k8kqTNS9W2u+wwOjpaY2Njsz0MaRNJ2JZ/N7V1S7Kiqkb7bfMpxZKk1hgqkqTWGCqSpNYYKpKk1hgqkqTWDPvZX9KLzq677sr69QM/aWjakuk8Jm9qRkZGWLdu3dD3o22HoSJN0fr16180l/vORHBp2+LpL0lSawwVSVJrDBVJUmsMFUlSawwVSVJrDBVJUmsMFUlSawwVSVJrDBVJUmsMFUlSawwVSVJrDBVJUmsMFUlSawwVSVJrDBVJUmsMFUlSawwVSVJrDBVJUmuGGipJ9kxyZZJfJHk0yVeSzB2w7c5JPpHkJ0l+meQ7Sd7Yp952Sc5OsibJk0nuTHJC+0cjSdqcob2jPslLgZuAjcC7gQI+BixLcnBVPb6ZLj4LHAP8R+CfgD8Hrk/y+qq6o6veecCZwCJgBXAScEWSY6vq2jaPSQKoj+4C5/zmbA+jFfXRXWZ7CHqRSVUNp+PkDOAiYP+qurdTtjdwD/CfquqiSdq+BrgDeE9Vfa5Ttj2wClhdVcd1ynYHHgQuqKqPdrW/Editqg6ebIyjo6M1Nja2BUepbVEShvV7M9NeTMeimZNkRVWN9ts2zNNfxwG3jAcKQFXdD3wLOH6Atk8DX+pq+wzwReDoJDt1io8GdgSW9LRfAhzUCTFJ0gwZZqgcAKzsU74KWDBA2/ur6ok+bXcE9uuqtxG4t089BtiPJKlFwwyVXYH1fcrXASNb0HZ8+/jPR2rT+XtvveckWZhkLMnY2rVrNzMMSdJUDPuS4n4nazNAuwzYdtB6vx5Q1eKqGq2q0d12222AoUiSBjXMUFlPn5kCzSyl3yyk27pJ2o5vH/85kqQ3RHrrSZJmwDBDZRXNmkevBcBdA7Tdu3NZcm/bp/j1GsoqYCdg3z71GGA/kqQWDTNUrgYOSbLPeEGSecAbOts213YH4O1dbbcH3gF8o6o2doqvowmZU3ranwqs7FxtJkmaIUO7+RH4DPB+4Kokf0mz9nEezX0ll45XSrIXcB9wblWdC1BVdyT5EnBJkh2A+4E/BfamK0Cq6qEkFwNnJ3kMuI0meI5g85ctS5JaNrRQqarHkxwBXAxcTrN4fiPwwara0FU1wBw2nTX9O+B8mrvwXw7cCbylqm7rqbcI2ACcAewBrAZOrKpr2j0iSdLmDO2O+hcC76jXdLyY7kJ/MR2LZs5s3VEvSdrGGCqSpNYYKpKk1hgqkqTWGCqSpNYYKpKk1hgqkqTWGCqSpNYYKpKk1hgqkqTWGCqSpNYYKpKk1hgqkqTWGCqSpNYYKpKk1hgqkqTWGCqSpNYM8x310otWktkeQitGRkZmewh6kTFUpCmaidfv+ppfvVB5+kuS1BpDRZLUGkNFktQaQ0WS1BpDRZLUmqGFSpLtkpydZE2SJ5PcmeSEAdrtkuQjSb6d5OdJHun8+6196p6TpPp8/m44RyVJmswwLyk+DzgTWASsAE4CrkhybFVdO0m7ucCfAZ/r9PEr4GTgq0neX1Wf7tPmUODZru/rWhi/JGmKhhIqSXanCZQLquqTneJlSfYDLgAmC5X7gX2q6omusuuT7AmcBfQLlVur6pkWhi5J2gLDOv11NLAjsKSnfAlwUJK9J2pYVY/3BMq4MeBftjdESVLbhhUqBwAbgXt7yld1fi6YRp9vBL4/wbYHkzyb5IEkFyZ5yTT6lyRtoWGtqewKPFKbPmdiXdf2gSVZCBwCnNqz6V7gw8DtQAFvBj4E/D5w1BTHLEnaQgOFSpIjgRsGqHpzVR0GhOaP/CZdDT605/Z9GPA3wOVV9YXubVXVe3rthiQ/Ai5JcmRVfbNPfwuBhQBz586d6nAkSZMYdKbybWD+APXG10LWASNJ0jNbGenavllJXgtcDdwEnDbgWJcClwCvBTYJlapaDCwGGB0d9Yl9ktSigUKls3A+0XpGP6uAnYB9ef66yvhayl2b6yDJQcD1wB3ACVX19BT2D/1nSpKkIRrWQv11wFPAKT3lpwIrq+r+yRon+R2a023/BBxbVb+cwr7H93nrFNpIklowlIX6qnooycXA2UkeA24D3gEcARzfXTfJjcBeVbVf5/vuNIGyI/BRYEHPC5Fur6qNnbq3A58HVtPMTI4CTgeuq6plwzg2SdLEhnlH/SJgA3AGsAfNH/4Tq+qannpzesaxANir8++v9el3b2BN59+rgfcDr+r0cx9wLvDXWz58SdJUZVt+u9zo6GiNjY3N9jCkTfjmR23NkqyoqtF+23xKsSSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNUMLlSTbJTk7yZokTya5M8kJA7a9LEn1+VzSp+6hSb6d5JdJfprkoiQvaf+IJEmbs/0Q+z4POBNYBKwATgKuSHJsVV07QPu1wHE9ZT/p/pLkYOAG4HrgWGBv4BPAq4F3bNHoJUlTNpRQSbI7TaBcUFWf7BQvS7IfcAEwSKg8VVW3bKbOXwE/At5eVU939v0U8LdJLqyq26Z3BJKk6RjW6a+jgR2BJT3lS4CDkuy9pTtIsgPwFuDL44HS8WXgKeD4Ld2HJGlqhhUqBwAbgXt7yld1fi4YoI/dkzyc5JkkP0hyVpI5Xdv3BXYGVnY3qqongfsG3Ic0I5JM6TOdNuPtpNk0rDWVXYFHqqp6ytd1bZ/MHTTrMKtoguNtwMeB3wH+fU8f6/u0XzfRPpIsBBYCzJ07dzPDkNqx6a+C9OI0UKgkOZJmQXxzbq6qw4AA/X6LBvpPqarqvcrr2iQbgA921kru6eprSvupqsXAYoDR0VF/0yWpRYPOVL4NzB+g3hOdn+uAkSTpma2MdG2fqqXAB4FR4B4mn/WM8OtTbZKkGTJQqFTVE8D3p9DvKmAnmnWP7nWV8XWOu6bQ17jemcl9NOs2BzyvUrIzsA9wxTT2IUnaAsNaqL+O5gqsU3rKTwVWVtX90+jzj2kC5bsAVfVUZz8nJukOx39LE2hXT2MfkqQtMJSF+qp6KMnFwNlJHgNuo7kZ8Qh6LvVNciOwV1Xt1/m+F3A58EWaWc5ONAv1fwJcWlX3dTU/B/gO8OUknwbm0dz8eGVVrRjGsUmSJjbMO+oXARuAM4A9gNXAiVV1TU+9OT3jeIxmveQs4LdoZid3Ax8A/md3w6q6I8nRwIXA14FfAJ8H/nPbByNJ2rxsy5c6jo6O1tjY2GwPQ5JeUJKsqKrRftt8SrEkqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hookqTWGiiSpNYaKJKk1hoq0FVm6dCkHHnggc+bM4cADD2Tp0qWzPSRpSraf7QFIaixdupRFixbx2c9+lkMPPZTly5dz2mmnAXDyySfP8uikwaSqZnsMs2Z0dLTGxsZmexgSAAceeCCf+tSnOPzww58rW7ZsGaeffjorV66cxZFJz5dkRVWN9t1mqBgq2jrMmTOHJ598kh122OG5sqeffpqdd96ZZ599dhZHJj3fZKEytDWVJNslOTvJmiRPJrkzyQkDtJuXpCb5nNRV95wJ6vzdsI5LGpb58+ezfPny55UtX76c+fPnz9KIpKkb5prKecCZwCJgBXAScEWSY6vq2kna/QR4fZ/yjwGHAt/os+1QoPs/5dZNa8TSLFq0aBGnnXbaJmsq559//mwPTRrYUEIlye40gXJBVX2yU7wsyX7ABcCEoVJVG4Fbevp7KfA64Jqq6hcYt1bVM60MXpol44vxp59+OnfffTfz58/n/PPPd5FeLyjDmqkcDewILOkpXwL8nyR7V9X9U+jv3wAvA/62pfFJW6WTTz7ZENEL2rDWVA4ANgL39pSv6vxcMMX+3g08BFw3wfYHkzyb5IEkFyZ5yRT7lyS1YFgzlV2BR2rTS8vWdW0fSJJXA0cA/73PKa57gQ8DtwMFvBn4EPD7wFET9LcQWAgwd+7cQYchSRrAQKGS5EjghgGq3lxVhwGh+SO/SVeDD+0576SZUW1y6quqek+v3ZDkR8AlSY6sqm/2abMYWAzNJcXTGI8kaQKDzlS+DQxyXeMTnZ/rgJEk6ZmtjHRtH9S7gDuq6s4B6y8FLgFeC2wSKpKk4RkoVKrqCeD7U+h3FbATsC/PX1cZX0u5a5BOkryWJsw+NIV9j3MWIkkzbFhrKtcBTwGnAH/VVX4qsHIKV369G3gG+L9T2PcpnZ+3bq7iihUrHk7ywBT6lmbKK4GHZ3sQ0gT2mmjDUEKlqh5KcjFwdpLHgNuAd9AsuB/fXTfJjcBeVbVfT/kONDdM/n1VPdRvP0luBz4PrKaZmRwFnA5cV1XLBhjnblM9NmkmJBmb6DEY0tZsmHfULwI2AGcAe9D84T+xqq7pqTdngnEcC7yCye9NWQ28H3hVp5/7gHOBv96ikUuSpmWbfqCktLVypqIXKl/SJW2dFs/2AKTpcKYiSWqNMxVJUmsMFUlSawwV6QUiyWVJ1nR9n9d5Ud0+fequSXLZTI5PAtdUpBeMJPsCu1TV7Z3vhwHLgKN6n3OX5PeAR6vqvhkfqLZpw7xPRVKLphIQ48EjzTRPf2mbleQ3knw/yT92nuAwXv7mJL9K8uebab8myZIk701yb5Ink9yW5PA+dU9NcmenzsNJLk/yqp46f5zk9iQbkvwiyf9L8r6u7c+d/uqapUDzdO7qfA7rGttlPf2/Lsk3O/0/nuTGJK/rqXNZkh8l+b0k/5DkiST3JPkPm/9fVDJUtA2rqseBk4HXAOfBc6/C/jzwtar69ADdvAn4C5onSJxE83K6v0+y/3iFzjt8LgfupnmL6Ydp3o56c5J/0alzKM2bUW8G3gq8HfgM8PIJ9nsbMB56HwBe3/nc1q9ykoM7fY8Af0Lz9O9dOmN4TU/1XWiet7eE5rFK3wX+V7+wlDZRVX78bNMfmqdg/wo4kuZhqD8GXjlAuzU0D06d21X2MppXO1ze+T4H+BmwrKftoTTPq/tA5/uZwLrN7O8yYE3X98M6fRw5wdgu6/p+JfAI8PKusl06Y/1Kzz4KOLyrbCeah1sunu3/r/xs/R9nKlLz/p3rgK/RvD30XVU16BOCb6mqH45/qarHgK/TzBoA9gd2B77Q3aiqlgMP0Mx0oJkNjHROpx2bZKIZynS9kWb29UjXGB4Fru4aw7gnquuBrFW1EbgH8FWp2ixDRdu8qiqa01M7AXdW1Y1TaP6zCcpe3fn3+Kuzf9Kn3k/Ht1fVzTSnvPYEvgqs7ax/HDyFsUxm10nGMNJTtr5PvY3Azi2NRS9ihoq2eUn2oJmt3Aa8JskZU2j+WxOU/bjz7/G3nO7Rp94ewM/Hv1TVlVX1Jpo/8m+jefr2dUna+D1dN8kYpvImVmlShoq2aUlC83qFp2jex3MJcOEUZgiHJNmzq7+XAccA3+kUraaZuZzUs98/pHnR0c29HVbVhqr6GnApTbC8YoJ9b+z8fMkA47wZOKYzvu6x/lG/MUjT5X0q2tb9Bc0C/RFVtS7Jh2kWwJcmGa2qX26m/c+AbyQ5h+aP/FnAb9C5mqyqnk3yEeDSJEtorqh6NXA+zTrF5wCSnEszw1kG/DPw2zRXdd1RVWsn2PcPaN6M+p4k6zr7X91Z1+l1Hs07im5MciHNYvxZwEtp3kEktcKZirZZnbvO/yvw8c6aBlX1FM1lxvOAiwbo5mbgv3X6+RLNusO/rqofjFeoqsXAO4GDgKtoXiJ3A/CmqtrQqXZrZ58Xd7Zd2On7mIl2XFU/p3lJ3Ws6db8L/MEEdb9HE5aP0szMLqd5id6bqurOAY5TGoiPaZGmqXMj4vKqOnW2xyJtLZypSJJaY6hIklrj6S9JUmucqUiSWmOoSJJaY6hIklpjqEiSWmOoSJJa8/8BqaO6MuPvvAkAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.boxplot(x, labels=['x position']);" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 76, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.boxplot(z, labels=['z position']);" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Boxplot of z position seems to implies that z is normally distributed" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 86, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def montecarlo_z(max_theta,v0):\n", | |
" max_theta=max_theta*(np.pi/180)\n", | |
" #Max_theta input in rads\n", | |
" A,V =np.meshgrid(np.random.uniform(0,max_theta,10),np.random.uniform(v0[0],v0[1],10))\n", | |
" z = d/np.cos(A)*(np.sin(A)-g/2/V**2/np.cos(A)*d)+0.3\n", | |
" #compute mean and stddev of z\n", | |
" mean_z=np.mean(z)\n", | |
" std_z=np.std(z)\n", | |
" return mean_z,std_z,z \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 87, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(-0.5042219531622328,\n", | |
" 0.8608815830213195,\n", | |
" array([[ 2.13897451e-01, -4.13345647e-01, -4.62691794e-01,\n", | |
" 2.78636394e-01, -4.56381302e-01, 2.75012272e-01,\n", | |
" -4.58396491e-01, -2.92588215e-01, -3.70414773e-01,\n", | |
" 9.97038762e-02],\n", | |
" [ 6.73634344e-01, 1.23948619e-02, -3.76335627e-02,\n", | |
" 7.45083189e-01, -3.12497057e-02, 7.41064575e-01,\n", | |
" -3.32887612e-02, 1.35909065e-01, 5.61255189e-02,\n", | |
" 5.49262118e-01],\n", | |
" [ 7.33657849e-01, 6.79797802e-02, 1.78622769e-02,\n", | |
" 8.05982743e-01, 2.42557127e-02, 8.01912623e-01,\n", | |
" 2.22135410e-02, 1.91853909e-01, 1.11814857e-01,\n", | |
" 6.07956692e-01],\n", | |
" [-3.40691442e-01, -9.26924091e-01, -9.75447193e-01,\n", | |
" -2.84046777e-01, -9.69225205e-01, -2.87195016e-01,\n", | |
" -9.71211602e-01, -8.09492202e-01, -8.84958009e-01,\n", | |
" -4.42606327e-01],\n", | |
" [ 5.09731526e-01, -1.39387756e-01, -1.89172939e-01,\n", | |
" 5.78788195e-01, -1.82815238e-01, 5.74910222e-01,\n", | |
" -1.84845784e-01, -1.68563814e-02, -9.59422330e-02,\n", | |
" 3.88988135e-01],\n", | |
" [-2.10101735e-01, -8.05991164e-01, -8.54708069e-01,\n", | |
" -1.51551101e-01, -8.48465240e-01, -1.54811396e-01,\n", | |
" -8.50458417e-01, -6.87776205e-01, -7.63797901e-01,\n", | |
" -3.14907898e-01],\n", | |
" [-1.37549419e+00, -1.88520579e+00, -1.93219318e+00,\n", | |
" -1.33395257e+00, -1.92613632e+00, -1.33621286e+00,\n", | |
" -1.92806900e+00, -1.77397900e+00, -1.84503990e+00,\n", | |
" -1.45449837e+00],\n", | |
" [-1.75311077e+00, -2.23489858e+00, -2.28132556e+00,\n", | |
" -1.71708050e+00, -2.27532897e+00, -1.71901677e+00,\n", | |
" -2.27724204e+00, -2.12593613e+00, -2.19538962e+00,\n", | |
" -1.82375446e+00],\n", | |
" [ 7.06468490e-01, 4.28010061e-02, -7.27614646e-03,\n", | |
" 7.78396553e-01, -8.87049662e-04, 7.74349764e-01,\n", | |
" -2.92780975e-03, 1.66512096e-01, 8.65887831e-02,\n", | |
" 5.81369311e-01],\n", | |
" [-6.31425824e-01, -1.19615940e+00, -1.24425103e+00,\n", | |
" -5.79024454e-01, -1.23807544e+00, -5.81923219e-01,\n", | |
" -1.24004674e+00, -1.08047087e+00, -1.15469909e+00,\n", | |
" -7.26903801e-01]]))" | |
] | |
}, | |
"execution_count": 87, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"montecarlo_z(20,(4,12))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 90, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(-0.01497647676385969,\n", | |
" 0.5547251770040698,\n", | |
" array([[ 0.89270939, -0.19047383, 0.34958208, -0.12066355, 0.6556022 ,\n", | |
" 0.39641701, 0.38763161, 0.26242458, 0.41391625, 0.34645493],\n", | |
" [ 0.25771717, -0.73925053, -0.22000872, -0.66995759, 0.05529145,\n", | |
" -0.17691937, -0.18497679, -0.3010681 , -0.16090539, -0.22289758],\n", | |
" [ 0.29961595, -0.70304052, -0.18242533, -0.63371345, 0.09490184,\n", | |
" -0.13908884, -0.14719429, -0.26388709, -0.12297685, -0.18532992],\n", | |
" [-0.35754203, -1.27097344, -0.77189892, -1.20218178, -0.52636405,\n", | |
" -0.73243875, -0.73979081, -0.84704969, -0.71786387, -0.7745569 ],\n", | |
" [ 0.13329998, -0.84677508, -0.33161148, -0.77758351, -0.06233043,\n", | |
" -0.28925603, -0.2971708 , -0.41147603, -0.27353306, -0.33445366],\n", | |
" [ 1.08773006, -0.02193192, 0.52451648, 0.04803725, 0.8399714 ,\n", | |
" 0.57250176, 0.56349278, 0.43548611, 0.59045715, 0.52131614],\n", | |
" [ 0.98804175, -0.10808514, 0.43509563, -0.03819719, 0.74572778,\n", | |
" 0.48249288, 0.47359819, 0.34702261, 0.50021511, 0.4319327 ],\n", | |
" [ 1.0135601 , -0.08603152, 0.4579857 , -0.01612278, 0.76985239,\n", | |
" 0.50553348, 0.49660953, 0.36966762, 0.52331539, 0.45481319],\n", | |
" [ 0.94725002, -0.14333841, 0.39850527, -0.07348369, 0.70716397,\n", | |
" 0.4456619 , 0.43681398, 0.31082399, 0.46328872, 0.39535764],\n", | |
" [-0.24387831, -1.17274232, -0.66994207, -1.10385805, -0.41890831,\n", | |
" -0.62981144, -0.6372938 , -0.7461844 , -0.6149707 , -0.6726427 ]]))" | |
] | |
}, | |
"execution_count": 90, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"montecarlo_z(22,(4,12))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 104, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0.4531807188870824,\n", | |
" 0.23687573994138825,\n", | |
" array([[-0.06061877, 0.46736183, -0.17632917, 0.38755181, 0.06661068,\n", | |
" 0.18530832, 0.08062109, 0.00369799, 0.01688876, 0.0965824 ],\n", | |
" [ 0.38040673, 0.96074562, 0.25880192, 0.86989446, 0.51618812,\n", | |
" 0.64500838, 0.53128161, 0.44876331, 0.46285329, 0.54851238],\n", | |
" [ 0.28634939, 0.85552185, 0.16600168, 0.76702543, 0.42030692,\n", | |
" 0.54696833, 0.43516941, 0.3538444 , 0.36774261, 0.45212945],\n", | |
" [ 0.38545206, 0.96638993, 0.26377983, 0.87541246, 0.52133129,\n", | |
" 0.65026735, 0.53643717, 0.45385486, 0.46795513, 0.55368247],\n", | |
" [ 0.27047491, 0.83776276, 0.15033937, 0.74966376, 0.40412461,\n", | |
" 0.53042167, 0.41894813, 0.33782451, 0.35169035, 0.43586247],\n", | |
" [ 0.34819628, 0.92471116, 0.22702197, 0.8346664 , 0.48335308,\n", | |
" 0.61143403, 0.49836746, 0.41625781, 0.43028212, 0.51550552],\n", | |
" [ 0.27559789, 0.84349394, 0.15539388, 0.75526668, 0.40934694,\n", | |
" 0.53576157, 0.42418303, 0.34299442, 0.3568707 , 0.44111212],\n", | |
" [ 0.35518741, 0.93253228, 0.23391967, 0.84231249, 0.49047978,\n", | |
" 0.61872119, 0.50551133, 0.42331298, 0.43735154, 0.52266951],\n", | |
" [ 0.19497744, 0.75330227, 0.07585094, 0.66709336, 0.32716317,\n", | |
" 0.45172737, 0.34180127, 0.26163548, 0.27534738, 0.3584983 ],\n", | |
" [ 0.31200223, 0.88422018, 0.19131167, 0.79508154, 0.44645719,\n", | |
" 0.5737074 , 0.46138269, 0.37973222, 0.39368273, 0.47841657]]))" | |
] | |
}, | |
"execution_count": 104, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"montecarlo_z(24,(6,10))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 157, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Variable Type Data/Info\n", | |
"-------------------------------------\n", | |
"A ndarray 10x10: 100 elems, type `float64`, 800 bytes\n", | |
"V ndarray 10x10: 100 elems, type `float64`, 800 bytes\n", | |
"Z ndarray 10x10: 100 elems, type `float64`, 800 bytes\n", | |
"class_data DataFrame throw # x position <...> 1520.031972 2 \n", | |
"d int 3\n", | |
"g float 9.81\n", | |
"mean float64 -0.04523780423315785\n", | |
"mean_x float64 0.01207963411779779\n", | |
"mean_z float64 -0.047397370492807414\n", | |
"montecarlo_z function <function montecarlo_z at 0x7f2a5eb2e620>\n", | |
"np module <module 'numpy' from '/op<...>kages/numpy/__init__.py'>\n", | |
"pd module <module 'pandas' from '/o<...>ages/pandas/__init__.py'>\n", | |
"plt module <module 'matplotlib.pyplo<...>es/matplotlib/pyplot.py'>\n", | |
"quartiles_x ndarray 3: 3 elems, type `float64`, 24 bytes\n", | |
"quartiles_z ndarray 3: 3 elems, type `float64`, 24 bytes\n", | |
"rcParams RcParams _internal.classic_mode: F<...>: 0.6\\nytick.right: False\n", | |
"std float64 0.19899826447799362\n", | |
"std_x float64 0.2595784081345317\n", | |
"std_z float64 0.2548611138551949\n", | |
"x Series 0 -0.466403\\n1 -0.2<...>ition (m), dtype: float64\n", | |
"z ndarray 1000x1000: 1000000 elems, type `float64`, 8000000 bytes (7.62939453125 Mb)\n", | |
"z_class Series 0 -0.304000\\n1 -0.4<...>ition (m), dtype: float64\n" | |
] | |
} | |
], | |
"source": [ | |
"whos" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 105, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def montecarlo_z(max_theta,v0):\n", | |
" max_theta=max_theta*(np.pi/180)\n", | |
" #Max_theta input in rads\n", | |
" A,V =np.meshgrid(np.random.uniform(0,max_theta,1000),np.random.uniform(v0[0],v0[1],1000))\n", | |
" z = d/np.cos(A)*(np.sin(A)-g/2/V**2/np.cos(A)*d)+0.3\n", | |
" #compute mean and stddev of z\n", | |
" mean_z=np.mean(z)\n", | |
" std_z=np.std(z)\n", | |
" return mean_z,std_z,z \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 111, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(-0.021103116381375603,\n", | |
" 0.2103982253615786,\n", | |
" array([[ 0.07260378, 0.13154215, -0.25673983, ..., 0.06718904,\n", | |
" -0.16273522, -0.18986478],\n", | |
" [ 0.30720041, 0.36770596, -0.0270609 , ..., 0.30165272,\n", | |
" 0.0677144 , 0.04031265],\n", | |
" [ 0.34286826, 0.40361207, 0.00785926, ..., 0.33730035,\n", | |
" 0.10275174, 0.0753086 ],\n", | |
" ...,\n", | |
" [ 0.03786875, 0.09657509, -0.29074673, ..., 0.0324737 ,\n", | |
" -0.19685623, -0.22394549],\n", | |
" [ 0.15912318, 0.21863953, -0.17203408, ..., 0.15365941,\n", | |
" -0.07774524, -0.10497519],\n", | |
" [ 0.33933586, 0.40005608, 0.00440091, ..., 0.33376996,\n", | |
" 0.09928178, 0.07184275]]))" | |
] | |
}, | |
"execution_count": 111, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"montecarlo_z(10,(7,11))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 156, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0.010203372569004145,\n", | |
" 0.2163372554006355,\n", | |
" array([[ 0.11111279, 0.25885887, 0.09880036, ..., 0.06721976,\n", | |
" 0.15801965, 0.31480504],\n", | |
" [ 0.23526067, 0.38462773, 0.22284345, ..., 0.19101489,\n", | |
" 0.28260896, 0.44136745],\n", | |
" [ 0.0015631 , 0.1478788 , -0.01065685, ..., -0.04201865,\n", | |
" 0.04808045, 0.20312473],\n", | |
" ...,\n", | |
" [ 0.22718069, 0.37644225, 0.21477029, ..., 0.18295787,\n", | |
" 0.27450025, 0.43313033],\n", | |
" [ 0.00660838, 0.15298996, -0.00561583, ..., -0.03698771,\n", | |
" 0.05314367, 0.20826814],\n", | |
" [ 0.20819242, 0.35720606, 0.19579805, ..., 0.16402355,\n", | |
" 0.25544446, 0.41377275]]))" | |
] | |
}, | |
"execution_count": 156, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"montecarlo_z(10.6,(7,11))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"z.shape\n", | |
"\n", | |
"z=np.reshape(z,1000000)\n", | |
"plt.hist(z);\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 168, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(-0.6, 0.6, 0, 250000)" | |
] | |
}, | |
"execution_count": 168, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"z.shape\n", | |
"\n", | |
"z=np.reshape(z,1000000)\n", | |
"plt.hist(z);\n", | |
"plt.axis((-0.6,0.6,0,250000))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"z_class=class_data[' z position (m)']\n", | |
"plt.hist(z_class)\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 185, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"Text(0.5, 1.0, 'Heights based on class data')" | |
] | |
}, | |
"execution_count": 185, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"z_class=class_data[' z position (m)']\n", | |
"plt.hist(z_class)\n", | |
"plt.xlim(-.6,.6)\n", | |
"plt.xticks(np.linspace(-.6,.6,5));\n", | |
"plt.title('Heights based on class data')\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 164, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(1000000, 1)" | |
] | |
}, | |
"execution_count": 164, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"m,s,z_MC=montecarlo_z(8.1,(7,12))\n", | |
"z_MC=z_MC.reshape((-1,1))\n", | |
"z_MC.shape" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 165, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.boxplot([z,z_MC], labels=['z position','mc']);" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Recall the mean and stddev of the class data for heights was -.05 and .25, respectively. With the monte carlo model, I was able to consistently get a mean of between -.019 and -.022 and stddev of between and .200 and .220>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Guess and check process: \n", | |
"To lower my standard deviation, I decreased the angle to between 8 and 11 degrees and decreased the spread in the initial velocity value generation to between 4 and 5." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In terms of the boxplots:\n", | |
"As you can see above. The boxplot for the heights obtained from the model is extremly similar to the boxplot of class data. __In both plots:__ the average was around zero, the size and location of the box(the middle 50% of the data) was very similar, and there was a large variation in boths plots.\n", | |
"Also, there was only a couple outliers in the \"mc plot\" and they were very close to the end of the whisker so the outliers are not very significant." | |
] | |
} | |
], | |
"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.7.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |