/*------------------------------------------------------------------------------------------
ピーター・デ・ジョング写像とヤコビ行列(線形化したピーター・デ・ジョング写像)
Peter de Jong map and the Jacobian matrix (linearized Peter de Jong map)
solve_peter_de_jong_eqs.c
------------------------------------------------------------------------------------------*/
#include "peter_de_jong_lyap.h"
void Peter_de_Jong_eqs( double (*x), double (*y), double u[DIM][DIM] )
{
int i, j, k;
double xx;
double yy;
double d2;
double df[DIM][DIM];
double dfu[DIM][DIM];
// ピーター・デ・ジョング写像
// Peter de Jong map
xx = sin( A * (*y) ) - cos( B * (*x) );
yy = sin( C * (*x) ) - cos( D * (*y) );
(*x) = xx;
(*y) = yy;
// ヤコビ行列
// Jacobian matrix
df[0][0] = B * sin( B * (*x) );
df[0][1] = A * cos( A * (*y) );
df[1][0] = C * cos( C * (*x) );
df[1][1] = D * sin( D * (*y) );
/*
| df[0][0] df[0][1] |
df = | |
| df[1][0] df[1][1] |
*/
// ヤコビ行列を用いて微小変位ベクトルを計算
// calculate the micro-displacement vector using the Jacobian matrix
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] * u[k][j];
}
dfu[i][j] = d2;
}
}
for ( i = 0; i < DIM; i++ ) {
for ( j = 0; j < DIM; j++ ) {
u[i][j] = dfu[i][j];
}
}
}