/*------------------------------------------------------------------------
中村・上田写像のリアプノフスペクトラムの計算
calculating the Lyapunov spectrum of the Nakamura-Ueta map
x[t] = A0 + A1 * y[t-2] + A2 * x[t-1] x[t-3]
x[t+1] = A0 + A1 * y[t] + A2 * x[t] z[t]
y[t+1] = x[t]
z[t+1] = y[t] = x[t-1]
nakamura-ueta_lyap.h
------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define ITERATION 100000
#define SKIP 10000
// parameters
/* case 1 */
// #define A0 1.00
// #define A1 0.31
// #define A2 -1.00
/* case 2 */
#define A0 1.03
#define A1 0.30
#define A2 -1.00
/* case 3 */
// #define A0 1.00
// #define A1 0.30
// #define A2 -1.00
// 初期値
// initial values
#define X0 0.2993
#define Y0 1.3431
#define Z0 0.2561
// 変数の数
// number of variables
#define DIM 3
/*------------------------------------------------------------------------*/
extern void nakamura_ueta_eqs( double (*x), double (*y), double (*z), double dfQ[DIM][DIM], double Q[DIM][DIM] );
extern void householder_QR_decomp( double X[DIM][DIM], double Q[DIM][DIM], double R[DIM][DIM] );
extern double calc_lyap_dim( double lambda[DIM] );
extern double log2( double x );