|
8 | 8 | B = rng.random((dim, dim)) |
9 | 9 | B = (B + B.T) * 0.5 + np.diag(10.0 + rng.random(dim)) |
10 | 10 |
|
11 | | -ges = eigenpy.GeneralizedEigenSolver() |
12 | | -ges_size = eigenpy.GeneralizedEigenSolver(dim) |
13 | 11 | ges_matrices = eigenpy.GeneralizedEigenSolver(A, B) |
14 | 12 | assert ges_matrices.info() == eigenpy.ComputationInfo.Success |
15 | 13 |
|
16 | | -ges_with_vectors = eigenpy.GeneralizedEigenSolver(A, B, True) |
17 | | -assert ges_with_vectors.info() == eigenpy.ComputationInfo.Success |
18 | | - |
19 | | -ges_without_vectors = eigenpy.GeneralizedEigenSolver(A, B, False) |
20 | | -assert ges_without_vectors.info() == eigenpy.ComputationInfo.Success |
21 | | - |
22 | 14 | alphas = ges_matrices.alphas() |
23 | 15 | betas = ges_matrices.betas() |
24 | 16 | eigenvectors = ges_matrices.eigenvectors() |
25 | 17 | eigenvalues = ges_matrices.eigenvalues() |
26 | 18 |
|
27 | | -assert alphas.shape == (dim,) |
28 | | -assert betas.shape == (dim,) |
29 | | -assert eigenvectors.shape == (dim, dim) |
30 | | -assert eigenvalues.shape == (dim,) |
31 | | - |
32 | 19 | for k in range(dim): |
33 | 20 | v = eigenvectors[:, k] |
34 | 21 | lambda_k = eigenvalues[k] |
|
52 | 39 | if abs(betas[k]) > 1e-12: |
53 | 40 | expected_eigenvalue = alphas[k] / betas[k] |
54 | 41 | assert abs(eigenvalues[k] - expected_eigenvalue) < 1e-12 |
55 | | - |
56 | | -ges_compute = eigenpy.GeneralizedEigenSolver() |
57 | | -result = ges_compute.compute(A, B, False) |
58 | | -assert result.info() == eigenpy.ComputationInfo.Success |
59 | | -alphas_only = ges_compute.alphas() |
60 | | -betas_only = ges_compute.betas() |
61 | | -eigenvalues_only = ges_compute.eigenvalues() |
62 | | - |
63 | | -result_with_vectors = ges_compute.compute(A, B, True) |
64 | | -assert result_with_vectors.info() == eigenpy.ComputationInfo.Success |
65 | | -eigenvectors_computed = ges_compute.eigenvectors() |
66 | | - |
67 | | -ges_default = eigenpy.GeneralizedEigenSolver() |
68 | | -result_default = ges_default.compute(A, B) |
69 | | -assert result_default.info() == eigenpy.ComputationInfo.Success |
70 | | - |
71 | | -ges_iter = eigenpy.GeneralizedEigenSolver(A, B) |
72 | | -ges_iter.setMaxIterations(100) |
73 | | -ges_iter.setMaxIterations(200) |
74 | | - |
75 | | -A1 = rng.random((dim, dim)) |
76 | | -B1 = rng.random((dim, dim)) |
77 | | -spdA = A.T @ A + A1.T @ A1 |
78 | | -spdB = B.T @ B + B1.T @ B1 |
79 | | - |
80 | | -ges_spd = eigenpy.GeneralizedEigenSolver(spdA, spdB) |
81 | | -assert ges_spd.info() == eigenpy.ComputationInfo.Success |
82 | | - |
83 | | -spd_eigenvalues = ges_spd.eigenvalues() |
84 | | -max_imag = np.max(np.abs(spd_eigenvalues.imag)) |
85 | | -assert max_imag < 1e-10 |
86 | | - |
87 | | -ges1 = eigenpy.GeneralizedEigenSolver() |
88 | | -ges2 = eigenpy.GeneralizedEigenSolver() |
89 | | -id1 = ges1.id() |
90 | | -id2 = ges2.id() |
91 | | -assert id1 != id2 |
92 | | -assert id1 == ges1.id() |
93 | | -assert id2 == ges2.id() |
94 | | - |
95 | | -ges3 = eigenpy.GeneralizedEigenSolver(dim) |
96 | | -ges4 = eigenpy.GeneralizedEigenSolver(dim) |
97 | | -id3 = ges3.id() |
98 | | -id4 = ges4.id() |
99 | | -assert id3 != id4 |
100 | | -assert id3 == ges3.id() |
101 | | -assert id4 == ges4.id() |
102 | | - |
103 | | -ges5 = eigenpy.GeneralizedEigenSolver(A, B) |
104 | | -ges6 = eigenpy.GeneralizedEigenSolver(A, B) |
105 | | -id5 = ges5.id() |
106 | | -id6 = ges6.id() |
107 | | -assert id5 != id6 |
108 | | -assert id5 == ges5.id() |
109 | | -assert id6 == ges6.id() |
110 | | - |
111 | | -ges7 = eigenpy.GeneralizedEigenSolver(A, B, True) |
112 | | -ges8 = eigenpy.GeneralizedEigenSolver(A, B, False) |
113 | | -id7 = ges7.id() |
114 | | -id8 = ges8.id() |
115 | | -assert id7 != id8 |
116 | | -assert id7 == ges7.id() |
117 | | -assert id8 == ges8.id() |
0 commit comments