def test_data_compiler(self): voltages = [1.0, 2.0, 3.0, 3.0, 3.0, 4.0] currents = [18.0, 19.0, 20.0, 21.0, 22.0, 23.0] compiled_data = compile_data(voltages, currents) s1, ss1, c1 = compiled_data[1.0] s2, ss2, c2 = compiled_data[2.0] s3, ss3, c3 = compiled_data[3.0] s4, ss4, c4 = compiled_data[4.0] self.assertEqual(s1, 18.0) self.assertEqual(ss1, 324.0) self.assertEqual(c1, 1) self.assertEqual(s2, 19.0) self.assertEqual(ss2, 361.0) self.assertEqual(c2, 1) self.assertEqual(s3, 63.0) self.assertEqual(ss3, 1325.0) self.assertEqual(c3, 3) self.assertEqual(s4, 23.0) self.assertEqual(ss4, 529.0) self.assertEqual(c4, 1)
return new_guess_vector def compute_convergence_distance(new_guess_vector, old_guess_vector): delta_vector = GuessVector(eta=new_guess_vector.eta - old_guess_vector.eta, V0=new_guess_vector.V0 - old_guess_vector.V0) convergence_distance = math.sqrt(delta_vector.eta * delta_vector.eta + delta_vector.V0 * delta_vector.V0) return convergence_distance def fit_data(compiled_data_dict): epsilon = 0.0001 old_guess_vector = GuessVector(1.0, 0.0) # Make the initial guess new_guess_vector = new_guess(old_guess_vector, compiled_data_dict) while compute_convergence_distance(new_guess_vector, old_guess_vector) > epsilon: # guess again old_guess_vector = new_guess_vector new_guess_vector = new_guess(old_guess_vector, compiled_data_dict) print ("Result for eta = " + str(new_guess_vector.eta) + " and V0 = " + str(new_guess_vector.V0)) if __name__ == "__main__": stopping_voltages, photocurrents = get_data() compiled_data_from_files = compile_data(stopping_voltages, photocurrents) fit_data(compiled_data_from_files)
from data_loader import get_data from data_compiler import compile_data def fit_data(compiled_data_dict): print "Fitting " + str(compiled_data_dict) if __name__ == "__main__": stopping_voltages, photocurrents = get_data() compiled_data = compile_data(stopping_voltages, photocurrents) fit_data(compiled_data)