Skip to content

Instantly share code, notes, and snippets.

@omargfh
Created October 26, 2022 01:50
Show Gist options
  • Save omargfh/de8a0698946103e636bd0a11ba911191 to your computer and use it in GitHub Desktop.
Save omargfh/de8a0698946103e636bd0a11ba911191 to your computer and use it in GitHub Desktop.
import numpy as np
class Trial(object):
def __init__(self, mass, data, height):
self.mass = mass
self.data = data
self.energy = self.mass * 9.8 * height
self.average = np.average(self.data)
self.std = np.std(self.data)
self.error = self.std / np.sqrt(len(self.data))
def __repr__(self):
string = f"---- MASS = {self.mass * 1000: .3f}g ----\n"
for entry in self.data:
string += f"Data Point = {entry: .3f}m or {entry * 100: .1f}cm\n"
string += f"Average = {self.average: .3f} m or {self.average * 100: .1f} cm\n"
string += f"Standard Deviation = {self.std: .3f} m or {self.std * 100: .1f} cm\n"
string += f"Error = {self.error: .5f} m or {self.error * 100: .5f} cm\n"
string += f"Energy = {self.energy: .3f} J or {self.energy * 1000: .1f} mJ\n"
# +-
string += f"Percent Error = {self.error / self.average * 100: .1f}%\n"
# final value
string += f"Final Value = {self.average * 100: .1f} cm +- {self.error * 100: .5f} cm\n"
return string
mass = [28.2, 8.4, 3.5]
data_large = [69, 71, 68, 70, 72, 71, 70]
data_medium = [50, 50, 50, 47, 50, 49, 51]
data_small = [40, 38, 38, 40, 39, 38, 38]
data = [data_large, data_medium, data_small]
mass = [x / 1000 for x in mass]
trials = []
for i, m in enumerate(mass):
trials.append(Trial(mass=m, data=[x / 1000 for x in data[i]], height=1.2))
trials.append(Trial(mass=28.2/1000, data=[79/1000], height=1.18))
for trial in trials:
print(trial)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment