@@ -12,16 +12,30 @@ def create_system_with_B():
1212 return {"snapshots" : snapshots , "u" : u , "B" : B }
1313
1414
15- def create_system_without_B (lag = 1 ):
15+ def create_system_without_B ():
16+ n = 5 # dimension snapshots
17+ m = 15 # number snapshots
18+ A = scipy .linalg .helmert (n , True )
19+ B = np .random .rand (n , n ) - 0.5
20+ x0 = np .array ([0.25 ] * n )
21+ u = np .random .rand (n , m - 1 ) - 0.5
22+ snapshots = [x0 ]
23+ for i in range (m - 1 ):
24+ snapshots .append (A .dot (snapshots [i ]) + B .dot (u [:, i ]))
25+ snapshots = np .array (snapshots ).T
26+ return {"snapshots" : snapshots , "u" : u , "B" : B , "A" : A }
27+
28+
29+ def create_system_without_B_lag (lag = 1 ):
1630 n = 5 # dimension snapshots
1731 m = 15 # number snapshots
1832 A = scipy .linalg .helmert (n , True )
1933 B = np .random .rand (n , n ) - 0.5
2034 snapshots = []
21- for i in range (lag ):
35+ for _ in range (lag ):
2236 snapshots .append (np .array ([0.25 ] * n ))
23- u = np .random .rand (n , m - lag ) - 0.5
24- for i in range (m - lag ):
37+ u = np .random .rand (n , m - lag ) - 0.5
38+ for i in range (m - lag ):
2539 snapshots .append (A .dot (snapshots [i ]) + B .dot (u [:, i ]))
2640 snapshots = np .array (snapshots ).T
2741 return {"snapshots" : snapshots , "u" : u , "B" : B , "A" : A }
@@ -42,13 +56,29 @@ def test_eigs_b_unknown():
4256 assert dmdc .eigs .shape [0 ] == 3
4357
4458
59+ def test_eigs_b_unknown_lag ():
60+ lag = 3
61+ system = create_system_without_B_lag (lag = lag )
62+ dmdc = DMDc (svd_rank = 3 , opt = False , svd_rank_omega = 4 , lag = lag )
63+ dmdc .fit (system ["snapshots" ], system ["u" ])
64+ assert dmdc .eigs .shape [0 ] == 3
65+
66+
4567def test_modes_b_unknown ():
4668 system = create_system_without_B ()
4769 dmdc = DMDc (svd_rank = 3 , opt = False , svd_rank_omega = 4 )
4870 dmdc .fit (system ["snapshots" ], system ["u" ])
4971 assert dmdc .modes .shape [1 ] == 3
5072
5173
74+ def test_modes_b_unknown_lag ():
75+ lag = 3
76+ system = create_system_without_B_lag (lag = lag )
77+ dmdc = DMDc (svd_rank = 3 , opt = False , svd_rank_omega = 4 , lag = lag )
78+ dmdc .fit (system ["snapshots" ], system ["u" ])
79+ assert dmdc .modes .shape [1 ] == 3
80+
81+
5282def test_reconstruct_b_known ():
5383 system = create_system_with_B ()
5484 dmdc = DMDc (svd_rank = - 1 )
@@ -74,6 +104,16 @@ def test_reconstruct_b_unknown():
74104 )
75105
76106
107+ def test_reconstruct_b_unknown_lag ():
108+ lag = 3
109+ system = create_system_without_B_lag (lag = lag )
110+ dmdc = DMDc (svd_rank = - 1 , opt = True , lag = lag )
111+ dmdc .fit (system ["snapshots" ], system ["u" ])
112+ np .testing .assert_array_almost_equal (
113+ dmdc .reconstructed_data (), system ["snapshots" ], decimal = 6
114+ )
115+
116+
77117def test_atilde_b_unknown ():
78118 system = create_system_without_B ()
79119 dmdc = DMDc (svd_rank = - 1 , opt = True )
0 commit comments