Skip to content
Permalink
fd082fa479
Switch branches/tags

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?
Go to file
 
 
Cannot retrieve contributors at this time
706 lines (706 sloc) 130 KB
{
"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': 20})\n",
"plt.rcParams['lines.linewidth'] = 3"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#Initial conditions:\n",
"y0 = 0 #m\n",
"v0 = 0 #m/s\n",
"m0 = 0.25 #kg"
]
},
{
"cell_type": "code",
"execution_count": 3,
"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.zeros(np.shape(state))\n",
" g = 9.81 #m/s^2\n",
" dstate = np.array([state[1], (u/state[2])*dmdt, -dmdt])\n",
" \n",
" return dstate"
]
},
{
"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": [
"mf = 0.05 #kg\n",
"tf = (m0-mf)/0.05\n",
"N = 100\n",
"t = np.linspace(0,tf,N)\n",
"dt = t[1] - t[0]\n",
"num_sol_1 = np.zeros([N,3])\n",
"num_sol_1[0,0] = y0\n",
"num_sol_1[0,1] = v0\n",
"num_sol_1[0,2] = m0\n",
"\n",
"for i in range(N-1):\n",
" num_sol_1[i+1] = rk2_step(num_sol_1[i], simplerocket, dt)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def heun_step(state,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 = state + rhs(state)*dt\n",
" ################### New iterative correction #########################\n",
" for n in range(0,maxiters):\n",
" next_state_old = next_state\n",
" next_state = state + (rhs(state)+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": 7,
"metadata": {},
"outputs": [],
"source": [
"mf = 0.05 #kg\n",
"tf = (m0-mf)/0.05\n",
"N = 100\n",
"t = np.linspace(0,tf,N)\n",
"dt = t[1] - t[0]\n",
"num_sol_2 = np.zeros([N,3])\n",
"num_sol_2[0,0] = y0\n",
"num_sol_2[0,1] = v0\n",
"num_sol_2[0,2] = m0\n",
"\n",
"for i in range(N-1):\n",
" num_sol_2[i+1] = heun_step(num_sol_2[i], simplerocket, dt)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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qVatmguiKxtK7a25K0WjRoNYvfqGzM+dOy9hx45vXBiRUqXDzp07GTp0KHXq1MHb25urrrqKu+++m127cleuj4iIyPM24IwZMzDGMGPGjGztISEhhISEcOHCBcaMGZNZN61hw4a88sor2HnUbNe2bds4e/YszZs3t5uEAMLDwwkICMgWD0BkZGTmLUxjDBMnTsy23x9//MHAgQOpUaMGXl5e1KlThxEjRnD48OE8fwbJycmMHz+e0NBQvL29adCgAc8//zwpKSmF+j6uoFdEpUCnTj+yfXs1mjY9j5cXeHgM4cKFG/HzC3R1aEq5xKJFixgwYACpqan07duXhg0bcujQIebNm8fPP//M8uXLueaaa4p9ntTUVG666SYOHz5M79698fDwYMGCBYwdO5akpCQmTCi4IH9goPX/08OHD3P+/HkqVKiQb//WrVszYcIEnn/+eerVq8fQoUMzt2V9ZjR9+nQefPBBvL29ueWWW6hTpw579uzhk08+4ccff2Tt2rV2CzHfcccdrF+/noEDB+Lp6cn333/PxIkTiY6O5ocffiidk61FRF+FfLVt21ZKSkzMIjl//tLpli1rWWLnUiVr+/bteW7DqmlYJl7FlXGcCRMm5Pny9/cXQGJiYjL3i4uLk4CAAAkMDJS//vor2zG3bdsmFSpUkDZt2mRr79q1a54xT58+XQCZPn16tvZ69eoJIL1795YLFy5kth87dkz8/f3F399fUlJSCvye6enp0r59ewGkVatW8s4778jGjRslOTm5wJ9P165d7W7btWuXeHp6SoMGDeTQoUPZti1dulTc3NykX79+2dozfgZXX321xMXFZbYnJiZKx44dBZDPP/+8wO/jiPx+17MCoiWfv60u/+Nell4lmYhERKKi7sl2yqioN0r0fKpkaCJy/LtmTURvvPGGAPLOO+/YPe7IkSMFyJakipOI9uzZk2ufwYMHCyBbt24t1Hc9cOCAREREZPtOnp6e0qFDB3n55ZflzJkzufbJLxFlfMeffvrJ7vZ+/fqJu7u7nD17NrMt42dgL9ksX75cAImIiCjU9yksZyUivTVXinTq9Dnr1i2ladOjPP44/PLLi2zdehfVq1d3dWhKFZn1d8i+kJAQDhw4kK1tzRqrmtfmzZtzPTMB2L3bKgu5Y8cOmjZtWqzY/P397Y5kq1OnDgCnT5/Otc2eunXr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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"m0 = 0.25\n",
"mf = 0.05\n",
"u = 250\n",
"m = np.linspace(mf,m0,20)\n",
"dv = np.log(m/m0)*u\n",
"\n",
"plt.plot(num_sol_2[:,2]/m0,num_sol_2[:,1], color = 'black',label = 'Heun Step')\n",
"plt.plot(num_sol_1[:,2]/m0,num_sol_1[:,1], '--', color = 'yellow',label = 'RK-2')\n",
"plt.plot(m/m0,-dv, 'o', label = 'Tsiolkovsky')\n",
"plt.xlabel('Mass ratio')\n",
"plt.ylabel('Velocity (m/s)')\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"All solutions converge to the Tsiolkovsky equation because the simple rocket equation has the same assumptions as the Tsiolkovsky equation (no gravity or drag effects considered)."
]
},
{
"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": 9,
"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.zeros(np.shape(state))\n",
" g = 9.81\n",
" dstate = np.array([state[1], ((u/state[2])*dmdt - g - (c/(state[2])*state[1]**2)), -dmdt])\n",
" return dstate"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"#Initial conditions:\n",
"y0 = 0 #m\n",
"v0 = 0 #m/s\n",
"m0 = 0.25 #kg\n",
"\n",
"#Final Conditions:\n",
"mf = 0.05 #kg\n",
"\n",
"tf = (m0-mf)/0.05\n",
"N = 100\n",
"t = np.linspace(0,tf,N)\n",
"dt = t[1] - t[0]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"num_sol_rk2 = np.zeros([N,3])\n",
"num_sol_rk2[0,0] = y0\n",
"num_sol_rk2[0,1] = v0\n",
"num_sol_rk2[0,2] = m0\n",
"\n",
"num_sol_heun = np.zeros([N,3])\n",
"num_sol_heun[0,0] = y0\n",
"num_sol_heun[0,1] = v0\n",
"num_sol_heun[0,2] = m0\n",
"\n",
"for i in range(N-1):\n",
" num_sol_rk2[i+1] = rk2_step(num_sol_rk2[i], rocket, dt)\n",
" num_sol_heun[i+1] = heun_step(num_sol_heun[i], rocket, dt)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"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": [
"m = np.linspace(m0,mf,20)\n",
"dv = -np.log(m/m0)*250\n",
"\n",
"plt.xlabel('Mass ratio')\n",
"plt.ylabel('Velocity (m/s)')\n",
"plt.plot(m/m0,dv, 'o', label = 'Tsiolkovsky')\n",
"plt.plot(num_sol_heun[:,2]/m0,num_sol_heun[:,1], color = 'black', label = 'Heun')\n",
"plt.plot(num_sol_rk2[:,2]/m0,num_sol_rk2[:,1], '--', label = 'RK-2')\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solutions considering drag and effects of gravity would not convert to the Tsiolkovsky equation because this equation does not consider such effects."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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IyO5dSv/z4ODg4OJjIykVq1aPPXUU0yaNClbnTv53I6ORpYXa60vVFASiIoZbzdnxj9QL2179tbTbD5+1Y4tEqXV7NmzWblypcUv+wsXLqT9xh0eHl7UTQPgyJEjfPXVV5nKFi1axNq1awkLC8tz+PawYcPw8/Pj7bffZuvWrdn2m0wmq+Wm6927N/7+/syePZvNmzdn2vf5559z/PhxunTpQpUqVQAICAhg0KBBnD9/npdffjnbv0FsbGyOXY+BgYGsXbuWBg0a8Oyzz/Lpp59m2n8nnzt1KH/qYIqiJs+IiqHu9SvStW4FVu43uib+b/4efh/TATdzbjohrGHLli188cUXVKxYkfbt21OtWjUATpw4wdKlS7l9+za9evWif//+dmlf9+7deemll1i2bBmNGjVKm0fk5ubG999/n+vQbTC+XOfOnZuWluiee+6hXr16ODg4cOrUKTZt2sTVq1eJjy/8mmBeXl5MnTqVAQMGEBERwYABA6hSpQrbt29nxYoVVKxYkW+++SbTMRMnTmTv3r1MnjyZNWvW0K1bN1xcXDhx4gR//PEHv/32Gx07drR4vYCAAFavXk23bt14+eWXiY+P54033rjjz33PPffw8ccfM3LkSPr374+Xlxd+fn6Zhs7bVG59iPLK/GrWrJkuKuev39b1/71cV311ia766hL9yR8Hi+zad4P9+/fbuwl2d+rUKT1x4kTdu3dvXbNmTe3t7a2dnZ11xYoV9X333ad//PFHnZKSkumYadOmaUBPmzYtU3nVqlV11apVLV4nIiJCG1812Q0ZMkQD+sSJE2llq1ev1oAeN26c3rhxo77nnnu0t7e39vLy0l27dtVbt27Ndp5x48ZpQK9evTrbvhMnTujRo0frsLAw7erqqr29vXWtWrX0Y489phcsWJDr35GlNuVm69atunfv3rpcuXLa2dlZBwcH61GjRumzZ89arB8bG6vfe+893aBBA+3u7q69vLx0nTp19JgxY/TFixdz/XvSWusbN27otm3bakC/+eabhfrcn376qa5du7Z2cXHRQI7/nhnl9+cI2KZz+W5V2k79vyVR8+bNdUHTixTGj5v/4a2FewFwclAseb49tSv6FNn1S7MDBw5Qp04dezdDWLBmzRo6derEuHHjLA4/FsVHfn+OlFLbtdbNc9ovz4iKsUdbVqF51TIAJJs0r87d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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.xlabel('Mass ratio')\n",
"plt.ylabel('Height (m)')\n",
"plt.plot(num_sol_2[:,2]/m0, num_sol_2[:,0], label = 'Simple rocket')\n",
"plt.plot(num_sol_heun[:,2]/m0, num_sol_heun[:,0], label = 'Rocket')\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see that the simple rocket height is higher and decreases faster than the rocket solution because effects of drag and gravity are not accounted for in simple rocket."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Height for Simple Rocket: 597.69 m.\n"
]
}
],
"source": [
"print('Height for Simple Rocket:', round(num_sol_2[-1,0],3), 'm.')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Height for Rocket: 425.443 m.\n"
]
}
],
"source": [
"print('Height for Rocket:', round(num_sol_heun[-1,0],3), 'm.')"
]
},
{
"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": 16,
"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",
" mf = 0.05 #kg\n",
" tf = (m0-mf)/dmdt\n",
" \n",
" height_desired = 300 #m\n",
" # initialize array\n",
" t = np.linspace(0,tf,1000)\n",
" dt = t[1] - t[0]\n",
" N = int(tf/dt)\n",
" num_sol_heun = np.zeros([N,3])\n",
" num_sol_heun[0,0] = 0\n",
" num_sol_heun[0,1] = 0\n",
" num_sol_heun[0,2] = m0\n",
"\n",
" for i in range(N-1):\n",
" num_sol_heun[i+1] = heun_step(num_sol_heun[i], lambda state: rocket(state,dmdt = dmdt, u = u), dt)\n",
" \n",
" error = height_desired-num_sol_heun[-1,0]\n",
" \n",
" return error"
]
},
{
"cell_type": "code",
"execution_count": 17,
"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",
" \n",
" x = np.linspace(xmin,xmax,ns)\n",
" f = np.zeros(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",
" 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": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"number of brackets: 1\n",
"\n",
"0.08571428571428572\n",
"0.07857142857142857\n"
]
}
],
"source": [
"mn = 0.05\n",
"mx = 0.4\n",
"dm = np.linspace(mn,mx,100)\n",
"\n",
"xb = incsearch(f_m,mn,mx)\n",
"print(xb[0,:][0])\n",
"print(xb[1,:][0])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"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": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0789035542696702\n"
]
}
],
"source": [
"dmdt,out = mod_secant(f_m,0.0001,0.08,es=0.0001) # <-- solution line\n",
"print(dmdt)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"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": [
"m0 = 0.25 #kg\n",
"mf = 0.05 #kg\n",
"tf = (m0-mf)/0.0789035542696702\n",
" \n",
"height_desired = 300 #m\n",
"# initialize array\n",
"t = np.linspace(0,tf,1000)\n",
"dt = t[1] - t[0]\n",
"N = int(tf/dt)\n",
"num_sol_heun = np.zeros([N,3])\n",
"num_sol_heun[0,0] = 0\n",
"num_sol_heun[0,1] = 0\n",
"num_sol_heun[0,2] = m0\n",
"\n",
"for i in range(N-1):\n",
" num_sol_heun[i+1] = heun_step(num_sol_heun[i], lambda state: rocket(state,dmdt = 0.0789035542696702, u = 250), dt)\n",
"\n",
"plt.xlabel('Time (s)')\n",
"plt.ylabel('Height(m)')\n",
"plt.plot(t[:N], num_sol_heun[:,0], label = 'Rocket')\n",
"plt.plot(t[-1], 300, '*', label = 'desired height')\n",
"plt.legend();"
]
},
{
"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
}