/*------------------------------------------------------------------------------------
2重振り子の方程式のリアプノフスペクトラムの計算
calculating the Lyapunov spectrum of the double pendulum equations
double_pendulum_lyap.h
------------------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define ITERATION 10000000
// #define ITERATION 100000
#define SKIP 100000
#define DELTA_T 0.001 /* step size of the fourth-order Runge-Kutta method */
// parameters
#define G 9.80 // 重力加速度, acceleration of gravity [m/s^2]
#define L1 0.10 // 単振り子1の長さ, length of single pendulum1 [m]
#define L2 0.08 // 単振り子2の長さ, length of single pendulum2 [m]
#define M1 0.20 // おもり1の質量, Mass of weight1 [kg]
#define M2 0.10 // おもり2の質量, Mass of weight2 [kg]
// 初期値
// initial values
#define THETA1 170.0 // 角度, degree
#define THETA2 190.0 // 角度, degree
#define OMEGA1 0.0
#define OMEGA2 0.0
// 変数の数
// number of variables
#define DIM 4
/*------------------------------------------------------*/
extern void solve_double_pendulum_eqs_using_RK4( double v[DIM], double u[DIM][DIM] );
extern void double_pendulum_eqs( double v[DIM], double dfu[DIM][DIM], double dvdt[DIM], double df_k[DIM][DIM] );
extern void gram_schmidt_orth( double u[DIM][DIM], double e[DIM][DIM] );
extern double calc_lyap_dim( double lambda[DIM] );
extern double log2( double x );