Answer:

CODE

import time #importing time module

import math #importing math module

pi = math.pi #defining the value of pi

u = 70 #initial velocity

g = 9.8 #gravitational acceleration

time_step = 0.01 #time step of 0.01 secs

time_elapsed = 0.0

maxAngle = 0

angle = 1

h = 5.0 #setting the initial height to to 5m

x = 0.0

maxRange = 0.0

for angle in range(1,91): #loop which angle takes value from 1 to 90

ux = u * math.cos((pi / 180) * angle) #velocity in x axis

uy = u * math.sin((pi / 180) * angle) #velocity in y axis

for i in range(1000): #running for 1000 steps

dragx = 0.5 * 1.225 * 1.4 * 0.8 * ux * ux #calculating the drag in x direction

dragy = 0.5 * 1.225 * 1.4 * 0.8 * uy * uy #calculating the drag in y direction

drag_ax = dragx / 65.0 #calculating drag acceleration in x axis

drag_ay = dragy / 65.0 #calculating drag acceleration in y axis

accelx = drag_ax #resultant acceleration in x axis

accely = g + drag_ay #resultant acceleration in y axis

vx = ux - accelx * time_step #velocity in the x axis at any instant

vy = uy - accely * time_step #velocity in the y axis at any instant

h += uy * time_step - 0.5 * accely * time_step * time_step #height at any instant of the projectile

x += ux * time_step - 0.5 * accelx * time_step * time_step #range at any instant in the x axis of the projectile

print("Height " + str(h) + " Range " + str(x)) #printing the current position

time.sleep(time_step) #waiting for 0.01 secs

time_elapsed += time_step #calculating the time elapsed

ux = vx #setting the final velocitites to new initial velocities

uy = vy

if h <= 0.0: #if a height 0 is reached

if x > maxRange:

maxRange = x #max angles are noted

maxAngle = angle

h = 5.0 #variables are initialized

x = 0.0

u = 70.0

vx = 0.0

vy = 0.0

print("Wait till the next simulation starts.....")

time.sleep(10.0 - time_elapsed) #wait for 10 secs

time_elapsed = 0.0

break

print("The optimum angle for for Callista is {} degrees which will give her a range of {} metres".format(str(maxAngle),str(maxRange))) #the optimum angle is printed

Explanation: