カオス

田崎さんの U-tube カオス
http://www.gakushuin.ac.jp/~881791/d/0804.html#19
名前超ナイス。自分でもやってみた。
e00=0.099 あたりでカオティックになるけど、出てくる絵が田崎さんのとなんか違う。

そういえばNHK爆笑問題が研究者の話を聞きに行く番組でカオスの合原一幸さんの回。一見デタラメなデータを一つ前のデータと一緒にプロットするとこうきれいになります、って話が出てきて放物線が写ったんで「えーなんだロジスティック写像だったんか。でも現実の時系列データじゃそんなのありえなくない?」と思った。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//#define PI 3.14159265358979323843279
// Grav.acc
#define G 1.0
// Mass
#define M 1.0
// Charge
#define Q 1.0

int  main(int argc, char **argv){

    double v=1.0;
    double t=0.0;

    int i;
    // Field strength * U-region length
    double e00 = (double)atof(argv[1]);

    int lr=0; // left or right

    for(i=0;i<10000;i++)
    {
	if(lr==0)printf("%f %f\n",v, t);

	// free-fall time
	t += 2*v/G;
	t -= (int)t;

	// kinetic energy
	double ee = 0.5*v*v*M;
	// work done
	//double de = Q*e00*cos(2*PI*t);
	double de = Q*e00*cos(2*M_PI*t);

	if(lr==0) ee +=  de;
	else ee -=  de;

	if(ee>0.0)
	{
	    v= sqrt(2*ee/M);
	    lr = 1-lr;
	}
	else
	{
	    // Bounced back. v -> -v
	}
    }
}