diff --git a/data/Midnight_Sun/powerOffDragCurve.csv b/data/Midnight_Sun/powerOffDragCurve.csv
new file mode 100644
index 000000000..8e1d1a68b
--- /dev/null
+++ b/data/Midnight_Sun/powerOffDragCurve.csv
@@ -0,0 +1,200 @@
+0.01,0.338284537
+0.02,0.401451959
+0.03,0.415935575
+0.04,0.419971644
+0.05,0.420590705
+0.06,0.41986392
+0.07,0.418565685
+0.08,0.417028845
+0.09,0.415409227
+0.1,0.41378346
+0.11,0.412189868
+0.12,0.410647231
+0.13,0.40916398
+0.14,0.407742927
+0.15,0.406383838
+0.16,0.405084842
+0.17,0.403843232
+0.18,0.402655931
+0.19,0.401519756
+0.2,0.400431533
+0.21,0.399388271
+0.22,0.398387084
+0.23,0.397425273
+0.24,0.396500378
+0.25,0.395610054
+0.26,0.395029787
+0.27,0.394479998
+0.28,0.393958862
+0.29,0.393464718
+0.3,0.392995966
+0.31,0.392551217
+0.32,0.392129119
+0.33,0.391728487
+0.34,0.391348141
+0.35,0.390987033
+0.36,0.390644177
+0.37,0.390318682
+0.38,0.390009707
+0.39,0.389716413
+0.4,0.389438119
+0.41,0.389174076
+0.42,0.388923694
+0.43,0.388686322
+0.44,0.3884614
+0.45,0.388248431
+0.46,0.388046861
+0.47,0.38785627
+0.48,0.387676161
+0.49,0.38750615
+0.5,0.387345833
+0.51,0.387194846
+0.52,0.387052834
+0.53,0.386919429
+0.54,0.386971707
+0.55,0.387209267
+0.56,0.387446891
+0.57,0.387684594
+0.58,0.387922396
+0.59,0.388160259
+0.6,0.38839822
+0.61,0.389138555
+0.62,0.38986096
+0.63,0.390583443
+0.64,0.391306005
+0.65,0.392028628
+0.66,0.392751346
+0.67,0.393474141
+0.68,0.394197013
+0.69,0.394919945
+0.7,0.395642971
+0.71,0.396366074
+0.72,0.397089235
+0.73,0.397812506
+0.74,0.398535836
+0.75,0.399259224
+0.76,0.399982687
+0.77,0.400706242
+0.78,0.401429871
+0.79,0.402153592
+0.8,0.402877335
+0.81,0.403601186
+0.82,0.404325111
+0.83,0.405049109
+0.84,0.40577318
+0.85,0.406497324
+0.86,0.407221522
+0.87,0.407945793
+0.88,0.408670171
+0.89,0.409394603
+0.9,0.410119106
+0.91,0.412907916
+0.92,0.421274346
+0.93,0.440121367
+0.94,0.465265765
+0.95,0.490410162
+0.96,0.51555456
+0.97,0.540698957
+0.98,0.565843355
+0.99,0.590987752
+1,0.61613215
+1.01,0.641276547
+1.02,0.666420945
+1.03,0.691565342
+1.04,0.71670974
+1.05,0.741854138
+1.06,0.742366579
+1.07,0.739351558
+1.08,0.73701821
+1.09,0.735168377
+1.1,0.733674994
+1.11,0.732452233
+1.12,0.731439763
+1.13,0.730593728
+1.14,0.729881353
+1.15,0.729277557
+1.16,0.728295232
+1.17,0.727371268
+1.18,0.72651041
+1.19,0.725567814
+1.2,0.724319221
+1.21,0.72311246
+1.22,0.721941707
+1.23,0.720801922
+1.24,0.719688886
+1.25,0.718598879
+1.26,0.717528755
+1.27,0.716475824
+1.28,0.715437621
+1.29,0.714412097
+1.3,0.713397385
+1.31,0.712391916
+1.32,0.711394208
+1.33,0.710403037
+1.34,0.70941728
+1.35,0.708435932
+1.36,0.707458128
+1.37,0.706483077
+1.38,0.705510062
+1.39,0.704538504
+1.4,0.703567814
+1.41,0.702597547
+1.42,0.701627227
+1.43,0.700656487
+1.44,0.699685007
+1.45,0.698712467
+1.46,0.697738603
+1.47,0.696763193
+1.48,0.69578604
+1.49,0.69480697
+1.5,0.69382581
+1.51,0.692842465
+1.52,0.691856828
+1.53,0.690868779
+1.54,0.68987828
+1.55,0.688885267
+1.56,0.687889664
+1.57,0.686891488
+1.58,0.685890691
+1.59,0.684887269
+1.6,0.683881218
+1.61,0.682872576
+1.62,0.68186131
+1.63,0.68084749
+1.64,0.67983111
+1.65,0.678812216
+1.66,0.677790852
+1.67,0.676767064
+1.68,0.67574091
+1.69,0.674712415
+1.7,0.673681635
+1.71,0.672648654
+1.72,0.671613494
+1.73,0.670576268
+1.74,0.669537015
+1.75,0.668495768
+1.76,0.667452655
+1.77,0.666407713
+1.78,0.665360984
+1.79,0.664312567
+1.8,0.663262546
+1.81,0.662210953
+1.82,0.661157893
+1.83,0.660103417
+1.84,0.659047582
+1.85,0.657990492
+1.86,0.656932195
+1.87,0.655872756
+1.88,0.654812259
+1.89,0.653750747
+1.9,0.652688321
+1.91,0.651625023
+1.92,0.650560923
+1.93,0.6494961
+1.94,0.648430591
+1.95,0.647364453
+1.96,0.6462978
+1.97,0.645230656
+1.98,0.644163071
+1.99,0.643095119
+2,0.642026878
diff --git a/data/Midnight_Sun/powerOnDragCurve.csv b/data/Midnight_Sun/powerOnDragCurve.csv
new file mode 100644
index 000000000..484970654
--- /dev/null
+++ b/data/Midnight_Sun/powerOnDragCurve.csv
@@ -0,0 +1,200 @@
+0.01,0.331707124
+0.02,0.394874546
+0.03,0.409358162
+0.04,0.413394231
+0.05,0.414013292
+0.06,0.413286507
+0.07,0.411988272
+0.08,0.410451432
+0.09,0.408831814
+0.1,0.407206046
+0.11,0.405612455
+0.12,0.404069818
+0.13,0.402586567
+0.14,0.401165514
+0.15,0.399806425
+0.16,0.398507429
+0.17,0.397265819
+0.18,0.396078518
+0.19,0.394942343
+0.2,0.39385412
+0.21,0.392810858
+0.22,0.391809671
+0.23,0.39084786
+0.24,0.389922965
+0.25,0.389032641
+0.26,0.388452374
+0.27,0.387902585
+0.28,0.387381449
+0.29,0.386887305
+0.3,0.386418553
+0.31,0.385973804
+0.32,0.385551706
+0.33,0.385151074
+0.34,0.384770728
+0.35,0.38440962
+0.36,0.384066764
+0.37,0.383741269
+0.38,0.383432294
+0.39,0.383139
+0.4,0.382860705
+0.41,0.382596663
+0.42,0.382346281
+0.43,0.382108909
+0.44,0.381883987
+0.45,0.381671018
+0.46,0.381469448
+0.47,0.381278857
+0.48,0.381098748
+0.49,0.380928737
+0.5,0.38076842
+0.51,0.380617433
+0.52,0.38047542
+0.53,0.380342016
+0.54,0.380394294
+0.55,0.380631854
+0.56,0.380869477
+0.57,0.381107181
+0.58,0.381344983
+0.59,0.381449008
+0.6,0.38155313
+0.61,0.382159627
+0.62,0.382748194
+0.63,0.38333684
+0.64,0.383925563
+0.65,0.384514348
+0.66,0.385103227
+0.67,0.385692185
+0.68,0.386281219
+0.69,0.386870313
+0.7,0.3874595
+0.71,0.388048765
+0.72,0.388638087
+0.73,0.389227521
+0.74,0.389817013
+0.75,0.390406562
+0.76,0.390996187
+0.77,0.391585904
+0.78,0.392175695
+0.79,0.392765578
+0.8,0.393355483
+0.81,0.393945496
+0.82,0.394535582
+0.83,0.395125742
+0.84,0.395715975
+0.85,0.396306281
+0.86,0.396896641
+0.87,0.397487074
+0.88,0.398077613
+0.89,0.398668207
+0.9,0.399258872
+0.91,0.401973833
+0.92,0.410118714
+0.93,0.428495541
+0.94,0.453031875
+0.95,0.477568209
+0.96,0.502104543
+0.97,0.526640877
+0.98,0.551177211
+0.99,0.575713545
+1,0.600249879
+1.01,0.624786213
+1.02,0.649322547
+1.03,0.673858881
+1.04,0.698395215
+1.05,0.722931549
+1.06,0.723524154
+1.07,0.720589296
+1.08,0.718336112
+1.09,0.716566443
+1.1,0.715153223
+1.11,0.714010626
+1.12,0.713078319
+1.13,0.712312447
+1.14,0.711680236
+1.15,0.711156604
+1.16,0.710254442
+1.17,0.709410642
+1.18,0.708629947
+1.19,0.707767514
+1.2,0.706546979
+1.21,0.705340217
+1.22,0.704169465
+1.23,0.703029679
+1.24,0.701916644
+1.25,0.700826637
+1.26,0.699756513
+1.27,0.698703582
+1.28,0.697665379
+1.29,0.696639854
+1.3,0.695625142
+1.31,0.694619674
+1.32,0.693621965
+1.33,0.692630795
+1.34,0.691645037
+1.35,0.690663689
+1.36,0.689685886
+1.37,0.688710834
+1.38,0.687737819
+1.39,0.686766261
+1.4,0.685795571
+1.41,0.684825305
+1.42,0.683854985
+1.43,0.682884245
+1.44,0.681912765
+1.45,0.680940224
+1.46,0.67996636
+1.47,0.67899095
+1.48,0.678013798
+1.49,0.677034727
+1.5,0.676053568
+1.51,0.675070223
+1.52,0.674084586
+1.53,0.673096537
+1.54,0.672106037
+1.55,0.671113024
+1.56,0.670117422
+1.57,0.669119245
+1.58,0.668118448
+1.59,0.667115027
+1.6,0.666108976
+1.61,0.665100334
+1.62,0.664089068
+1.63,0.663075248
+1.64,0.662058868
+1.65,0.661039974
+1.66,0.66001861
+1.67,0.658994822
+1.68,0.657968667
+1.69,0.656940172
+1.7,0.655909393
+1.71,0.654876412
+1.72,0.653841251
+1.73,0.652804026
+1.74,0.651764773
+1.75,0.650723525
+1.76,0.649680412
+1.77,0.648635471
+1.78,0.647588742
+1.79,0.646540325
+1.8,0.645490303
+1.81,0.64443871
+1.82,0.643385651
+1.83,0.642331174
+1.84,0.64127534
+1.85,0.640218249
+1.86,0.639159953
+1.87,0.638100514
+1.88,0.637040017
+1.89,0.635978504
+1.9,0.634916078
+1.91,0.633852781
+1.92,0.632788681
+1.93,0.631723858
+1.94,0.630658349
+1.95,0.629592211
+1.96,0.628525558
+1.97,0.627458413
+1.98,0.626345236
+1.99,0.625231691
+2,0.624117856
diff --git a/data/motors/STES_L1882.eng b/data/motors/STES_L1882.eng
new file mode 100644
index 000000000..970d1c6cf
--- /dev/null
+++ b/data/motors/STES_L1882.eng
@@ -0,0 +1,49 @@
+L1882 60.0 747.0 P 2.147125 3.579125 STES
+0 0.01
+0.03 1483.7594
+0.06 1515.7693
+0.09 1547.5878
+0.12 1579.1678
+0.1499 1610.4608
+0.1799 1641.4176
+0.2099 1671.988
+0.2399 1702.1214
+0.2699 1731.7664
+0.2999 1760.8714
+0.3299 1789.3845
+0.3599 1817.2538
+0.3899 1844.4273
+0.4199 1870.8536
+0.4499 1896.4816
+0.4798 1921.2607
+0.5098 1945.1414
+0.5398 1968.075
+0.5698 1990.014
+0.5998 2010.9125
+0.6298 2030.7259
+0.6598 2049.4115
+0.6898 2066.9284
+0.7198 2083.2379
+0.7497 2098.3034
+0.7797 2112.091
+0.8097 2124.5692
+0.8397 2135.709
+0.8697 2145.4845
+0.8997 2153.1313
+0.9297 2159.6191
+0.9597 2164.9419
+0.9897 2169.0947
+1.0197 2172.0735
+1.0496 2173.8755
+1.0796 2174.499
+1.1096 2173.9434
+1.1396 2172.2091
+1.1696 2169.2976
+1.1996 2165.2118
+1.2296 2159.9551
+1.2596 2153.5327
+1.2896 2145.9502
+1.3196 2137.2149
+1.3495 0.0
+;
+;
diff --git a/docs/notebooks/dispersion_analysis/RocketPy b/docs/notebooks/dispersion_analysis/RocketPy
new file mode 160000
index 000000000..256f90d1f
--- /dev/null
+++ b/docs/notebooks/dispersion_analysis/RocketPy
@@ -0,0 +1 @@
+Subproject commit 256f90d1fe7df10e0636736e9d591ccc3de9f1a0
diff --git a/docs/notebooks/dispersion_analysis/dispersion_analysis.ipynb b/docs/notebooks/dispersion_analysis/dispersion_analysis.ipynb
index 1d2c3e229..d119f620c 100644
--- a/docs/notebooks/dispersion_analysis/dispersion_analysis.ipynb
+++ b/docs/notebooks/dispersion_analysis/dispersion_analysis.ipynb
@@ -1,37 +1,10 @@
{
- "nbformat": 4,
- "nbformat_minor": 2,
- "metadata": {
- "colab": {
- "name": "Valetudo_Monte_Carlo_Dispersion_Analysis.ipynb",
- "provenance": [],
- "collapsed_sections": [
- "au88RN0P-bVl",
- "-9u9RIaqpOQl",
- "tExJzLhDpOQp",
- "ifuJX7jYpORB",
- "mYD4EQ5spORE",
- "ajI4vr7QpORL",
- "9m19OV9upORS",
- "mQzQELcJpORX",
- "7MUVLAM-pORb",
- "4LpDYGpfpORf",
- "nKSzDWi7pORi",
- "BvMCGZYHpORn",
- "LhPQQlpHpORq",
- "5MvfiSQZvwPK"
- ],
- "toc_visible": true
- },
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- }
- },
"cells": [
{
"cell_type": "markdown",
+ "metadata": {
+ "id": "V0OcBOvipOP8"
+ },
"source": [
"# Monte Carlo Dispersion Analysis using RocketPy\n",
"\n",
@@ -44,62 +17,197 @@
"This jupyter notebook presents the Monte Carlo analysis performed for the flight of Valetudo, one of the most famous rockets made by Projeto Jupiter. Valetudo has a diameter of $80$ mm and height of $2.4$ m. It was built for the first time to be launched at Latin American Space Challenge (LASC) 2019. Indeed, Valetudo came to be launched in 2019 on August 10th by 5:56 pm (local time), propelled by a class K motor called 'Keron', a solid motor completely designed and built by Projeto Jupiter. The rocket crossed the sky and reached an $860$ m apogee, descending safely by the drogue parachute called \"Charmander\" and landing with an 18.5 m/s terminal velocity. \n",
"\n",
"We hope you enjoy the flight(s) in this notebook just like everyone in LASC19 did it in real-time!"
- ],
- "metadata": {
- "id": "V0OcBOvipOP8"
- }
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {},
"source": [
"## Clone repository if using Google Colab\n",
"\n",
"If you are running this using Binder, or you are running locally with the necessary files, you do not need to run this.\n",
"On the other hand, if you are running on Google Colab, make sure to run the cell below to clone the repository and download the necessary files."
- ],
- "metadata": {}
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Cloning into 'RocketPy'...\n",
+ "Updating files: 31% (52/165)\n",
+ "Updating files: 32% (53/165)\n",
+ "Updating files: 32% (54/165)\n",
+ "Updating files: 33% (55/165)\n",
+ "Updating files: 33% (56/165)\n",
+ "Updating files: 34% (57/165)\n",
+ "Updating files: 35% (58/165)\n",
+ "Updating files: 36% (60/165)\n",
+ "Updating files: 36% (61/165)\n",
+ "Updating files: 37% (62/165)\n",
+ "Updating files: 38% (63/165)\n",
+ "Updating files: 39% (65/165)\n",
+ "Updating files: 40% (66/165)\n",
+ "Updating files: 40% (67/165)\n",
+ "Updating files: 41% (68/165)\n",
+ "Updating files: 42% (70/165)\n",
+ "Updating files: 43% (71/165)\n",
+ "Updating files: 44% (73/165)\n",
+ "Updating files: 45% (75/165)\n",
+ "Updating files: 46% (76/165)\n",
+ "Updating files: 47% (78/165)\n",
+ "Updating files: 48% (80/165)\n",
+ "Updating files: 49% (81/165)\n",
+ "Updating files: 50% (83/165)\n",
+ "Updating files: 51% (85/165)\n",
+ "Updating files: 52% (86/165)\n",
+ "Updating files: 53% (88/165)\n",
+ "Updating files: 54% (90/165)\n",
+ "Updating files: 55% (91/165)\n",
+ "Updating files: 56% (93/165)\n",
+ "Updating files: 57% (95/165)\n",
+ "Updating files: 58% (96/165)\n",
+ "Updating files: 58% (97/165)\n",
+ "Updating files: 59% (98/165)\n",
+ "Updating files: 60% (99/165)\n",
+ "Updating files: 61% (101/165)\n",
+ "Updating files: 62% (103/165)\n",
+ "Updating files: 63% (104/165)\n",
+ "Updating files: 64% (106/165)\n",
+ "Updating files: 65% (108/165)\n",
+ "Updating files: 66% (109/165)\n",
+ "Updating files: 67% (111/165)\n",
+ "Updating files: 68% (113/165)\n",
+ "Updating files: 69% (114/165)\n",
+ "Updating files: 70% (116/165)\n",
+ "Updating files: 71% (118/165)\n",
+ "Updating files: 72% (119/165)\n",
+ "Updating files: 73% (121/165)\n",
+ "Updating files: 74% (123/165)\n",
+ "Updating files: 75% (124/165)\n",
+ "Updating files: 76% (126/165)\n",
+ "Updating files: 77% (128/165)\n",
+ "Updating files: 78% (129/165)\n",
+ "Updating files: 79% (131/165)\n",
+ "Updating files: 80% (132/165)\n",
+ "Updating files: 81% (134/165)\n",
+ "Updating files: 82% (136/165)\n",
+ "Updating files: 83% (137/165)\n",
+ "Updating files: 84% (139/165)\n",
+ "Updating files: 85% (141/165)\n",
+ "Updating files: 86% (142/165)\n",
+ "Updating files: 87% (144/165)\n",
+ "Updating files: 88% (146/165)\n",
+ "Updating files: 89% (147/165)\n",
+ "Updating files: 90% (149/165)\n",
+ "Updating files: 91% (151/165)\n",
+ "Updating files: 92% (152/165)\n",
+ "Updating files: 93% (154/165)\n",
+ "Updating files: 94% (156/165)\n",
+ "Updating files: 95% (157/165)\n",
+ "Updating files: 96% (159/165)\n",
+ "Updating files: 97% (161/165)\n",
+ "Updating files: 98% (162/165)\n",
+ "Updating files: 99% (164/165)\n",
+ "Updating files: 100% (165/165)\n",
+ "Updating files: 100% (165/165), done.\n"
+ ]
+ }
+ ],
"source": [
"!git clone https://github.com/giovaniceotto/RocketPy.git\n",
"import os\n",
"\n",
"os.chdir(\"RocketPy/docs/notebooks/dispersion_analysis\")"
- ],
- "outputs": [],
- "metadata": {}
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "id": "Um2fvNlQpTAH"
+ },
"source": [
"## Install and Load Necessary Libraries\n",
"\n"
- ],
- "metadata": {
- "id": "Um2fvNlQpTAH"
- }
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
- "source": [
- "!pip install netCDF4\n",
- "!pip install rocketpy"
- ],
- "outputs": [],
+ "execution_count": 2,
"metadata": {
- "id": "JJNfsYrwpXGJ",
"colab": {
"base_uri": "https://localhost:8080/"
},
+ "id": "JJNfsYrwpXGJ",
"outputId": "e2c4e1ef-4720-40ae-abd1-4d2a599bedd4"
- }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Requirement already satisfied: netCDF4 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (1.5.8)"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING: You are using pip version 21.3.1; however, version 22.2.2 is available.\n",
+ "You should consider upgrading via the 'C:\\Users\\aasit\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\\python.exe -m pip install --upgrade pip' command.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Requirement already satisfied: numpy>=1.9 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from netCDF4) (1.21.4)\n",
+ "Requirement already satisfied: cftime in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from netCDF4) (1.5.1.1)\n",
+ "Requirement already satisfied: rocketpy in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (0.9.8)\n",
+ "Requirement already satisfied: requests in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from rocketpy) (2.26.0)\n",
+ "Requirement already satisfied: scipy>=1.0 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from rocketpy) (1.7.3)\n",
+ "Requirement already satisfied: matplotlib>=3.0 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from rocketpy) (3.5.1)\n",
+ "Requirement already satisfied: numpy>=1.0 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from rocketpy) (1.21.4)\n",
+ "Requirement already satisfied: cycler>=0.10 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from matplotlib>=3.0->rocketpy) (0.11.0)\n",
+ "Requirement already satisfied: pyparsing>=2.2.1 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from matplotlib>=3.0->rocketpy) (3.0.6)\n",
+ "Requirement already satisfied: packaging>=20.0 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from matplotlib>=3.0->rocketpy) (21.3)\n",
+ "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from matplotlib>=3.0->rocketpy) (2.8.2)\n",
+ "Requirement already satisfied: fonttools>=4.22.0 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from matplotlib>=3.0->rocketpy) (4.28.3)\n",
+ "Requirement already satisfied: pillow>=6.2.0 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from matplotlib>=3.0->rocketpy) (8.4.0)\n",
+ "Requirement already satisfied: kiwisolver>=1.0.1 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from matplotlib>=3.0->rocketpy) (1.3.2)\n",
+ "Requirement already satisfied: charset-normalizer~=2.0.0 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from requests->rocketpy) (2.0.9)\n",
+ "Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from requests->rocketpy) (2021.10.8)\n",
+ "Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from requests->rocketpy) (1.26.7)\n",
+ "Requirement already satisfied: idna<4,>=2.5 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from requests->rocketpy) (3.3)\n",
+ "Requirement already satisfied: six>=1.5 in c:\\users\\aasit\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\\localcache\\local-packages\\python39\\site-packages (from python-dateutil>=2.7->matplotlib>=3.0->rocketpy) (1.16.0)\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING: You are using pip version 21.3.1; however, version 22.2.2 is available.\n",
+ "You should consider upgrading via the 'C:\\Users\\aasit\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\\python.exe -m pip install --upgrade pip' command.\n"
+ ]
+ }
+ ],
+ "source": [
+ "!pip install netCDF4\n",
+ "!pip install rocketpy"
+ ]
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 3,
+ "metadata": {
+ "id": "rNY7u8fApOP_"
+ },
+ "outputs": [],
"source": [
"from datetime import datetime\n",
"from time import process_time, perf_counter, time\n",
@@ -110,22 +218,22 @@
"import numpy as np\n",
"from numpy.random import normal, uniform, choice\n",
"from IPython.display import display"
- ],
- "outputs": [],
- "metadata": {
- "id": "rNY7u8fApOP_"
- }
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {},
"source": [
"Next, we import matplotlib to produce awesome looking plots."
- ],
- "metadata": {}
+ ]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 4,
+ "metadata": {
+ "id": "0uEmvBIt5Ltg"
+ },
+ "outputs": [],
"source": [
"%config InlineBackend.figure_formats = ['svg']\n",
"import matplotlib as mpl\n",
@@ -137,14 +245,13 @@
"mpl.rcParams[\"font.size\"] = 14\n",
"mpl.rcParams[\"legend.fontsize\"] = 14\n",
"mpl.rcParams[\"figure.titlesize\"] = 14"
- ],
- "outputs": [],
- "metadata": {
- "id": "0uEmvBIt5Ltg"
- }
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "id": "4ksmBqU7pOQC"
+ },
"source": [
"## Defining Analysis Parameters\n",
"\n",
@@ -158,14 +265,15 @@
" - if the parameter is know, its value is represented as a list with a single entry (i.e. `\"number_of_fins: [4]\"`)\n",
" - if the parameter can assume certain discrete values with uniform distribution, its values are represented by a list of possible choices (i.e. `\"member_of_ensemble_forecast: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\"`)\n",
" - if the parameter is best represented by a normal (gaussian) distribution, its value is a tuple with the expected value and its standard deviation (i.e. `\"rocket_mass\": (100, 2)`, where 100 kg is the expected mass, with uncertainty of plus or minus 2 kg)"
- ],
- "metadata": {
- "id": "4ksmBqU7pOQC"
- }
+ ]
},
{
"cell_type": "code",
"execution_count": 6,
+ "metadata": {
+ "id": "fwoCdOgKpOQD"
+ },
+ "outputs": [],
"source": [
"analysis_parameters = {\n",
" # Mass Details\n",
@@ -250,28 +358,28 @@
" 0.16,\n",
" ), # Time delay between sensor signal is received and ejection signal is fired (s)\n",
"}"
- ],
- "outputs": [],
- "metadata": {
- "id": "fwoCdOgKpOQD"
- }
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "id": "EJCbP69TpOQG"
+ },
"source": [
"## Creating a Flight Settings Generator\n",
"\n",
"Now, we create a generator function which will yield all the necessary inputs for a single flight simulation. Each generated input will be randomly generated according to the `analysis_parameters` dicitionary set up above.\n",
"\n",
"This is just a helper function to make the code clearer."
- ],
- "metadata": {
- "id": "EJCbP69TpOQG"
- }
+ ]
},
{
"cell_type": "code",
"execution_count": 7,
+ "metadata": {
+ "id": "5XCL9JaIpOQH"
+ },
+ "outputs": [],
"source": [
"def flight_settings(analysis_parameters, total_number):\n",
" i = 0\n",
@@ -292,14 +400,13 @@
" i += 1\n",
" # Yield a flight setting\n",
" yield flight_setting"
- ],
- "outputs": [],
- "metadata": {
- "id": "5XCL9JaIpOQH"
- }
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "id": "FtdRXCVHpOQO"
+ },
"source": [
"## Creating an Export Function\n",
"\n",
@@ -309,14 +416,15 @@
"- `dispersion_input_file`: A file where each line is a json converted dictionary of flight setting inputs to run a single trajectory simulation;\n",
"- `dispersion_output_file`: A file where each line is a json converted dictionary containing the main outputs of a single simulation, such as apogee altitute and maximum velocity;\n",
"- `dispersion_error_file`: A file to store the inputs of simulations which raised errors. This can help us debug these simulations later on."
- ],
- "metadata": {
- "id": "FtdRXCVHpOQO"
- }
+ ]
},
{
"cell_type": "code",
"execution_count": 8,
+ "metadata": {
+ "id": "1eC2p3jEpOQO"
+ },
+ "outputs": [],
"source": [
"def export_flight_data(flight_setting, flight_data, exec_time):\n",
" # Generate flight results\n",
@@ -380,14 +488,13 @@
"\n",
"def export_flight_error(flight_setting):\n",
" dispersion_error_file.write(str(flight_setting) + \"\\n\")"
- ],
- "outputs": [],
- "metadata": {
- "id": "1eC2p3jEpOQO"
- }
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "id": "GX6pB4Y7pOQQ"
+ },
"source": [
"## Simulating Each Flight Setting\n",
"\n",
@@ -401,14 +508,30 @@
"For the power off and on drag and thrust curve user should have in hands the .csv (or .eng for comercial motor's thrust curve).\n",
"\n",
"**Tip**: A better practice is openning the files in \"append\" mode, this way we can acumulate our simulations. To do this, just change the 'a' (write) argument of the `open` function in the third, fourth and fifth line of code to `a` (append)."
- ],
- "metadata": {
- "id": "GX6pB4Y7pOQQ"
- }
+ ]
},
{
"cell_type": "code",
"execution_count": 48,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "id": "GILiaO30pOQS",
+ "outputId": "5a2ae15d-5c16-4ae0-f28b-165730d2419d"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'Curent iteration: 019999 | Average Time per Iteration: 0.000289 s'"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"# Basic analysis info\n",
"filename = \"dispersion_analysis_outputs/valetudo_rocket_v0\"\n",
@@ -542,50 +665,47 @@
"dispersion_input_file.close()\n",
"dispersion_output_file.close()\n",
"dispersion_error_file.close()"
- ],
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- "'Curent iteration: 019999 | Average Time per Iteration: 0.000289 s'"
- ]
- },
- "metadata": {}
- }
- ],
- "metadata": {
- "id": "GILiaO30pOQS",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 34
- },
- "outputId": "5a2ae15d-5c16-4ae0-f28b-165730d2419d"
- }
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {},
"source": [
"## Post-processing Monte Carlo Dispersion Results\n",
"\n",
"Now that we have finish running thousands of simulations, it is time to process the results and get some nice graphs out of them! "
- ],
- "metadata": {}
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "id": "X8ewOccUpOQb"
+ },
"source": [
"### Importing Dispersion Analysis Saved Data\n",
"\n",
"We start by loading the file which stores the outputs."
- ],
- "metadata": {
- "id": "X8ewOccUpOQb"
- }
+ ]
},
{
"cell_type": "code",
"execution_count": 49,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "-7qgTJzRpOQb",
+ "outputId": "76d2cecd-a09f-429f-cca2-f4e03e39d49e"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of simulations: 20000\n"
+ ]
+ }
+ ],
"source": [
"filename = \"dispersion_analysis_outputs/valetudo_rocket_v0\"\n",
"\n",
@@ -635,47 +755,61 @@
"# Print number of flights simulated\n",
"N = len(dispersion_general_results)\n",
"print(\"Number of simulations: \", N)"
- ],
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "Number of simulations: 20000\n"
- ]
- }
- ],
- "metadata": {
- "id": "-7qgTJzRpOQb",
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "outputId": "76d2cecd-a09f-429f-cca2-f4e03e39d49e"
- }
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "id": "ioeUkzPipOQe"
+ },
"source": [
"## Dispersion Results\n",
"\n",
"Now, we plot the histogram for every single output. This shows how are outputs behave. Valuable statistical data can be calculated based on them."
- ],
- "metadata": {
- "id": "ioeUkzPipOQe"
- }
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "### Out of Rail Time"
- ],
"metadata": {
"id": "QDy8KaJ8pOQg"
- }
+ },
+ "source": [
+ "### Out of Rail Time"
+ ]
},
{
"cell_type": "code",
"execution_count": 73,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "1JQSzd5cpOQh",
+ "outputId": "455abcdf-9dd7-4689-9523-50154c7fb302"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Out of Rail Time - Mean Value: 1.084 s\n",
+ "Out of Rail Time - Standard Deviation: 0.183 s\n"
+ ]
+ },
+ {
+ "data": {
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
"source": [
"print(\n",
" f'Out of Rail Time - Mean Value: {np.mean(dispersion_results[\"outOfRailTime\"]):0.3f} s'\n",
@@ -702,50 +836,50 @@
"# xaxis_title_text='Time (s)',\n",
"# yaxis_title_text='Number of occurences'\n",
"# )"
- ],
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "Out of Rail Time - Mean Value: 1.084 s\n",
- "Out of Rail Time - Standard Deviation: 0.183 s\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "-9u9RIaqpOQl"
+ },
+ "source": [
+ "### Out of Rail Velocity"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "jE23vILMpOQm",
+ "outputId": "aa04f5a4-26f2-47e8-831a-41d3e76b616f"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Out of Rail Velocity - Mean Value: 23.081 m/s\n",
+ "Out of Rail Velocity - Standard Deviation: 3.116 m/s\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "1JQSzd5cpOQh",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "455abcdf-9dd7-4689-9523-50154c7fb302"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Out of Rail Velocity"
- ],
- "metadata": {
- "id": "-9u9RIaqpOQl"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 51,
"source": [
"print(\n",
" f'Out of Rail Velocity - Mean Value: {np.mean(dispersion_results[\"outOfRailVelocity\"]):0.3f} m/s'\n",
@@ -760,50 +894,50 @@
"plt.xlabel(\"Velocity (m/s)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "tExJzLhDpOQp"
+ },
+ "source": [
+ "### Apogee Time"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "l8zjT_VjpOQq",
+ "outputId": "1c15fe12-afae-4035-f085-7d82e61d24d9"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
- "Out of Rail Velocity - Mean Value: 23.081 m/s\n",
- "Out of Rail Velocity - Standard Deviation: 3.116 m/s\n"
+ "Apogee Time - Mean Value: 14.305 s\n",
+ "Apogee Time - Standard Deviation: 0.344 s\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "jE23vILMpOQm",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "aa04f5a4-26f2-47e8-831a-41d3e76b616f"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Apogee Time"
- ],
- "metadata": {
- "id": "tExJzLhDpOQp"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 52,
"source": [
"print(\n",
" f'Apogee Time - Mean Value: {np.mean(dispersion_results[\"apogeeTime\"]):0.3f} s'\n",
@@ -818,50 +952,50 @@
"plt.xlabel(\"Time (s)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "erNB46vApOQt"
+ },
+ "source": [
+ "### Apogee Altitude"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "gWWMoOClpOQv",
+ "outputId": "88f2cf05-142c-4bb1-ce64-9879696107a7"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
- "Apogee Time - Mean Value: 14.305 s\n",
- "Apogee Time - Standard Deviation: 0.344 s\n"
+ "Apogee Altitude - Mean Value: 847.247 m\n",
+ "Apogee Altitude - Standard Deviation: 42.020 m\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "l8zjT_VjpOQq",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "1c15fe12-afae-4035-f085-7d82e61d24d9"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Apogee Altitude"
- ],
- "metadata": {
- "id": "erNB46vApOQt"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 53,
"source": [
"print(\n",
" f'Apogee Altitude - Mean Value: {np.mean(dispersion_results[\"apogeeAltitude\"]):0.3f} m'\n",
@@ -878,50 +1012,50 @@
"plt.show()\n",
"\n",
"# Real measured apogee for Valetudo = 860 m"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "7bBvFJ5xpOQ1"
+ },
+ "source": [
+ "### Apogee X Position"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "nGdsF9VppOQ3",
+ "outputId": "b4f0a3aa-afa1-4942-91b8-8ad61d263244"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
- "Apogee Altitude - Mean Value: 847.247 m\n",
- "Apogee Altitude - Standard Deviation: 42.020 m\n"
+ "Apogee X Position - Mean Value: 108.492 m\n",
+ "Apogee X Position - Standard Deviation: 24.629 m\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "gWWMoOClpOQv",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "88f2cf05-142c-4bb1-ce64-9879696107a7"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Apogee X Position"
- ],
- "metadata": {
- "id": "7bBvFJ5xpOQ1"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 54,
"source": [
"print(\n",
" f'Apogee X Position - Mean Value: {np.mean(dispersion_results[\"apogeeX\"]):0.3f} m'\n",
@@ -936,50 +1070,50 @@
"plt.xlabel(\"Apogee X Position (m)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "-LtYxB0lpOQ8"
+ },
+ "source": [
+ "### Apogee Y Position"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "ocq6GmeNpOQ8",
+ "outputId": "f3a45339-c0a6-4819-bd03-60f7fe6df963"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
- "Apogee X Position - Mean Value: 108.492 m\n",
- "Apogee X Position - Standard Deviation: 24.629 m\n"
+ "Apogee Y Position - Mean Value: 107.614 m\n",
+ "Apogee Y Position - Standard Deviation: 19.732 m\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "nGdsF9VppOQ3",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "b4f0a3aa-afa1-4942-91b8-8ad61d263244"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Apogee Y Position"
- ],
- "metadata": {
- "id": "-LtYxB0lpOQ8"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 55,
"source": [
"print(\n",
" f'Apogee Y Position - Mean Value: {np.mean(dispersion_results[\"apogeeY\"]):0.3f} m'\n",
@@ -994,50 +1128,50 @@
"plt.xlabel(\"Apogee Y Position (m)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ifuJX7jYpORB"
+ },
+ "source": [
+ "### Impact Time"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "52j6t5-MpORB",
+ "outputId": "9cba31b1-c731-402f-b138-df5c72521408"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
- "Apogee Y Position - Mean Value: 107.614 m\n",
- "Apogee Y Position - Standard Deviation: 19.732 m\n"
+ "Impact Time - Mean Value: 62.911 s\n",
+ "Impact Time - Standard Deviation: 4.159 s\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "ocq6GmeNpOQ8",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "f3a45339-c0a6-4819-bd03-60f7fe6df963"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Impact Time"
- ],
- "metadata": {
- "id": "ifuJX7jYpORB"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 56,
"source": [
"print(\n",
" f'Impact Time - Mean Value: {np.mean(dispersion_results[\"impactTime\"]):0.3f} s'\n",
@@ -1052,50 +1186,50 @@
"plt.xlabel(\"Time (s)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "mYD4EQ5spORE"
+ },
+ "source": [
+ "### Impact X Position"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "uzL8-1UGpORF",
+ "outputId": "5c74f8d1-b909-44cf-a5c9-2f1b5e9dda1d"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
- "Impact Time - Mean Value: 62.911 s\n",
- "Impact Time - Standard Deviation: 4.159 s\n"
+ "Impact X Position - Mean Value: 364.105 m\n",
+ "Impact X Position - Standard Deviation: 46.835 m\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- }
- }
- ],
- "metadata": {
- "id": "52j6t5-MpORB",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "9cba31b1-c731-402f-b138-df5c72521408"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Impact X Position"
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
],
- "metadata": {
- "id": "mYD4EQ5spORE"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 57,
"source": [
"print(\n",
" f'Impact X Position - Mean Value: {np.mean(dispersion_results[\"impactX\"]):0.3f} m'\n",
@@ -1110,50 +1244,50 @@
"plt.xlabel(\"Impact X Position (m)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ajI4vr7QpORL"
+ },
+ "source": [
+ "### Impact Y Position"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "Q-ghmNVopORM",
+ "outputId": "cd0c81a8-a3fc-4710-cadf-a20cf0882bec"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
- "Impact X Position - Mean Value: 364.105 m\n",
- "Impact X Position - Standard Deviation: 46.835 m\n"
+ "Impact Y Position - Mean Value: 16.109 m\n",
+ "Impact Y Position - Standard Deviation: 36.402 m\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "uzL8-1UGpORF",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "5c74f8d1-b909-44cf-a5c9-2f1b5e9dda1d"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Impact Y Position"
- ],
- "metadata": {
- "id": "ajI4vr7QpORL"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 58,
"source": [
"print(\n",
" f'Impact Y Position - Mean Value: {np.mean(dispersion_results[\"impactY\"]):0.3f} m'\n",
@@ -1168,50 +1302,50 @@
"plt.xlabel(\"Impact Y Position (m)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "H7_H_eeXpORP"
+ },
+ "source": [
+ "### Impact Velocity"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "Ryx7KEEVpORP",
+ "outputId": "90cdcf97-affc-4f09-ed2a-9b854257a8a0"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
- "Impact Y Position - Mean Value: 16.109 m\n",
- "Impact Y Position - Standard Deviation: 36.402 m\n"
+ "Impact Velocity - Mean Value: -18.280 m/s\n",
+ "Impact Velocity - Standard Deviation: 1.503 m/s\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "Q-ghmNVopORM",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "cd0c81a8-a3fc-4710-cadf-a20cf0882bec"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Impact Velocity"
- ],
- "metadata": {
- "id": "H7_H_eeXpORP"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 59,
"source": [
"print(\n",
" f'Impact Velocity - Mean Value: {np.mean(dispersion_results[\"impactVelocity\"]):0.3f} m/s'\n",
@@ -1228,50 +1362,54 @@
"plt.xlabel(\"Velocity (m/s)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "9m19OV9upORS"
+ },
+ "source": [
+ "### Static Margin"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 675
+ },
+ "id": "a2Tpo9hjpORT",
+ "outputId": "94129858-cd6b-4af6-8f88-66923455a566"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
- "Impact Velocity - Mean Value: -18.280 m/s\n",
- "Impact Velocity - Standard Deviation: 1.503 m/s\n"
+ "Initial Static Margin - Mean Value: 1.998 c\n",
+ "Initial Static Margin - Standard Deviation: 0.326 c\n",
+ "Out of Rail Static Margin - Mean Value: 2.178 c\n",
+ "Out of Rail Static Margin - Standard Deviation: 0.330 c\n",
+ "Final Static Margin - Mean Value: 3.026 c\n",
+ "Final Static Margin - Standard Deviation: 0.347 c\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "Ryx7KEEVpORP",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "90cdcf97-affc-4f09-ed2a-9b854257a8a0"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Static Margin"
- ],
- "metadata": {
- "id": "9m19OV9upORS"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 60,
"source": [
"print(\n",
" f'Initial Static Margin - Mean Value: {np.mean(dispersion_results[\"initialStaticMargin\"]):0.3f} c'\n",
@@ -1305,54 +1443,50 @@
"plt.xlabel(\"Static Margin (c)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "mQzQELcJpORX"
+ },
+ "source": [
+ "### Maximum Velocity"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "nOu1O8MXpORY",
+ "outputId": "7510aec8-7b73-4751-f033-8367cd0c9bdc"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
- "Initial Static Margin - Mean Value: 1.998 c\n",
- "Initial Static Margin - Standard Deviation: 0.326 c\n",
- "Out of Rail Static Margin - Mean Value: 2.178 c\n",
- "Out of Rail Static Margin - Standard Deviation: 0.330 c\n",
- "Final Static Margin - Mean Value: 3.026 c\n",
- "Final Static Margin - Standard Deviation: 0.347 c\n"
+ "Maximum Velocity - Mean Value: 124.881 m/s\n",
+ "Maximum Velocity - Standard Deviation: 5.655 m/s\n"
]
},
{
- "output_type": "display_data",
"data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
+ "image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "a2Tpo9hjpORT",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 675
- },
- "outputId": "94129858-cd6b-4af6-8f88-66923455a566"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Maximum Velocity"
- ],
- "metadata": {
- "id": "mQzQELcJpORX"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 61,
"source": [
"print(\n",
" f'Maximum Velocity - Mean Value: {np.mean(dispersion_results[\"maxVelocity\"]):0.3f} m/s'\n",
@@ -1367,63 +1501,32 @@
"plt.xlabel(\"Velocity (m/s)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "Maximum Velocity - Mean Value: 124.881 m/s\n",
- "Maximum Velocity - Standard Deviation: 5.655 m/s\n"
- ]
- },
- {
- "output_type": "display_data",
- "data": {
- "image/svg+xml": "\r\n\r\n\r\n\r\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- }
- }
- ],
- "metadata": {
- "id": "nOu1O8MXpORY",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "7510aec8-7b73-4751-f033-8367cd0c9bdc"
- }
+ ]
},
{
"cell_type": "markdown",
+ "metadata": {
+ "id": "7MUVLAM-pORb"
+ },
"source": [
"### Number of Parachute Events\n",
"\n",
"This is usefull to check if the parachute was triggered in every flight."
- ],
- "metadata": {
- "id": "7MUVLAM-pORb"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 62,
- "source": [
- "plt.figure()\n",
- "plt.hist(dispersion_results[\"numberOfEvents\"])\n",
- "plt.title(\"Parachute Events\")\n",
- "plt.xlabel(\"Number of Parachute Events\")\n",
- "plt.ylabel(\"Number of Occurences\")\n",
- "plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "yhcWi2kCpORb",
+ "outputId": "dee54569-8213-46cc-e287-9fffd2b8e43c"
+ },
"outputs": [
{
- "output_type": "display_data",
"data": {
"image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
@@ -1432,56 +1535,49 @@
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "yhcWi2kCpORb",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "dee54569-8213-46cc-e287-9fffd2b8e43c"
- }
+ "source": [
+ "plt.figure()\n",
+ "plt.hist(dispersion_results[\"numberOfEvents\"])\n",
+ "plt.title(\"Parachute Events\")\n",
+ "plt.xlabel(\"Number of Parachute Events\")\n",
+ "plt.ylabel(\"Number of Occurences\")\n",
+ "plt.show()"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "### Drogue Parachute Trigger Time"
- ],
"metadata": {
"id": "4LpDYGpfpORf"
- }
+ },
+ "source": [
+ "### Drogue Parachute Trigger Time"
+ ]
},
{
"cell_type": "code",
"execution_count": 63,
- "source": [
- "print(\n",
- " f'Drogue Parachute Trigger Time - Mean Value: {np.mean(dispersion_results[\"drogueTriggerTime\"]):0.3f} s'\n",
- ")\n",
- "print(\n",
- " f'Drogue Parachute Trigger Time - Standard Deviation: {np.std(dispersion_results[\"drogueTriggerTime\"]):0.3f} s'\n",
- ")\n",
- "\n",
- "plt.figure()\n",
- "plt.hist(dispersion_results[\"drogueTriggerTime\"], bins=int(N**0.5))\n",
- "plt.title(\"Drogue Parachute Trigger Time\")\n",
- "plt.xlabel(\"Time (s)\")\n",
- "plt.ylabel(\"Number of Occurences\")\n",
- "plt.show()"
- ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "lvCksZG8pORf",
+ "outputId": "3efd19ed-11e9-41d1-8e66-04da384665ce"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
"Drogue Parachute Trigger Time - Mean Value: 13.338 s\n",
"Drogue Parachute Trigger Time - Standard Deviation: 0.347 s\n"
]
},
{
- "output_type": "display_data",
"data": {
"image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
@@ -1490,56 +1586,56 @@
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "lvCksZG8pORf",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "3efd19ed-11e9-41d1-8e66-04da384665ce"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Drogue Parachute Fully Inflated Time"
- ],
- "metadata": {
- "id": "nKSzDWi7pORi"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 64,
"source": [
"print(\n",
- " f'Drogue Parachute Fully Inflated Time - Mean Value: {np.mean(dispersion_results[\"drogueInflatedTime\"]):0.3f} s'\n",
+ " f'Drogue Parachute Trigger Time - Mean Value: {np.mean(dispersion_results[\"drogueTriggerTime\"]):0.3f} s'\n",
")\n",
"print(\n",
- " f'Drogue Parachute Fully Inflated Time - Standard Deviation: {np.std(dispersion_results[\"drogueInflatedTime\"]):0.3f} s'\n",
+ " f'Drogue Parachute Trigger Time - Standard Deviation: {np.std(dispersion_results[\"drogueTriggerTime\"]):0.3f} s'\n",
")\n",
"\n",
"plt.figure()\n",
- "plt.hist(dispersion_results[\"drogueInflatedTime\"], bins=int(N**0.5))\n",
- "plt.title(\"Drogue Parachute Fully Inflated Time\")\n",
+ "plt.hist(dispersion_results[\"drogueTriggerTime\"], bins=int(N**0.5))\n",
+ "plt.title(\"Drogue Parachute Trigger Time\")\n",
"plt.xlabel(\"Time (s)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "nKSzDWi7pORi"
+ },
+ "source": [
+ "### Drogue Parachute Fully Inflated Time"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "KCYKVFYXpORj",
+ "outputId": "8ae49853-0f08-4bf6-9bd8-91a7c9a9448d"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
"Drogue Parachute Fully Inflated Time - Mean Value: 15.106 s\n",
"Drogue Parachute Fully Inflated Time - Standard Deviation: 0.608 s\n"
]
},
{
- "output_type": "display_data",
"data": {
"image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
@@ -1548,56 +1644,56 @@
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "KCYKVFYXpORj",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "8ae49853-0f08-4bf6-9bd8-91a7c9a9448d"
- }
- },
- {
- "cell_type": "markdown",
- "source": [
- "### Drogue Parachute Fully Inflated Velocity"
- ],
- "metadata": {
- "id": "BvMCGZYHpORn"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 65,
"source": [
"print(\n",
- " f'Drogue Parachute Fully Inflated Velocity - Mean Value: {np.mean(dispersion_results[\"drogueInflatedVelocity\"]):0.3f} m/s'\n",
+ " f'Drogue Parachute Fully Inflated Time - Mean Value: {np.mean(dispersion_results[\"drogueInflatedTime\"]):0.3f} s'\n",
")\n",
"print(\n",
- " f'Drogue Parachute Fully Inflated Velocity - Standard Deviation: {np.std(dispersion_results[\"drogueInflatedVelocity\"]):0.3f} m/s'\n",
+ " f'Drogue Parachute Fully Inflated Time - Standard Deviation: {np.std(dispersion_results[\"drogueInflatedTime\"]):0.3f} s'\n",
")\n",
"\n",
"plt.figure()\n",
- "plt.hist(dispersion_results[\"drogueInflatedVelocity\"], bins=int(N**0.5))\n",
- "plt.title(\"Drogue Parachute Fully Inflated Velocity\")\n",
- "plt.xlabel(\"Velocity m/s)\")\n",
+ "plt.hist(dispersion_results[\"drogueInflatedTime\"], bins=int(N**0.5))\n",
+ "plt.title(\"Drogue Parachute Fully Inflated Time\")\n",
+ "plt.xlabel(\"Time (s)\")\n",
"plt.ylabel(\"Number of Occurences\")\n",
"plt.show()"
- ],
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "BvMCGZYHpORn"
+ },
+ "source": [
+ "### Drogue Parachute Fully Inflated Velocity"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 607
+ },
+ "id": "KxrpPUzqpORn",
+ "outputId": "9c102bdb-b805-4aa1-b3a2-1ac329c76976"
+ },
"outputs": [
{
- "output_type": "stream",
"name": "stdout",
+ "output_type": "stream",
"text": [
"Drogue Parachute Fully Inflated Velocity - Mean Value: 13.936 m/s\n",
"Drogue Parachute Fully Inflated Velocity - Standard Deviation: 3.091 m/s\n"
]
},
{
- "output_type": "display_data",
"data": {
"image/svg+xml": "\r\n\r\n\r\n\r\n",
"text/plain": [
@@ -1606,30 +1702,59 @@
},
"metadata": {
"needs_background": "light"
- }
+ },
+ "output_type": "display_data"
}
],
- "metadata": {
- "id": "KxrpPUzqpORn",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 607
- },
- "outputId": "9c102bdb-b805-4aa1-b3a2-1ac329c76976"
- }
+ "source": [
+ "print(\n",
+ " f'Drogue Parachute Fully Inflated Velocity - Mean Value: {np.mean(dispersion_results[\"drogueInflatedVelocity\"]):0.3f} m/s'\n",
+ ")\n",
+ "print(\n",
+ " f'Drogue Parachute Fully Inflated Velocity - Standard Deviation: {np.std(dispersion_results[\"drogueInflatedVelocity\"]):0.3f} m/s'\n",
+ ")\n",
+ "\n",
+ "plt.figure()\n",
+ "plt.hist(dispersion_results[\"drogueInflatedVelocity\"], bins=int(N**0.5))\n",
+ "plt.title(\"Drogue Parachute Fully Inflated Velocity\")\n",
+ "plt.xlabel(\"Velocity m/s)\")\n",
+ "plt.ylabel(\"Number of Occurences\")\n",
+ "plt.show()"
+ ]
},
{
"cell_type": "markdown",
- "source": [
- "### Error Ellipses\n"
- ],
"metadata": {
"id": "TlWXtnKMrlMI"
- }
+ },
+ "source": [
+ "### Error Ellipses\n"
+ ]
},
{
"cell_type": "code",
"execution_count": 69,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 837
+ },
+ "id": "DZRrk_bIr3iG",
+ "outputId": "b4a5a583-7f53-473a-bec2-2636cdf28a7c"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": "\r\n\r\n\r\n