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-project03/CompMech03-IVPs_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.
640 lines (640 sloc)
127 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": [ | |
"# Initial Value Problems - Project\n", | |
"\n", | |
"![Initial condition of firework with FBD and sum of momentum](../images/firework.png)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We are going to end this module with a __bang__ by looking at the flight path of a firework. Shown above is the initial condition of a firework, the _Freedom Flyer_ in (a), its final height where it detonates in (b), the applied forces in the __Free Body Diagram (FBD)__ in (c), and the __momentum__ of the firework $m\\mathbf{v}$ and the propellent $dm \\mathbf{u}$ in (d). \n", | |
"\n", | |
"The resulting equation of motion is that the acceleration is proportional to the speed of the propellent and the mass rate change $\\frac{dm}{dt}$ as such\n", | |
"\n", | |
"$$\\begin{equation}\n", | |
"m\\frac{dv}{dt} = u\\frac{dm}{dt} -mg - cv^2.~~~~~~~~(1)\n", | |
"\\end{equation}$$\n", | |
"\n", | |
"If we assume that the acceleration and the propellent momentum are much greater than the forces of gravity and drag, then the equation is simplified to the conservation of momentum. A further simplification is that the speed of the propellant is constant, $u=constant$, then the equation can be integrated to obtain an analytical rocket equation solution of [Tsiolkovsky](https://www.math24.net/rocket-motion/) [1,2], \n", | |
"\n", | |
"$$\\begin{equation}\n", | |
"m\\frac{dv}{dt} = u\\frac{dm}{dt}~~~~~(2.a)\n", | |
"\\end{equation}$$\n", | |
"\n", | |
"$$\\begin{equation}\n", | |
"\\frac{m_{f}}{m_{0}}=e^{-\\Delta v / u},~~~~~(2.b) \n", | |
"\\end{equation}$$\n", | |
"\n", | |
"where $m_f$ and $m_0$ are the mass at beginning and end of flight, $u$ is the speed of the propellent, and $\\Delta v=v_{final}-v_{initial}$ is the change in speed of the rocket from beginning to end of flight. Equation 2.b only relates the final velocity to the change in mass and propellent speed. When you integrate Eqn 2.a, you will have to compare the velocity as a function of mass loss. \n", | |
"\n", | |
"Your first objective is to integrate a numerical model that converges to equation (2.b), the Tsiolkovsky equation. Next, you will add drag and gravity and compare the results _between equations (1) and (2)_. Finally, you will vary the mass change rate to achieve the desired detonation height. \n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"1. Create a `simplerocket` function that returns the velocity, $v$, the acceleration, $a$, and the mass rate change $\\frac{dm}{dt}$, as a function of the $state = [position,~velocity,~mass] = [y,~v,~m]$ using eqn (2.a). Where the mass rate change $\\frac{dm}{dt}$ and the propellent speed $u$ are constants. The average velocity of gun powder propellent used in firework rockets is $u=250$ m/s [3,4]. \n", | |
"\n", | |
"$\\frac{d~state}{dt} = f(state)$\n", | |
"\n", | |
"$\\left[\\begin{array}{c} v\\\\a\\\\ \\frac{dm}{dt} \\end{array}\\right] = \\left[\\begin{array}{c} v\\\\ \\frac{u}{m}\\frac{dm}{dt} \\\\ \\frac{dm}{dt} \\end{array}\\right]$\n", | |
"\n", | |
"Use [two integration methods](../notebooks/03_Get_Oscillations.ipynb) to integrate the `simplerocket` function, one explicit method and one implicit method. Demonstrate that the solutions converge to equation (2.b) the Tsiolkovsky equation. Use an initial state of y=0 m, v=0 m/s, and m=0.25 kg. \n", | |
"\n", | |
"Integrate the function until mass, $m_{f}=0.05~kg$, using a mass rate change of $\\frac{dm}{dt}=0.05$ kg/s. \n", | |
"\n", | |
"_Hint: your integrated solution will have a current mass that you can use to create $\\frac{m_{f}}{m_{0}}$ by dividing state[2]/(initial mass), then your plot of velocity(t) vs mass(t)/mass(0) should match Tsiolkovsky's_" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n", | |
"%matplotlib inline\n", | |
"plt.rcParams.update({'font.size': 22})\n", | |
"plt.rcParams['lines.linewidth'] = 3" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def simplerocket(state,dmdt=0.05, u=250):\n", | |
" '''Computes the right-hand side of the differential equation\n", | |
" for the acceleration of a rocket, without drag or gravity, in SI units.\n", | |
" \n", | |
" Arguments\n", | |
" ---------- \n", | |
" state : array of three dependent variables [y v m]^T\n", | |
" dmdt : mass rate change of rocket in kilograms/s default set to 0.05 kg/s\n", | |
" u : speed of propellent expelled (default is 250 m/s)\n", | |
" \n", | |
" Returns\n", | |
" -------\n", | |
" derivs: array of three derivatives [v (u/m*dmdt-g-c/mv^2) -dmdt]^T\n", | |
" '''\n", | |
" \n", | |
" dstate = np.array([state[1], (u*dmdt)/state[2], -dmdt])\n", | |
" return dstate" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def heun_step(state1,rhs,dt,etol=0.000001,maxiters = 100):\n", | |
" '''Update a state to the next time increment using the implicit Heun's method.\n", | |
" \n", | |
" Arguments\n", | |
" ---------\n", | |
" state : array of dependent variables\n", | |
" rhs : function that computes the RHS of the DiffEq\n", | |
" dt : float, time increment\n", | |
" etol : tolerance in error for each time step corrector\n", | |
" maxiters: maximum number of iterations each time step can take\n", | |
" \n", | |
" Returns\n", | |
" -------\n", | |
" next_state : array, updated after one time increment'''\n", | |
" e=1\n", | |
" eps=np.finfo('float64').eps\n", | |
" next_state = state1 + rhs(state1)*dt\n", | |
" ################### New iterative correction #########################\n", | |
" for n in range(0,maxiters):\n", | |
" next_state_old = next_state\n", | |
" next_state = state1 + (rhs(state1)+rhs(next_state))/2*dt\n", | |
" e=np.sum(np.abs(next_state-next_state_old)/np.abs(next_state+eps))\n", | |
" if e<etol:\n", | |
" break\n", | |
" ############### end of iterative correction #########################\n", | |
" return next_state" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def rk2_step(state, rhs, dt):\n", | |
" '''Update a state to the next time increment using modified Euler's method.\n", | |
" \n", | |
" Arguments\n", | |
" ---------\n", | |
" state : array of dependent variables\n", | |
" rhs : function that computes the RHS of the DiffEq\n", | |
" dt : float, time increment\n", | |
" \n", | |
" Returns\n", | |
" -------\n", | |
" next_state : array, updated after one time increment'''\n", | |
" \n", | |
" mid_state = state + rhs(state) * dt*0.5 \n", | |
" next_state = state + rhs(mid_state)*dt\n", | |
" \n", | |
" return next_state" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#set initial conditions\n", | |
"y_0 = 0\n", | |
"v_0 = 0\n", | |
"m_0 = .25\n", | |
"\n", | |
"m_f = .05\n", | |
"dmdt = .05\n", | |
"N = 500\n", | |
"dt = 4/N\n", | |
"\n", | |
"#initialize array\n", | |
"num_sol_heun = np.zeros([N,3])\n", | |
"num_sol_rk2 = np.zeros([N,3])\n", | |
"\n", | |
"#IC's\n", | |
"num_sol_heun[0,0] = y_0\n", | |
"num_sol_heun[0,1] = v_0\n", | |
"num_sol_heun[0,2] = m_0\n", | |
"\n", | |
"num_sol_rk2[0,0] = y_0\n", | |
"num_sol_rk2[0,1] = v_0\n", | |
"num_sol_rk2[0,2] = m_0\n", | |
"\n", | |
"for i in range(N-1):\n", | |
" num_sol_heun[i+1] = heun_step(num_sol_heun[i],simplerocket,dt)\n", | |
"for i in range(N-1):\n", | |
" num_sol_rk2[i+1] = rk2_step(num_sol_rk2[i],simplerocket,dt)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"m = np.linspace(m_f,m_0,N)\n", | |
"delta_m = m/m_0\n", | |
"v_f = -250*np.log(delta_m)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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czAsLXNgbPwHdu26ir59+/JqeIwx1sBt3rzZ6qOPPnJv0qRJyYYNG66GhobeVxz766+/zAcPHuz33nvvefTp0ye3TZs2Rbq67s8//+wYFxf3X0hISD4gS3JHjRrluWHDBodZs2a59u7d+7Jy+du3b5+rfI7Fixc73L1713D48OHpa9asuSGRPOhfLCgooLi4uGol9KoMHz787rx589x/+OEHu+nTp6cDwNatW63u3LljOHr06HRTU1O1PU7atml4eHheeHh4npubm2VBQYHRwoULb/n7+xerO39sbKxNjx49sv/555+L1tbW5YDsm4Gnn3464MKFC2Y//vij7cSJEzMU5X/99VfrpUuXOpuampZv2bLlcr9+/fIUx2bOnOk0b9489/Hjx3uHhIT86+bmVjEw/qWXXvLOysoyeP755++tX78+ycTERABAfHy8SVhYmH9mZiav0F5LGhuQiHwAfArgeaWymQD+A5ABIAeAFQB7AAEAWsm394hoK4AZQohrdRM6ayjsPOyw4N8huBRxDW3a/A5b2ywcP34cpbm5ePb55yEx4pu/GWN1Z86cOXU2pV1d+/DDD0/o6lwDBgxoXpN6H330kSsALFmyJFE5YQSAsLCw+2+99VbK3Llz3RcvXtxkxYoVOutkmzZt2m1FEg4AUqkU8+fPv71hwwaHEydOWBYVFZGxsbHGr1fT0tIMAaBfv345ykk4AJiamgrlhFNb48ePv/fpp5+6rV271l6RiP/0008O8mN3NdWt6zY1MzMr/+WXXxIVSTgAeHl5lYwbN+7Oxx9/7L53714r5UT8m2++cQKAcePG3ancJnPnzk377bffbM+ePWu+aNEih88//zwVAHbt2mVx4cIFMwsLi7KVK1feVCThANC+ffvCd955J+WDDz5oqm3s7GFqh6YQ0RcAzgMYAuA0gMkAWggh7IUQ3YQQA4UQo+SPXYUQ9gBaApgC4CyAFwBckJ+HPeGsrAyxb58nevaULfojKStDwPvvIyUkBGX371dRmzHGWG1169YtR3k4Q+XN3t7+kSlAUlJSDP79919zCwuLssjIyBxV533mmWdyASA+Pl6rsdtVGTx4cHblfW5ubqVWVlZlxcXFpGmss0LHjh3vA8DMmTPdV69ebZOTk6Oze988PDxKQ0JCcs6dO2d+4sQJk/T0dGlsbKyNn59fgfIHiMrqo00D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rNgyKiqq6S233FJn06ZNfxojd7ox4snJyfbvf/+7erNmzZqULVu2denSpVs3atTovKFDh4bt37/fPz9iPX78OAMGDKhrZtGRkZFNf//994CTy5csWVK6d+/e9apVq9YiICCgTaVKlVpefPHFDWfOnFk+a12RkZFNzSz6888/P6XshP79+9c1s+iHHnqo5oljhw8f9nvkkUdqRkVFNS1dunTrwMDANtWqVWvRpk2bxg8++GBYWlparu5l165d/q1bt25sZtG9e/eul5ycbHfddVdtM4seNGhQ7ZyuGz9+fCUzi27Xrl1krl5IigQl4iI+Zma0vPBCAtavZ0mb61nOBUzkFjIy/Jg5M4JGjWDYsFiOJR/3dagiUkwMGjSo9v333x8RExNTtmnTpkk9e/Y82Lx586SUlBS/SZMmVVuxYkWulgJOSEjwa9++fdRTTz1VOzY2Nrhdu3aHu3XrlrB///5SY8eOrdmmTZsmWZPmvEpMTPT729/+1nDy5MlV27dvn7hs2bINDRo0yMx633zzzYpdu3ZtMnv27EqVKlU6ftlllx2MiIhIWbhwYWjfvn0j//nPf9Y4ub7rr79+P8C7775bJbvXS05OttmzZ1cyM+688879AGlpaXTp0iXypZdeCtu9e3dgu3btEi+99NKD9evXP7Z9+/bA0aNH10xKSvrLnGrdunVB7dq1a/Lzzz+XHTx48O7PP/98S+nSpd2wYcP2+Pv788knn1RJSkqy7K6dMGFCVYC77rprT+5bTwq7XCfiZtakIAMRKemCa9Wiw8qPSJ33OVFN/nifTU4uzccvB7Ax5Hy+vGciGekZPoxSRIq6/fv3+7/zzjvVQkND09esWbN22bJlv86aNWvLd999tyk2NnbtypUr17Vt2zYpN3Xde++9tWNiYspGRUUl//LLL2vmzZv3+1dffbV5y5Yta7p06ZKwdevWoIEDB0acaazx8fGlOnToELVgwYLQvn37HliwYMGmSpUqZb4Jbty4MXDo0KERx48ftxdffDFuw4YN62fNmrVl1apVG6ZMmbIpICDAPf/887W+/vrrcieuufPOO/f7+/u7b775psLBgwdPyYMmT55cITEx0b9t27aJjRs3TgWYNm1aaExMTNk2bdoc2bFjR8yCBQt+mzVr1pZly5b9unPnztWzZ8/eGBwcfNphOwsWLCjTuXPnxtu2bQt6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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.plot(num_sol_heun[:,2]/.25,num_sol_heun[:,1],'grey',label='Heun\\'s Method');\n", | |
"plt.plot(num_sol_rk2[:,2]/.25,num_sol_rk2[:,1],'b--',label='Runge Kutta Method');\n", | |
"plt.plot(delta_m,v_f,'r:',label='Tsiolkovsky');\n", | |
"plt.title('Simple Rocket');\n", | |
"plt.ylabel('v (m/s)');\n", | |
"plt.xlabel('$m_f/m_0$');\n", | |
"plt.grid(True);\n", | |
"plt.legend(loc='center left', bbox_to_anchor=(1,0.5));" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"2. You should have a converged solution for integrating `simplerocket`. Now, create a more relastic function, `rocket` that incorporates gravity and drag and returns the velocity, $v$, the acceleration, $a$, and the mass rate change $\\frac{dm}{dt}$, as a function of the $state = [position,~velocity,~mass] = [y,~v,~m]$ using eqn (1). Where the mass rate change $\\frac{dm}{dt}$ and the propellent speed $u$ are constants. The average velocity of gun powder propellent used in firework rockets is $u=250$ m/s [3,4]. \n", | |
"\n", | |
"$\\frac{d~state}{dt} = f(state)$\n", | |
"\n", | |
"$\\left[\\begin{array}{c} v\\\\a\\\\ \\frac{dm}{dt} \\end{array}\\right] = \n", | |
"\\left[\\begin{array}{c} v\\\\ \\frac{u}{m}\\frac{dm}{dt}-g-\\frac{c}{m}v^2 \\\\ \\frac{dm}{dt} \\end{array}\\right]$\n", | |
"\n", | |
"Use [two integration methods](../notebooks/03_Get_Oscillations.ipynb) to integrate the `rocket` function, one explicit method and one implicit method. Demonstrate that the solutions converge to equation (2.b) the Tsiolkovsky equation. Use an initial state of y=0 m, v=0 m/s, and m=0.25 kg. \n", | |
"\n", | |
"Integrate the function until mass, $m_{f}=0.05~kg$, using a mass rate change of $\\frac{dm}{dt}=0.05$ kg/s, . \n", | |
"\n", | |
"Compare solutions between the `simplerocket` and `rocket` integration, what is the height reached when the mass reaches $m_{f} = 0.05~kg?$\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def rocket(state,dmdt=0.05, u=250,c=0.18e-3):\n", | |
" '''Computes the right-hand side of the differential equation\n", | |
" for the acceleration of a rocket, with drag, in SI units.\n", | |
" \n", | |
" Arguments\n", | |
" ---------- \n", | |
" state : array of three dependent variables [y v m]^T\n", | |
" dmdt : mass rate change of rocket in kilograms/s default set to 0.05 kg/s\n", | |
" u : speed of propellent expelled (default is 250 m/s)\n", | |
" c : drag constant for a rocket set to 0.18e-3 kg/m\n", | |
" Returns\n", | |
" -------\n", | |
" derivs: array of three derivatives [v (u/m*dmdt-g-c/mv^2) -dmdt]^T\n", | |
" '''\n", | |
" dstate = np.array([state[1],u/state[2]*dmdt-9.81-c/state[2]*state[1]**2,-dmdt])\n", | |
" return dstate" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#set initial conditions\n", | |
"y_0 = 0\n", | |
"v_0 = 0\n", | |
"m_0 = .25\n", | |
"\n", | |
"m_f = .05\n", | |
"dmdt = .05\n", | |
"N = 500\n", | |
"dt = 4/N\n", | |
"\n", | |
"#initialize array\n", | |
"num_sol_heun2 = np.zeros([N,3])\n", | |
"num_sol_rk22 = np.zeros([N,3])\n", | |
"\n", | |
"#IC's\n", | |
"num_sol_heun2[0,0] = y_0\n", | |
"num_sol_heun2[0,1] = v_0\n", | |
"num_sol_heun2[0,2] = m_0\n", | |
"\n", | |
"num_sol_rk22[0,0] = y_0\n", | |
"num_sol_rk22[0,1] = v_0\n", | |
"num_sol_rk22[0,2] = m_0\n", | |
"\n", | |
"for i in range(N-1):\n", | |
" num_sol_heun2[i+1] = heun_step(num_sol_heun2[i],rocket,dt)\n", | |
"for i in range(N-1):\n", | |
" num_sol_rk22[i+1] = rk2_step(num_sol_rk22[i],rocket,dt)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"m = np.linspace(m_f,m_0,N)\n", | |
"delta_m = m/m_0\n", | |
"v_f = -250*np.log(delta_m)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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2hjziDEmoNRqJFJGPDw8aNOmDaNGDWHu3GN067YPD4/zveCnT1dn1qwmtGlTk/bt45kxI4GsrDIIgqsV0Hk0dixs2AB9+8Lo0aVfB5GKZsyYBhgThTFRjBnTIF/6ww+H5KT/7W/18qUPGhSak/7mm/l7Svv2bZKTPnVqvkCJ7t2b56R/8YV/vvRrronISV+48KJDIspCcnKye1ZWlmnWrFlqREREvrHf7dq1S2vevPnvjrM4fPiw+1dffVUHYPLkyXGNGjXK+QD19/fPnj59epynp6ddtWqV36pVqwrVw57bxo0bvTp27HjF5s2bqz/++ONJ8+bN2+vl5XXBh/Dbb79dNy0tze36669Pefrppw/nTrvrrrtSBgwYcNhay4QJE3L+zRs1apTZpUuXlLS0NLdPP/003xJaM2fODAS45557clalSUpK8gC4/vrrT1avXv2COri7u3PzzTefylu33D7//HP/m266KSI1NdXt008/3T127Nh84yBHjBhxCGDatGlBedPeeeedIIDBgwcnVyvod4RUWEUJxJOBa4D3gERjzCxjTG9jtLSDVHy33BLE0qWNiYlJZ9iwWGrVSslJs9aN9etDuP/+BjRocJzFi38lLS2t7Cp3+DAsWHD+/W23ld29RaTSadGiRUZgYGDm//73vxojRoxouHnzZq/LKWfZsmW+GRkZJjQ0NL1nz56n86Y3a9bs7PXXX58CsHjx4iL952PJkiU1unbtekViYqLXG2+8ETdp0qQDBeVbuXJlTYDBgwfnW8oRYOjQoYcB1qxZc8H977333sMAn3322QX/6dq3b5/HL7/84l+9evXs++67L2f5x06dOp0xxjBjxoygiRMn1inKOuevvfZa3Xvvvbe5j49P9n/+85+d99xzT4E92v369TvZvHnztM2bN1fPPRb/6NGjbvPmzavt4eFhR4wYcbiga6XiKkog3gC4BZjtfH8X8B8g3hjzmoauSGUQFubL1KlhHDxYg/feiycyMuGCdB+fE/zyy7dMnDiRBQsWcPDgwdKvVJ06sHMnDBvm2ATohhvy59EOnSJSSO7u7kybNm2vn59f1uTJk+tfddVVkXXq1Gl94403NnvjjTfqnDhxolCxwf79+z0BGjVqdNElDcPCwtIBDhw4UKTdy4YMGdL0+PHjHuPGjdv31FNPXTT4PHjwoCdA8+bNC6zDlVdemQ5w8uRJ95MnT+Y818CBA08EBARkbtiwocbWrVtz6vbRRx8FZmVl0adPn2N+fn45Q2Cuueaa1LFjxx44c+aM25NPPhnaoEGD1qGhoZF/+tOfwj777LOArKysAuu3d+9er7FjxzY2xrBo0aKd3bt3z/cfltyGDh16EGDSpEk5veJTpkypk5qa6tarV6/joaGhhZsRKhVGoQNxa222tfZba+1dQDDwGPCr8+tncAxdWaOhK1IZVKvmxvDhIWza1IDVq49x662xeHun0aHDr4Bj4s6GDRuYOnUqjzyyjDfe2E9qasEfxCWibl2YOhX+/e/8aWvWQFgYTJsGmWU4wVSkPJk4MQFr12PteiZOTMiXPm1afE76iy/m/x/0v/4Vl5NeUOC3YMHenPRHHjmaL/2nn3blpN99d/6JJWvX7shJv+WWk5f5lCXm9ttvT4mLi9s4derUvYMGDUquXbv22SVLlgQ888wzoc2bN4/csGGD9++VYZ3zVS71h3F7mXNazm1W9NZbbwVHR0dftMe+MHUoiLe3t7311luPWmuZNm1aTq/4rFmzAgHuv//+fN8DL7/8clJMTMymV155Zd8tt9xyND093W3OnDmBgwcPbhYVFXXFqVOn8lUiODg4o0OHDqeysrIYMWJEo9/7T86wYcOO1qxZM2vhwoW1kpOT3QGmT59eF+Cxxx7TJM1K6LJWTbHWHrfWTrHWdgSuAF4HEoAOOIau5P8QFKmgrr22FvPmhZGQ4MaTTzYlKOj88L3sbMOsWW145plG1KuXyn337WX79lL8HZt38yFr4ZlnIDERhg6Fp58uvXuLSKXi7++fPWzYsKNffPHFvp07d26NiYnZ2KNHj+OHDx+uNmLEiEa/d33jxo0zAPbt23fRQDkuLs4LoGHDhkX6s90777xzYPTo0YmHDh2q1r179yvWrl1b4Bjz+vXrZwDExMQUWIft27d7AdSsWTOrZs2a2bnTHnrooSMAX375ZWB2djbLly+vHhMT49OwYcOMPn36FLgDaZMmTc6OHTs2ecGCBXuTkpI2/vzzz9tCQ0PTo6OjfceNG5dv7oG3t7f96aefdnbu3Dll7dq1Nbt16xZ+qSUd/fz8sgcMGHA4LS3N7b333qszf/78mnv27PFu0aJF6sXqJBVbsZcvtNbutNaOBZoC7wIGuKzxZiLlWa1annTsGMUjjzzCkCFDaNWqFbt2RXDihOMPQCdP1uCf/2xCq1a+dOq0n1mzksjOLuXJnQkJsGuX42sPD3jssdK9n4hUWs2aNTv7j3/8IwFg+/btv7vDWbdu3U57enrauLg4r59++sk3b3psbGy1lStX+gH07NmzyD0Ub731VsJzzz134OjRox69evUKX758eb46XXfddScBPv/888CCypg2bVogwLXXXpvv/p07dz4THh6empCQ4Pntt9/W/PjjjwMBBgwYcLiwOy536dLlzIMPPngIYNOmTQW2WY0aNeyPP/64q2fPnsd/++033y5duoQnJSVdNBh/4oknDrm5uTFjxoy67733XhDAQw895KJNLqS0FTsQN8a0Msa8AcQBI5ynU4tbrkh5ZYwhNDSU/v378+KLNzNkyF78/M53VGRnu7F6dSMGDapPSMhR/vKXWA4fLqVdoRs2hJgYGDfO0RvevPmF6dbCvn2lc28RqZA2btzoNWnSpMCChknMnTs3AKBBgwa/24Ndp06drP79+x8GGDFiROOEhIScCYwpKSluDzzwQGh6errp1KlTSqdOnS4rLnj55ZeTXn755X0nTpzwuOmmm8IXL158QcA/evToZG9v7+zly5f7vfXWWxdMvJwzZ47frFmz6hpjePLJJwuc0HP33XcfBvjwww/rfPPNNxesHZ7b119/7Td37ly/zDzD/9LT082PP/7oD9CoUaOLtpm3t7f99ttvd99yyy1Ht27dWr1Lly4R+/fvL3DCZ8uWLTO6du16Ii4uzuuHH34IqFGjRtawYcMKnIwqFd9lBeLGmNrGmMeNMb8CG4EngfrAKmAojnHjIpVe8+Y1+OSTJhw86MOECfuJiEi6ID0xMZDx48MICYF77tlROpM7q1eHv/4VXnklX1Ldn3+GZs1g+HBH77mIVHmJiYnVRo4cGRYUFNSmTZs2V/Tt27dJnz59mjZt2rTVG2+80cDT09OOGzcuvjBlvf/++/GtW7c+vXXr1urh4eFX9ezZs1mfPn2aNmnS5KqlS5f6N27cOH3mzJmxxanvc889lzxhwoS4M2fOuN96663hC3Mt/xgREZHx9ttvx7m7u9sxY8aEXnnllS379evXJCoqKqJ///4tMjIyzLPPPnugd+/eBQ7rePjhh496eHjYBQsW1D5+/LhH7rXDc1u7dq3vHXfc0SIwMLDNddddF96vX78mPXv2bNaw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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.plot(num_sol_heun2[:,2]/.25,num_sol_heun2[:,1],'grey',label='Heun\\'s Method');\n", | |
"plt.plot(num_sol_rk22[:,2]/.25,num_sol_rk22[:,1],'b--',label='Runge Kutta Method');\n", | |
"plt.plot(delta_m,v_f,'r:',label='Tsiolkovsky');\n", | |
"plt.title('Rocket');\n", | |
"plt.ylabel('v (m/s)');\n", | |
"plt.xlabel('$m_f/m_0$');\n", | |
"plt.grid(True);\n", | |
"plt.legend(loc='center left', bbox_to_anchor=(1,0.5));" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"For Heun's Method, the height at m_f is 594.4315240891725 m for the simplerocket integration method\n", | |
"and 423.6247678013772 m for the rocket integration method.\n", | |
"For the Runge Kutta Method, the height at m_f is 594.4270986060824 m for the simplerocket integration method\n", | |
"and 423.62470691387904 m for the rocket integration method.\n" | |
] | |
} | |
], | |
"source": [ | |
"heun_h = num_sol_heun[:,0]\n", | |
"rk2_h = num_sol_rk2[:,0]\n", | |
"heun2_h = num_sol_heun2[:,0]\n", | |
"rk22_h = num_sol_rk22[:,0]\n", | |
"print('For Heun\\'s Method, the height at m_f is',heun_h[-1],'m for the simplerocket integration method' '\\n'\n", | |
" 'and',heun2_h[-1],'m for the rocket integration method.')\n", | |
"print('For the Runge Kutta Method, the height at m_f is',rk2_h[-1],'m for the simplerocket integration method' '\\n'\n", | |
" 'and',rk22_h[-1],'m for the rocket integration method.')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"3. Solve for the mass change rate that results in detonation at a height of 300 meters. Create a function `f_dm` that returns the final height of the firework when it reaches $m_{f}=0.05~kg$. The inputs should be \n", | |
"\n", | |
"$f_{m}= f_{m}(\\frac{dm}{dt},~parameters)$\n", | |
"\n", | |
"where $\\frac{dm}{dt}$ is the variable we are using to find a root and $parameters$ are the known values, `m0=0.25, c=0.18e-3, u=250`. When $f_{m}(\\frac{dm}{dt}) = 0$, we have found the correct root. \n", | |
"\n", | |
"Plot the height as a function of time and use a star to denote detonation at the correct height with a `'*'`-marker\n", | |
"\n", | |
"Approach the solution in two steps, use the incremental search [`incsearch`](../notebooks/04_Getting_to_the_root.ipynb) with 5-10 sub-intervals _we want to limit the number of times we call the function_. Then, use the modified secant method to find the true root of the function.\n", | |
"\n", | |
"a. Use the incremental search to find the two closest mass change rates within the interval $\\frac{dm}{dt}=0.05-0.4~kg/s.$\n", | |
"\n", | |
"b. Use the modified secant method to find the root of the function $f_{m}$.\n", | |
"\n", | |
"c. Plot your solution for the height as a function of time and indicate the detonation with a `*`-marker." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def f_m(dmdt,m0=0.25, c=0.18e-3, u=250):\n", | |
" ''' define a function f_m(dmdt) that returns \n", | |
" height_desired-height_predicted[-1]\n", | |
" here, the time span is based upon the value of dmdt\n", | |
" \n", | |
" arguments:\n", | |
" ---------\n", | |
" dmdt: the unknown mass change rate\n", | |
" m0: the known initial mass\n", | |
" c: the known drag in kg/m\n", | |
" u: the known speed of the propellent\n", | |
" \n", | |
" returns:\n", | |
" --------\n", | |
" error: the difference between height_desired and height_predicted[-1]\n", | |
" when f_m(dmdt)= 0, the correct mass change rate was chosen\n", | |
" '''\n", | |
" #set initial conditions\n", | |
" y_0 = 0\n", | |
" v_0 = 0 \n", | |
" m_0 = .25\n", | |
" m_f = .05\n", | |
" \n", | |
" time = (m_0-m_f)/dmdt\n", | |
" t = np.linspace(0,time,10000)\n", | |
" dt = t[1]-t[0]\n", | |
" \n", | |
" N = int(time/dt)\n", | |
" \n", | |
" h_desired = 300\n", | |
"\n", | |
" #initialize solution array\n", | |
" height = np.zeros([N,3])\n", | |
"\n", | |
" #Set intial conditions\n", | |
" height[0,0] = y_0\n", | |
" height[0,1] = v_0\n", | |
" height[0,2] = m_0\n", | |
"\n", | |
" for i in range(N-1):\n", | |
" height[i+1] = rk2_step(height[i],lambda state: rocket(state,dmdt=dmdt,u=250),dt)\n", | |
" h_exp = height[:,0]\n", | |
" error = h_desired - h_exp[-1]\n", | |
"\n", | |
" return error" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def incsearch(func,xmin,xmax,ns=50):\n", | |
" '''incsearch: incremental search root locator\n", | |
" xb = incsearch(func,xmin,xmax,ns):\n", | |
" finds brackets of x that contain sign changes\n", | |
" of a function on an interval\n", | |
" arguments:\n", | |
" ---------\n", | |
" func = name of function\n", | |
" xmin, xmax = endpoints of interval\n", | |
" ns = number of subintervals (default = 50)\n", | |
" returns:\n", | |
" ---------\n", | |
" xb(k,1) is the lower bound of the kth sign change\n", | |
" xb(k,2) is the upper bound of the kth sign change\n", | |
" If no brackets found, xb = [].'''\n", | |
" x = np.linspace(xmin,xmax,ns)\n", | |
" f = np.empty(ns)\n", | |
" for i in range(ns):\n", | |
" f[i] = func(x[i])\n", | |
" sign_f = np.sign(f)\n", | |
" delta_sign_f = sign_f[1:]-sign_f[0:-1]\n", | |
" i_zeros = np.nonzero(delta_sign_f!=0)\n", | |
" nb = len(i_zeros[0])\n", | |
" xb = np.block([[ x[i_zeros[0]+1]],[x[i_zeros[0]] ]] )\n", | |
"\n", | |
" \n", | |
" if nb==0:\n", | |
" print('no brackets found\\n')\n", | |
" print('check interval or increase ns\\n')\n", | |
" else:\n", | |
" print('number of brackets: {}\\n'.format(nb))\n", | |
" return xb" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def mod_secant(func,dx,x0,es=0.0001,maxit=50):\n", | |
" '''mod_secant: Modified secant root location zeroes\n", | |
" root,[fx,ea,iter]=mod_secant(func,dfunc,xr,es,maxit,p1,p2,...):\n", | |
" uses modified secant method to find the root of func\n", | |
" arguments:\n", | |
" ----------\n", | |
" func = name of function\n", | |
" dx = perturbation fraction\n", | |
" xr = initial guess\n", | |
" es = desired relative error (default = 0.0001 )\n", | |
" maxit = maximum allowable iterations (default = 50)\n", | |
" p1,p2,... = additional parameters used by function\n", | |
" returns:\n", | |
" --------\n", | |
" root = real root\n", | |
" fx = func evaluated at root\n", | |
" ea = approximate relative error ( )\n", | |
" iter = number of iterations'''\n", | |
"\n", | |
" iter = 0;\n", | |
" xr=x0\n", | |
" for iter in range(0,maxit):\n", | |
" xrold = xr;\n", | |
" dfunc=(func(xr+dx)-func(xr))/dx;\n", | |
" xr = xr - func(xr)/dfunc;\n", | |
" if xr != 0:\n", | |
" ea = abs((xr - xrold)/xr) * 100;\n", | |
" else:\n", | |
" ea = abs((xr - xrold)/1) * 100;\n", | |
" if ea <= es:\n", | |
" break\n", | |
" return xr,[func(xr),ea,iter]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"number of brackets: 1\n", | |
"\n", | |
"The two closest mass change rates are [0.08571429] and [0.07857143]\n", | |
"The root of f_m is 0.07910372921028956\n" | |
] | |
} | |
], | |
"source": [ | |
"change_rate = incsearch(f_m,.05,.4)\n", | |
"root_fm = mod_secant(f_m,.0001,.08571429,es=.000001)\n", | |
"print('The two closest mass change rates are',change_rate[0],'and',change_rate[1])\n", | |
"print('The root of f_m is',root_fm[0])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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U9LS0vxObDdz5sz4Xr16Na9Tp067qKioDgkJCW0vvfTSU7/55ptY33q33nrrydkx+MbkG5uvuXPnVh8wYECzxMTEtlFRUR1q1arVrlevXs2/+OKLfCdX9j3Ov//977pt27Y9PS4urr2Zddy9e3cEwIYNG6KGDh3auHHjxmfGxMR0iI2Nbd+gQYOzzj///BaPPvpo3cL+PAtSUPJ3qvfRDDDgXZ99uR+nAHHOuYHOuX0lFaCISGmZMGECM2fOJD09nauuuorvv/8+1CFJefL3vzdg2bI47rzz5FCHUhSrVq2KfuWVVxIALr300v2+ZYyjQ4MAACAASURBVF9//XU1gObNmx+Ji4vLdz6jtm3bHgJYunRpteK2K6xRo0adMn78+CYnnXRSxgUXXJBiZm7GjBl1e/bs2fLAgQNVunfv3uqll16q16JFiyNdunRJ2b9/f+TkyZPrDxs2LN+RWcOHD2905ZVXtvjf//4X37hx47S+ffvuT0hISP/4449rX3DBBa3ffvvtk7Lrtm/f/vAVV1xx/NL4FVdcscf34Xvce+65J7FPnz6nf/rpp7USEhLS+/Tps79JkyZp8+fPP6l///6tHnvsMb+J2g033NBo/PjxTaKjo13Pnj33t2nT5rCZsXHjxqjOnTu3fu211xIyMzPt/PPPP9CrV68DJ5988rHvvvuu+jPPPJMY7M/Tn4B/zTjnNmY/N7NXgAW++0REKrJbb72VDz/8kDVr1nDzzTfTtm3bUIck5UFMTAeOHTvRk/T66wm8/noC0dGOtLTlIYwsoCeffLLO//73vxrp6em2bdu26BUrVlR3ztmYMWO2Dx06NEfy99tvv8UAnHLKKcf8Ha9hw4bHANavXx9T3HaFNWPGjLpLliz5uUOHDkcBdu3aFXHOOeecvnr16tjOnTufXqNGjczffvttZZ06dTIBFi1aFOtN4ur+85//3NayZcvjcU2aNClh2rRp9Zo3b370nXfeWde+ffuj2WWvvfZazeHDhzcbOXLkqb169VqZkJCQef311++//vrr95tZHYCZM2duyC/Gd999N37ixIkNExIS0t966611vXr1OpRdNmvWrOoDBw5scccddzTu27fvwbZt26blbv/ee+/V+fLLL3/p2bNnjvWqH3zwwXq7d++OGjRo0K7p06dv8r315MiRI5acnFzontSCFPqmFufccOfc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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"y_0 = 0\n", | |
"v_0 = 0\n", | |
"m_0 = .25 \n", | |
"m_f = .05\n", | |
"h_desired = 300\n", | |
"dmdt = 0.07910372921028956\n", | |
"\n", | |
"time = (m_0-m_f)/dmdt\n", | |
"t = np.linspace(0,time,10000)\n", | |
"dt = t[1] - t[0]\n", | |
" \n", | |
"N = int(time/dt)\n", | |
"t_scale = np.linspace(0,time,N)\n", | |
"\n", | |
"#initialize solution array\n", | |
"height = np.zeros([N,3])\n", | |
"\n", | |
"#Set intial conditions\n", | |
"height[0,0] = y_0\n", | |
"height[0,1] = v_0\n", | |
"height[0,2] = m_0\n", | |
"\n", | |
"for i in range(N-1):\n", | |
" height[i+1] = rk2_step(height[i],lambda state: rocket(state,dmdt=dmdt,u=250),dt)\n", | |
"h_exp = height[:,0]\n", | |
"\n", | |
"plt.plot(t_scale[-1],h_desired,'r*',label='300 meters');\n", | |
"plt.plot(t_scale,h_exp,'k:');\n", | |
"plt.title('Height Over Time');\n", | |
"plt.xlabel('time (s)');\n", | |
"plt.ylabel('height (m)');\n", | |
"plt.grid(True);\n", | |
"plt.legend(loc='center left', bbox_to_anchor=(1,0.5));" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## References\n", | |
"\n", | |
"1. Math 24 _Rocket Motion_. <https://www.math24.net/rocket-motion/\\>\n", | |
"\n", | |
"2. Kasdin and Paley. _Engineering Dynamics_. [ch 6-Linear Momentum of a Multiparticle System pp234-235](https://www.jstor.org/stable/j.ctvcm4ggj.9) Princeton University Press \n", | |
"\n", | |
"3. <https://en.wikipedia.org/wiki/Specific_impulse>\n", | |
"\n", | |
"4. <https://www.apogeerockets.com/Rocket_Motors/Estes_Motors/13mm_Motors/Estes_13mm_1_4A3-3T>" | |
] | |
} | |
], | |
"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 | |
} |