×
Samples Blogs Make Payment About Us Reviews 4.9/5 Order Now

Create a Program to Create Rocket Computational System in Python Assignment Solution

July 10, 2024
Dr. Sophia Nguyen
Dr. Sophia
🇸🇬 Singapore
Python
Dr. Sophia Nguyen holds a Doctorate in Computer Engineering from an esteemed university in Singapore and has completed over 900 assignments in Python file handling. Dr. Nguyen's expertise spans across areas such as file I/O optimizations, concurrency in file operations, and developing scalable file management systems. She excels in handling large datasets, implementing efficient error recovery strategies, and integrating file operations into web applications.
Key Topics
  • Instructions
  • Requirements and Specifications
Tip of the day
Use the REPL (Read-Eval-Print Loop) to test your code interactively, and practice writing concise, readable expressions to harness Scala’s powerful syntax effectively.
News
In 2024, universities abroad, like Dublin City University, have introduced cutting-edge programming courses, including Computer Engineering programs focusing on AI and machine learning.

Instructions

Objective

If you're looking to create a rocket computational system using Python, you're about to embark on an exciting coding journey! Python's versatility and user-friendly nature make it the perfect choice for this project. However, we understand that tackling such an assignment might be challenging at times. If you ever find yourself in need of assistance with your Python assignment, don't hesitate to seek help. There are plenty of resources and experts available online who can guide you through the process, providing valuable insights and ensuring your success. So, embrace the challenge, explore the possibilities, and remember, help is just a click away!

Requirements and Specifications

program to create rocket computational system in python

Source Code

QUESTION 1

import numpy as np from scipy.integrate import solve_ivp from matplotlib import pyplot as plt # Constants Grav = 9.81 RocketMass = 1000 # kg JetArea = 0.1**2*np.pi JetVel = 1500.0 #m/s def rocket(t, state): h,u,m = state if m < RocketMass: DeltaM = 0.0 else: DeltaM = -JetArea*JetVel # acceleration DeltaV = -JetVel/m*DeltaM-Grav return [u, DeltaV, DeltaM] # dhdt, dudt, dmdt # event for when rocket crases back to eart def hit_ground(t,y): return y[0] hit_ground.terminal = True hit_ground.direction = -1 # event for burnout def burnout(t,y): return y[2] - RocketMass burnout.terminal = False burnout.direction = -1 # event for apogee def apogee(t, y): return y[1] apogee.terminal = False apogee.direction = -1 # Launch a rocket with 1500kg of fuel and see what happens sol = solve_ivp(rocket, [0, 3600], # 1 hour of flight maximum) [0.0, 0.0, RocketMass + 1500.0], # initial conditions method = 'LSODA', # stiff ODE solver dense_output = True, events = (burnout, apogee, hit_ground)) # Interpret results print('Burn out at t={:.2f}s, maximum velocity is {:.2f} m/s'.format(sol.t_events[0][0], sol.y_events[0][0][1])) print('Apogee at t={:.2f}s, maximum altitude is {:.2f} km'.format(sol.t_events[1][0], sol.y_events[1][0][0]/1000)) print('Impact at t={:.2f}s'.format(sol.t_events[2][0])) # Plot a graph t = np.linspace(0.0, sol.t_events[2][0], 500) h = sol.sol(t) u = h[1] m = h[2] plt.plot(t, h[0]) plt.ylabel('Altitude (km)') plt.xlabel('Time (s)') plt.axvline(sol.t_events[0][0], color = 'red') plt.show() # Now, plot the velocity using the integrated function mv0 = RocketMass + 1500.0 # mass at ignition mvb = RocketMass # mass at burnout tb = sol.t_events[0][0] # time at which all the propellant has been used U = -JetVel*np.log(m/m[0]) -Grav*t plt.figure() plt.plot(t, u, label = 'From Eq. (1)') plt.plot(t, U, label = 'From Eq. (3)') plt.legend() plt.grid(True) plt.show()

QUESTION 2

import numpy as np from scipy.integrate import solve_ivp from matplotlib import pyplot as plt # Constants Grav = 9.81 RocketMass = 1000 # kg JetArea = 0.1**2*np.pi JetVel = 1500.0 #m/s Cd = 0.75 p = 1.225 # kg/m^3 d = 31.0/100.0 # Diameter of the cross-sectional area [cm] A = np.pi*(d/2.0)**2 # cross sectional area def rocket(t, state): h,u,m = state if m < RocketMass: DeltaM = 0.0 else: DeltaM = -JetArea*JetVel # acceleration, here goes the drag force Fd = (A/2)*Cd*p*u**2 DeltaV = -JetVel/m*DeltaM-Grav - Fd/m if h < 0.0: DeltaV = 0.0 return [u, DeltaV, DeltaM] # dhdt, dudt, dmdt # event for when rocket crases back to eart def hit_ground(t,y): return y[0] hit_ground.terminal = True hit_ground.direction = -1 # event for burnout def burnout(t,y): return y[2] - RocketMass burnout.terminal = False burnout.direction = -1 # event for apogee def apogee(t, y): return y[1] apogee.terminal = False apogee.direction = -1 # Launch a rocket with 1500kg of fuel and see what happens sol = solve_ivp(rocket, [0, 3600], # 1 hour of flight maximum) [0.0, 0.0, RocketMass + 1500.0], # initial conditions method = 'LSODA', # stiff ODE solver dense_output = True, events = (burnout, apogee, hit_ground)) # Interpret results print('Burn out at t={:.2f}s, maximum velocity is {:.2f} m/s'.format(sol.t_events[0][0], sol.y_events[0][0][1])) print('Apogee at t={:.2f}s, maximum altitude is {:.2f} km'.format(sol.t_events[1][0], sol.y_events[1][0][0]/1000)) print('Impact at t={:.2f}s'.format(sol.t_events[2][0])) # Plot a graph t = np.linspace(0.0, sol.t_events[2][0], 500) h = sol.sol(t) plt.plot(t, h[0]) plt.ylabel('Altitude (km)') plt.xlabel('Time (s)') plt.axvline(sol.t_events[0][0], color = 'red') plt.show()

QUESTION 3

import numpy as np from scipy.integrate import solve_ivp from matplotlib import pyplot as plt import time # Colors for coloured text TGREEN = '\033[32m' # Green Text TRED = "\u001b[31m" TAMBER = "\u001b[33m" ENDC = '\033[m' # reset to the defaults # Constants Grav = 9.81 RocketMass = 1000 # kg JetArea = 0.1**2*np.pi JetVel = 1500.0 #m/s Cd = 0.75 p = 1.225 # kg/m^3 d = 31.0/100.0 # Diameter of the cross-sectional area [cm] A = np.pi*(d/2.0)**2 # cross sectional area def rocket(t, state): h,u,m = state if m < RocketMass: DeltaM = 0.0 else: DeltaM = -JetArea*JetVel # acceleration, here goes the drag force Fd = (A/2)*Cd*p*u**2 DeltaV = -JetVel/m*DeltaM-Grav - Fd/m if h < 0.0: DeltaV = 0.0 return [u, DeltaV, DeltaM] # dhdt, dudt, dmdt # event for when rocket crases back to eart def hit_ground(t,y): return y[0] hit_ground.terminal = True hit_ground.direction = -1 # event for burnout def burnout(t,y): return y[2] - RocketMass burnout.terminal = False burnout.direction = -1 # event for apogee def apogee(t, y): return y[1] apogee.terminal = False apogee.direction = -1 # Launch a rocket with 1500kg of fuel and see what happens sol = solve_ivp(rocket, [0, 3600], # 1 hour of flight maximum) [0.0, 0.0, RocketMass + 1500.0], # initial conditions method = 'LSODA', # stiff ODE solver dense_output = True, events = (burnout, apogee, hit_ground)) # Interpret results #print('Burn out at t={:.2f}s, maximum velocity is {:.2f} m/s'.format(sol.t_events[0][0], sol.y_events[0][0][1])) #print('Apogee at t={:.2f}s, maximum altitude is {:.2f} km'.format(sol.t_events[1][0], sol.y_events[1][0][0]/1000)) #print('Impact at t={:.2f}s'.format(sol.t_events[2][0])) # Time vector t = np.linspace(0.0, sol.t_events[2][0], 500) # Variables y = sol.sol(t) h = y[0] v = y[1] m = y[2] tb = sol.t_events[0][0] vmax = sol.y_events[0][0][1] tapg = sol.t_events[1][0] hmax = sol.y_events[1][0][0]/1000.0 timpact = sol.t_events[2][0] # Initialize countdown for i in range(0, 10): print("T - {} seconds".format(10-i)) time.sleep(1) print("Lit off!") time_counter = 5.0 dt = t[1]-t[0] burnout_printed = False impact_printed = False apogee_printed = False TEXT_COLOR = TGREEN tsim = 0 for i in range(len(t)): time_counter += dt tsim += dt if tsim >= tb and not burnout_printed: TEXT_COLOR = TAMBER print(TEXT_COLOR + "T + {:.0f} seconds, burnout occurred, maximum velocity is {:.2f} m/s".format(tb, vmax), ENDC) burnout_printed = True if tsim >= tapg and not apogee_printed: print(TEXT_COLOR + 'T + {:.0f} seconds, apogee occurred, maximum altitude is {:.2f} km'.format(tapg, hmax), ENDC) apogee_printed = True if tsim >= timpact and not impact_printed: print(TEXT_COLOR + 'T + {:.0f} seconds, impact occured'.format(timpact), ENDC) impact_printed = True if v[i] < 0: # rocket is descending TEXT_COLOR = TRED if time_counter >= 5.0: # Print fuel_remaining = (m[i]-RocketMass)/(RocketMass + 1500.0) * 100.0 if fuel_remaining < 0: fuel_remaining = 0.0 print(TEXT_COLOR + "T + {:.0f} seconds, velocity is {:.2f} m/s, altitude is {:.2f} km, remaining fuel is {:.2f}%".format( t[i], v[i], h[i]/1000.0, fuel_remaining ), ENDC) time_counter = 0 time.sleep(1)

QUESTION 4

import numpy as np from scipy.integrate import solve_ivp from matplotlib import pyplot as plt import time # Colors for coloured text TGREEN = '\033[32m' # Green Text TRED = "\u001b[31m" TAMBER = "\u001b[33m" ENDC = '\033[m' # reset to the defaults # Constants Grav = 9.81 RocketMass = 1000 # kg JetArea = 0.1**2*np.pi JetVel = 1500.0 #m/s Cd = 0.75 p = 1.225 # kg/m^3 d = 31.0/100.0 # Diameter of the cross-sectional area [cm] A = np.pi*(d/2.0)**2 # cross sectional area # Initial conditions of launch h0 = 83 # in meters. This is the height of the launch tower fuel_mass = 5000.0 # fuel mass def rocket(t, state): h,u,m = state if m < RocketMass: DeltaM = 0.0 else: DeltaM = -JetArea*JetVel # acceleration, here goes the drag force Fd = (A/2)*Cd*p*u**2 DeltaV = -JetVel/m*DeltaM-Grav - Fd/m if h < 0.0: DeltaV = 0.0 return [u, DeltaV, DeltaM] # dhdt, dudt, dmdt # event for when rocket crases back to eart def hit_ground(t,y): return y[0] hit_ground.terminal = True hit_ground.direction = -1 # event for burnout def burnout(t,y): return y[2] - RocketMass burnout.terminal = False burnout.direction = -1 # event for apogee def apogee(t, y): return y[1] apogee.terminal = False apogee.direction = -1 # Launch a rocket with 1500kg of fuel and see what happens sol = solve_ivp(rocket, [0, 3600], # 1 hour of flight maximum) [h0, 0.0, RocketMass + fuel_mass], # initial conditions method = 'LSODA', # stiff ODE solver dense_output = True, events = (burnout, apogee, hit_ground)) # Interpret results #print('Burn out at t={:.2f}s, maximum velocity is {:.2f} m/s'.format(sol.t_events[0][0], sol.y_events[0][0][1])) #print('Apogee at t={:.2f}s, maximum altitude is {:.2f} km'.format(sol.t_events[1][0], sol.y_events[1][0][0]/1000)) #print('Impact at t={:.2f}s'.format(sol.t_events[2][0])) # Time vector t = np.linspace(0.0, sol.t_events[2][0], 500) # Variables y = sol.sol(t) h = y[0] v = y[1] m = y[2] tb = sol.t_events[0][0] vmax = sol.y_events[0][0][1] tapg = sol.t_events[1][0] hmax = sol.y_events[1][0][0]/1000.0 timpact = sol.t_events[2][0] # Initialize countdown for i in range(0, 10): print("T - {} seconds".format(10-i)) time.sleep(1) print("Lit off!") time_counter = 5.0 dt = t[1]-t[0] burnout_printed = False impact_printed = False apogee_printed = False TEXT_COLOR = TGREEN tsim = 0 for i in range(len(t)): time_counter += dt tsim += dt if tsim >= tb and not burnout_printed: TEXT_COLOR = TAMBER print(TEXT_COLOR + "T + {:.0f} seconds, burnout occurred, maximum velocity is {:.2f} m/s".format(tb, vmax), ENDC) burnout_printed = True if tsim >= tapg and not apogee_printed: print(TEXT_COLOR + 'T + {:.0f} seconds, apogee occurred, maximum altitude is {:.2f} km'.format(tapg, hmax), ENDC) apogee_printed = True if tsim >= timpact and not impact_printed: print(TEXT_COLOR + 'T + {:.0f} seconds, impact occured'.format(timpact), ENDC) impact_printed = True if v[i] < 0: # rocket is descending TEXT_COLOR = TRED if time_counter >= 5.0: # Print fuel_remaining = (m[i]-RocketMass)/(RocketMass + fuel_mass) * 100.0 if fuel_remaining < 0: fuel_remaining = 0.0 print(TEXT_COLOR + "T + {:.0f} seconds, velocity is {:.2f} m/s, altitude is {:.2f} km, remaining fuel is {:.2f}%".format( t[i], v[i], h[i]/1000.0, fuel_remaining ), ENDC) time_counter = 0 time.sleep(0.5)

Related Samples

Access our free Python assignment samples here to enhance your coding skills. These samples cover a range of topics and provide practical examples to help you understand key concepts and improve your programming abilities. Perfect for students and beginners looking to learn and practice Python.