/*------------------------------------------------------------------------
エノン写像とヤコビ行列(線形化したエノン写像)
Henon map and the Jacobian matrix (linearized Henon map)
solve_henon_eqs.c
------------------------------------------------------------------------*/
#include "henon_lyap.h"
void henon_eqs( double (*x), double (*y), double dfQ[DIM][DIM], double Q[DIM][DIM] )
{
int i, j, k;
double xx;
double yy;
double d2;
double df[DIM][DIM]; // ヤコビ行列, Jacobian matrix
// エノン写像
// Henon map
xx = 1.0 - A * (*x) * (*x) + (*y);
yy = B * (*x);
(*x) = xx;
(*y) = yy;
// ヤコビ行列
// Jacobian matrix
df[0][0] = -2.0 * A * (*x);
df[0][1] = 1.0;
df[1][0] = B;
df[1][1] = 0.0;
/*
| df[0][0] df[0][1] |
df = | |
| df[1][0] df[1][1] |
*/
// ヤコビ行列dfと行列Qの積dfQの計算
// calculate the product dfQ of the Jacobian matrix df and the matrix Q
for ( i = 0; i < DIM; i++ ) {
for ( j = 0; j < DIM; j++ ) {
d2 = 0.0;
for ( k = 0; k < DIM; k++ ) {
d2 += df[i][k] * Q[k][j];
}
dfQ[i][j] = d2;
}
}
}