Robotran C Documentation
riccati.h
Go to the documentation of this file.
1 //---------------------------
2 // UCL-CEREM-MBS
3 //
4 // @version MBsysLab_s 1.7.a
5 //
6 // Creation : 2006
7 // Last update : 01/10/2008
8 //---------------------------
9 
10 #ifndef mbs_riccati_h
11 #define mbs_riccati_h
12 /*--------------------*/
13 
14 typedef struct MbsRiccati
15 {
16  // Note that the Riccati Equation is written:
17  // At*X + X*A - X BRm1Bt X + Q = 0
18 
19  double **A;
20  double **Q;
21  double **BRm1Bt;
22  double **H;
23 
24  int n;
25 
26  double **X;
27  double **res;
28  double **T_colmaj;
29  double **Z_colmaj;
30  double **Z;
31  double **Z11;
32  double **Z11m1;
33  double **Z21;
34  double *WR;
35  double *WI;
36 
37 }MbsRiccati;
38 
40 int mbs_schurFactorization(double **A_colmaj, int n, double *WR, double *WI, double **Z_colmaj);
41 int mbs_invLU_0(double **A, double **Am1, int n);
42 
44 
46 
47 #endif
MbsRiccati::BRm1Bt
double ** BRm1Bt
The BRm1Bt matrix of the Riccati equations.
Definition: riccati.h:21
MbsRiccati
Definition: riccati.h:14
complex_float
Implementation of eig function using lapacke without using the lapackE interface.
Definition: cholesky.c:14
mbs_rank_0
int mbs_rank_0(double **A, int m, int n)
Compute the rank of matrix_in.
Definition: rank_lapacke.c:37
useful_functions.h
MbsRiccati::WI
double * WI
Definition: riccati.h:35
get_dvec_0
double * get_dvec_0(int l_v)
create (with memory allocation) a vector (length l_v) of doubles, starting at index 0
Definition: mbs_1D_array.c:880
copy_dmat_0
void copy_dmat_0(double **tab_src, double **tab_dest, int nb_r, int nb_c)
Copy the content of a [nb_r times nb_c] matrix of doubles to a second matrix, starting with index 0.
Definition: mbs_matrix.c:363
free_dmat_0
void free_dmat_0(double **mat)
release memory for a matrix of doubles, starting at index 0
Definition: mbs_matrix.c:293
mbs_invLU_0
int mbs_invLU_0(double **A, double **Am1, int n)
Inverse the square matrix A using a LU decomposition.
Definition: inverse_lapack.c:28
MbsRiccati::T_colmaj
double ** T_colmaj
Definition: riccati.h:28
complex_double
Definition: cholesky.c:15
MbsRiccati::Z
double ** Z
Definition: riccati.h:30
complex_float::x
float x
Definition: cholesky.c:14
mbs_linalg.h
get_dmat_0
double ** get_dmat_0(int nb_r, int nb_c)
create (with memory allocation) a [nb_r times nb_c] matrix of doubles, starting at index 0
Definition: mbs_matrix.c:238
mbs_delete_riccati
void mbs_delete_riccati(MbsRiccati *ric)
Definition: riccati.c:143
mbs_solve_riccati
int mbs_solve_riccati(MbsRiccati *ric)
Definition: riccati.c:27
mbs_rank_0
int mbs_rank_0(double **A, int m, int n)
Definition: rank_lapack.c:38
MbsRiccati::Z_colmaj
double ** Z_colmaj
Definition: riccati.h:29
mbs_msg
void mbs_msg(char *msg,...)
Send a message.
Definition: mbs_message.c:76
MbsRiccati::A
double ** A
The A matrix of the Riccati equation : Aric = A - B*Rm1*Nt.
Definition: riccati.h:19
MbsRiccati::X
double ** X
the Riccati solution
Definition: riccati.h:26
riccati.h
MbsRiccati::res
double ** res
Definition: riccati.h:27
complex_float::y
float y
Definition: cholesky.c:14
mbs_new_riccati
MbsRiccati * mbs_new_riccati(int n)
Definition: riccati.c:118
complex_double::y
double y
Definition: cholesky.c:15
mbs_delete_riccati
void mbs_delete_riccati(MbsRiccati *ric)
Definition: riccati.c:143
mbs_solve_riccati
int mbs_solve_riccati(MbsRiccati *ric)
Definition: riccati.c:27
mult_dmat_0
void mult_dmat_0(double **A, double **B, double **C, int n1, int n2, int n3)
function to multiply two matrices: A * B = C [n1 n2] [n2 n3] = [n1 n3]
Definition: mbs_matrix.c:767
mbs_invLU_0
int mbs_invLU_0(double **A, double **Am1, int n)
Inverse the square matrix A using a LU decomposition.
Definition: inverse_lapack.c:28
transpose_dmat_0
void transpose_dmat_0(double **tab_src, double **tab_dest, int nb_r, int nb_c)
Transpose a [nb_r times nb_c] matrix of doubles and store the results in a [y times nb_r] matrix,...
Definition: mbs_matrix.c:440
MbsRiccati::Z11m1
double ** Z11m1
inverse of Z11
Definition: riccati.h:32
mbs_message.h
MbsRiccati::H
double ** H
the Hamiltonian associated with the Algebraic Riccati Equation
Definition: riccati.h:22
complex_double::x
double x
Definition: cholesky.c:15
mbs_schurFactorization
int mbs_schurFactorization(double **A_colmaj, int n, double *WR, double *WI, double **Z_colmaj)
MbsRiccati::Z11
double ** Z11
Definition: riccati.h:31
MbsRiccati::WR
double * WR
Definition: riccati.h:34
_MBS_ERR_LOW_RANK_DCMP
#define _MBS_ERR_LOW_RANK_DCMP
Low Level error number Rank decompostion = -1.
Definition: mbs_errors_names.h:117
mbs_schur_0
int mbs_schur_0(double **A, int n, double **T, double **Z, double *WR, double *WI, int reorder)
A : matrix for the Eigenvalue problem in row major n : size of the matrix WR : Result of the Eigenval...
Definition: schur_lapack.c:45
MbsRiccati::Z21
double ** Z21
Definition: riccati.h:33
free_dvec_0
void free_dvec_0(double *vec)
release memory for a vector of doubles, starting at index 0
Definition: mbs_1D_array.c:896
MbsRiccati::Q
double ** Q
The Q matrix of the Riccati equation : Qric = Q - N*Rm1*Nt.
Definition: riccati.h:20
mbs_new_riccati
MbsRiccati * mbs_new_riccati(int n)
Definition: riccati.c:118
MbsRiccati::n
int n
size of the Riccati problem
Definition: riccati.h:24
mbs_errors_names.h