def test_estimate_parameters_damped_sine_wave_angle(self): omega = 1e6 x_data = 1e-6 * np.linspace(0.2, 6.5, 190) y_data = np.sin(2 * np.pi * omega * x_data) parameter_estimate = estimate_parameters_damped_sine_wave(x_data, y_data) self.assertAlmostEqual(parameter_estimate[0], 1, places=1) self.assertAlmostEqual(parameter_estimate[3], 0, places=0)
def test_estimate_parameters_damped_sine_wave_degenerate(self): x_data = np.array([0., 1., 2.]) y_data = np.array([0, 0, 0]) estimated_parameters = estimate_parameters_damped_sine_wave( x_data, y_data) self.assertEqual(estimated_parameters[0], 0.)
def test_estimate_parameters_damped_sine_wave_exact(self): x_data = np.arange(0, 20., .12) exact_frequency = .4 exact_offset = 2.2 y_data = np.sin(2 * np.pi * exact_frequency * x_data) + exact_offset estimated_parameters = estimate_parameters_damped_sine_wave(x_data, y_data) self.assertAlmostEqual(estimated_parameters[0], 1., places=1) self.assertAlmostEqual(estimated_parameters[2], exact_frequency, places=1) self.assertAlmostEqual(estimated_parameters[-1], exact_offset, places=1)
def test_estimate_parameters_damped_sine_wave(self): y_data = np.array([0.25285714, 0.31714286, 0.48857143, 0.66285714, 0.77857143, 0.72857143, 0.58714286, 0.42571429, 0.28142857, 0.29571429, 0.39428571, 0.47285714, 0.56857143, 0.70428571, 0.76857143, 0.73571429, 0.62714286, 0.49714286, 0.42857143, 0.30714286, 0.31, 0.31714286, 0.37285714]) x_data = np.array([0.00000000e+00, 6.81818182e-09, 1.36363636e-08, 2.04545455e-08, 2.72727273e-08, 3.40909091e-08, 4.09090909e-08, 4.77272727e-08, 5.45454545e-08, 6.13636364e-08, 6.81818182e-08, 7.50000000e-08, 8.18181818e-08, 8.86363636e-08, 9.54545455e-08, 1.02272727e-07, 1.09090909e-07, 1.15909091e-07, 1.22727273e-07, 1.29545455e-07, 1.36363636e-07, 1.43181818e-07, 1.50000000e-07]) estimated_parameters = estimate_parameters_damped_sine_wave(x_data, y_data) self.assertFalse(np.any(np.isnan(estimated_parameters))) self.assertAlmostEqual(estimated_parameters[0], 0.263, places=1)