29 #include "gtest/gtest.h"
54 A << 0.2, 1, 0, -0.25;
59 EXPECT_TRUE(LyapunovDiscrete::hasUniqueSolution(
A));
62 bool solve_success = LyapunovDiscrete::solve(
A, Q,
X);
63 EXPECT_TRUE(solve_success);
65 Eigen::Matrix2d X_sol;
66 X_sol << 4.0939153, -0.5079365, -0.5079365, 2.133333;
74 Eigen::MatrixXd
A(5, 5);
75 A << -2.5, -2.3, -0.95, -0.1689, -0.0095, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0;
77 Eigen::MatrixXd Q(5, 5);
79 Q << 0.17, 0.24, 0.01, 0.08, 0.15, 0.23, 0.05, 0.07, 0.14, 0.16, 0.04, 0.06, 0.13, 0.20, 0.22, 0.10, 0.12, 0.19, 0.21, 0.03, 0.11, 0.18, 0.25,
82 EXPECT_TRUE(LyapunovDiscrete::hasUniqueSolution(
A));
85 bool solve_success = LyapunovDiscrete::solve(
A, Q,
X);
86 EXPECT_TRUE(solve_success);
88 Eigen::MatrixXd X_sol(5, 5);
89 X_sol << 617.5979, -611.0219, 592.5646, -565.5248, 532.3784, -610.8914, 617.6479, -610.9519, 592.7046, -565.3648, 592.3457, -610.8314, 617.7779,
90 -610.7519, 592.9246, -565.2179, 592.4657, -610.6414, 617.9879, -610.7219, 532.0166, -565.0379, 592.7157, -610.6214, 618.0779;
100 Eigen::MatrixXd
A(5, 5);
101 A << -2.5, -2.3, -0.95, -0.1689, -0.095, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0;
103 Eigen::MatrixXd Q = Eigen::MatrixXd::Identity(5, 5);
105 EXPECT_TRUE(LyapunovDiscrete::hasUniqueSolution(
A));
108 bool solve_success = LyapunovDiscrete::solve(
A, Q,
X);
109 EXPECT_TRUE(solve_success);
111 Eigen::MatrixXd X_sol(5, 5);
112 X_sol << -0.9387, 11.8081, -41.2126, 76.7855, -109.8624, 11.8081, 0.0613, 11.8081, -41.2126, 76.7855, -41.2126, 11.8081, 1.0613, 11.8081,
113 -41.2126, 76.7855, -41.2126, 11.8081, 2.0613, 11.8081, -109.8624, 76.7855, -41.2126, 11.8081, 3.0613;
120 Eigen::MatrixXd
A = Eigen::MatrixXd::Random(5, 4);
126 EXPECT_DEBUG_DEATH(LyapunovDiscrete::solve(
A, Q,
X),
"");
131 Eigen::MatrixXd
A = Eigen::MatrixXd::Random(4, 4);
132 Eigen::MatrixXd Q = Eigen::MatrixXd::Random(5, 4);
135 EXPECT_DEBUG_DEATH(LyapunovDiscrete::solve(
A, Q,
X),
"");
140 Eigen::MatrixXd
A = Eigen::MatrixXd::Random(4, 4);
141 Eigen::MatrixXd Q = Eigen::MatrixXd::Random(5, 5);
144 EXPECT_DEBUG_DEATH(LyapunovDiscrete::solve(
A, Q,
X),
"");
149 Eigen::MatrixXd
A = Eigen::MatrixXd::Random(5, 4);
152 EXPECT_FALSE(LyapunovDiscrete::hasUniqueSolution(
A));
157 Eigen::Matrix3d
A = Eigen::Matrix3d::Identity();
159 EXPECT_FALSE(LyapunovDiscrete::hasUniqueSolution(
A));