Source code for easyphysics.freefall

import numpy as np
import matplotlib.pylab as plt


[docs]def freefall(height, g=9.8): """ calculates the time it takes for a falling object using the equation of motion height = 1/2*gt^2, given the height and gravity of the free fall. It returns the time it takes for the free fall, and a plot compares the time of the free fall on different planets with a list. The distance traveled by the falling object (height) and the acceleration of gravity (g, default = 9.8) are the function’s arguments. Parameters ---------- height : numeric A numeric value that is the distance of the free fall in meters. g: numeric, optional The gravity of the free fall (m/s^2), default value = 9.8. Returns ------- time: float A float that is the time it takes for the free fall in seconds. plot: matplotlib.figure.Figure, A matplotlib.figure.Figure that compares time of a free fall with the height indicated by user on different planets. Examples -------- >>> freefall(10, g=9.8) 1.4286 >>> freefall(10, g=274) 0.2702 """ if (type(height) == int or type(height) == float) & (type(g) == int or type(g) == float): time = np.sqrt(2*height/g) gdict = {'Moon': 0.17, 'Mars': 0.38, 'Uranus': 0.89, 'Venus': 0.90, 'Saturn': 1.07, 'Sun': 27.9} gdict['Your planet'] = g/9.8 sorted_gdict = dict(sorted(gdict.items(), key=lambda x:x[1])) planet = [] gravity = [] times = [] for value in sorted_gdict.values(): gravity.append(value) for key in sorted_gdict.keys(): planet.append(key) for value in sorted_gdict.values(): times.append(np.sqrt(2*height/(9.8*value))) plt.scatter(planet,times) plt.ylabel("Time for the free fall in seconds") plt.xlabel("Planets") plt.title("Time for the free fall on different planets for the height you entered") plt.figure(figsize = (10,10)) plot = plt.figure() else: raise TypeError('height and g has to be numeric!') return time, plot