6 #include <eigen3/unsupported/Eigen/MatrixFunctions> 9 typedef complex<double>
Cd_t;
20 AA = Eigen::MatrixXcd::Random(
size,
size);
21 BB = Eigen::MatrixXcd::Random(
size,
size);
22 QQ = Eigen::MatrixXcd::Random(
size,
size);
23 Eigen::MatrixXcd X1 =
dlyap(AA, BB, QQ);
25 cout <<
"Testing dlyap: " << (AA * X1 * BB - X1 + QQ).norm() << endl;
27 Eigen::MatrixXcd X2 =
lyap(AA, BB, QQ);
29 cout <<
"Testing lyap: " << (AA * X2 + X2 * BB + QQ).norm() << endl;
35 cout <<
"qz info : " << qz.
info << endl;
36 cout <<
"Test qz 1: " << (qz.
VSL * qz.
S * qz.
VSR.adjoint() - AA).norm() << endl;
37 cout <<
"Test qz 2: " << (qz.
VSL * qz.
T * qz.
VSR.adjoint() - BB).norm() << endl;
47 Eigen::MatrixXcd fm(
sis::N+1,1);
48 for (
int i = 0 ;i <
sis::N+1; i++){
49 fm(i,0) = f(0,0).v[i];
53 cout <<
"Testing intWts: " << fm.adjoint() * Iw * fm <<
", Actual value: " << 16.0/15.0 <<endl;
56 Eigen::MatrixXd sqrtIw = Iw.sqrt();
57 cout <<
"Testing matrix square root, norm: " << (sqrtIw*sqrtIw - Iw).norm() << endl;
Eigen::MatrixXcd lyap(Eigen::MatrixXcd A, Eigen::MatrixXcd B, Eigen::MatrixXcd Q)
Solves the Lyapunov/ sylvester equation: AX + XB + Q = 0.
std::complex< T > size(const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &in)
This function is useful to see size of Eigen matrices. Returns a complex number, where the real part ...
Eigen::MatrixXd intWts(int N)
int N
Specifies number of Chebyshev polynomials, default N = 31.
void p2c()
Converts every element to Cheb-space, if not already in Cheb-space.
Eigen::MatrixXcd dlyap(Eigen::MatrixXcd A, Eigen::MatrixXcd B, Eigen::MatrixXcd Q)
Solves the Lyapunov/ sylvester equation: AXB - X + Q = 0.
std::valarray< SIS_TYPE > y(N+1)
This class holds a matrix of Chebfuns.