|
1 | 1 | import numpy as np |
2 | 2 | from pytest import mark, skip |
3 | 3 |
|
4 | | -#from pynumdiff.optimize.finite_difference import first_order |
5 | 4 | #from pynumdiff.optimize.smooth_finite_difference import mediandiff, meandiff, gaussiandiff, \ |
6 | 5 | # friedrichsdiff, butterdiff, splinediff |
7 | 6 | #from pynumdiff.optimize.total_variation_regularization import * |
8 | | -#from pynumdiff.optimize.linear_model import * |
9 | 7 | #from pynumdiff.optimize.kalman_smooth import constant_velocity, constant_acceleration, \ |
10 | 8 | # constant_jerk |
11 | 9 | from pynumdiff.utils.simulate import pi_control |
12 | 10 |
|
| 11 | +from ..finite_difference import first_order as iterated_finite_difference # actually second order |
13 | 12 | from ..linear_model import spectraldiff, polydiff, savgoldiff |
14 | 13 | from ..optimize import optimize |
15 | 14 |
|
16 | 15 |
|
17 | | - |
18 | 16 | # simulation |
19 | | -noise_type = 'normal' |
20 | | -noise_parameters = [0, 0.01] |
21 | 17 | dt = 0.01 |
22 | | -duration = 2 |
23 | | -x, x_truth, dxdt_truth, extras = pi_control(duration, noise_parameters=noise_parameters, dt=dt) |
| 18 | +x, x_truth, dxdt_truth, extras = pi_control(duration=2, noise_type='normal', noise_parameters=[0, 0.01], dt=dt) |
24 | 19 | cutoff_frequency = 0.1 |
25 | 20 | log_gamma = -1.6 * np.log(cutoff_frequency) - 0.71 * np.log(dt) - 5.1 |
26 | 21 | tvgamma = np.exp(log_gamma) |
27 | 22 |
|
28 | 23 |
|
29 | | -# def test_first_order(): |
30 | | -# params_1, val_1 = first_order(x, dt, params=None, options={'iterate': True}, |
31 | | -# tvgamma=tvgamma, dxdt_truth=dxdt_truth) |
32 | | -# params_2, val_2 = first_order(x, dt, params=None, options={'iterate': True}, |
33 | | -# tvgamma=0, dxdt_truth=None) |
34 | | -# assert params_1 == [5] |
35 | | -# assert params_2 == [1] |
| 24 | +def test_finite_difference(): |
| 25 | + params_1, val_1 = optimize(iterated_finite_difference, x, dt, tvgamma=tvgamma, dxdt_truth=dxdt_truth) |
| 26 | + params_2, val_2 = optimize(iterated_finite_difference, x, dt, tvgamma=0, dxdt_truth=None) |
| 27 | + assert params_1['num_iterations'] == 5 |
| 28 | + assert params_2['num_iterations'] == 1 |
36 | 29 |
|
37 | 30 | # def test_mediandiff(): |
38 | 31 | # params_1, val_1 = mediandiff(x, dt, params=None, options={'iterate': False}, |
|
0 commit comments