JAVA による カオス、フラクタル、自然現象
★:動画(物体の移動した軌跡、軌道に沿ってのアニメーション) ◎:図形を立体表示及び3軸(x,y,z)回転可能 Goto→Top Page 参考文献はこちらです。 Last Updated: 2001-12/29, 2002-7/05, 2009-01/19
カオスやフラクタル、自然現象を表す微分方程式の数値解等をPCスクリーン上に表示し、 その「かたち」を図形として、また動き(ダイナミックス(Dynamics、力学))として 視覚的に実感して見ます。値を様々に変更して数式(モデル)からの応答を得ます。 これは、数値シミュレーションそのものです。 数式(モデル)によっては初期値或いはパラメーターをほんのわずか変えただけでも、 応答が一変することがあったり、発散してしまって、結果が出ないこともあります。 個々の数式(モデル)毎に筆者がシミュレーションした時の数値を掲載しておきまし たので、読者の皆様がシミュレーションするときの参考にして下さい。 初期値:(x,y,z)、パラメーター:(a,b,c,d,u,v,t,A,B,k,r,,,)、図形の拡大倍数:(mx,my)、 積分時間間隔:(dt)、計算回数:(n)、表示速度:(spd) 等をキーイン入力、スクロールバー、 マウスにて様々に変更し、数値解を得てその数値をスクリーン上に点または折れ線で表示します。 数式表現における注意事項: ・指数はexp、平方根はsqrt、πはPIや3.141592、角度θはtheta、角速度ωはomega等と表示した。 ・微分の次数は、d2x/dt2 等と表示した。また、変数の微分の簡易表現としてドット表示すべきところ を x' や y' のように代用表現した箇所もある。 ・微分表示を差分表示する場合、xn,yn,xn1,yn1 等の変数を用いて、計算順序を表した。(添え字1が ついている変数は、添え字1のない変数を常に初期値とみなすこととして、積分(順次繰返し)計算する) ・累乗は、x2、x3、y2、y3 等として2乗、3乗を意味するものとした。 ・演算は、誤解のない限り数学上の表現によった。但し、乗算においては、変数と予約語、変数と他の変数 を明確にするため、”*” にて乗算を意味している箇所も多数ある。
カオス Go to Chaos Page #01 logistic2.htm xn1=a*xn*(1-xn); #02 ★ logistic330.htm : Bifurcation a=a+b*j; xn1=a*xn*(1-xn); #04 ★◎ azlz.htm xn1=xn+r*(-xn+yn)*dt; yn1=yn+(-xn*zn+m*xn-yn)*dt; zn1=zn+(xn*yn-b*zn)*dt; #05 ◎ azlzaddhyoji.htm #06 ★ sample9995.htm : 初期値鋭敏性 #07 ★◎ azrs.htm xn1=xn-(yn+zn)*dt; yn1=yn+(xn+r*yn)*dt; zn1=zn+(b+xn*zn-m*zn)*dt; フラクタル: #09 azjulia03.htm 拡大機能つき #09A azjuliasearch03.htm ジュリア集合を探す #10 azmandel03.htm 拡大機能つき ### fractals.htm フラクタル画像一覧表 その他のカオス的な図形: #11 ◎ aztest.htm x1= x[i]*cosB+z[i]*sinB; // x1の位置 z0=-x[i]*sinB+z[i]*cosB; y1= y[i]*cosA- z0*sinA; // y1の位置 #14 henon.htm xn1=a*(1-b*xn*xn)+c*(1-d*xn*xn)*xn+yn; yn1=e*xn; #15 gumomira.htm gn=m*xn+(2*(1-m)*xn*xn)/(1+xn*xn); xn1=yn+a*(1-b*yn*yn)*yn+gn; gn1=m*xn1+(2*(1-m)*xn1*xn1)/(1+xn1*xn1); yn1=-xn+gn1; #16 ★ gumomira2.htm gn=m*xn+(2*(1-m)*xn*xn)/(1+xn*xn); xn1=yn+a*(1-b*yn*yn)*yn+gn; gn1=m*xn1+(2*(1-m)*xn1*xn1)/(1+xn1*xn1); yn1=-xn+gn1; 数式の図形化、数式表現された自然現象の図形化、マルチメディア等: 数学:(θ=ωt) #20 ★ azlissajours.htm リサージュの図形 x=c*sin(aθ) y=d*sin(bθ) #21 ★ rainbow.htm 虹を作る g.setColor(Color.red); // 色の設定 g.fillArc(150,150,400,400,i,1); // アーチ #22 ★ rainbowclock.htm 虹色の時計を作る g.setColor(Color.red); // 色の設定 g.fillArc(150,150,400,400,i,2); // アーチ #24 ★ azspiral.htm アルキメデスのらせん: r=2*θ x=r*cos(θ) y=r*sin(θ) #25 ★ azcardioid.htm カーディオイド: Limason: r=a*cos(θ)+b の特別な形です。 r=a*(1+cos(θ)) x=r*cos(θ) y=r*sin(θ) #26 ★ az3leaf.htm 2〜n枚の葉を描く:Lemniscate レムニスケート r=a*cos(bθ) x=r*cos(θ) y=r*sin(θ) #27 ★ azinvolute.htm インボリュート図形: x=a*(cos(θ)+θ*sin(θ)) y=a*(sin(θ)-θ*cos(θ)) #28 ★ azasteroid.htm アステロイド図形 x=a*cos(θ)*cos(θ)*cos(θ) y=a*sin(θ)*sin(θ)*sin(θ) #29 ★ azcycloid.htm サイクロイド(b=1)、トロコイド(b≠1)図形 : x=a*(θ-b*sin(θ)) y=a*(1-b*cos(θ)) #30 ★ azzukei01.htm 三角関数を利用した図形(2D): rr=r0+sin(cθ) xn1=r*rr*cos(aθ-posi) yn1=r*rr*sin(bθ-posi) #32 azclothoid.htm クロソイド図形:高速道路のカーブ x=∫cos(u*u)du, y=∫sin(u*u)du xn1=xn+(cos(a*a))*b yn1=yn+(sin(a*a))*b 物理学、天文学: #40 ★ artsat00.htm 人工衛星の軌道 d2r/dt2-r(dθ/dt)2=-μ/(r2), 2(dr/dt)(dθ/dt)+rd2θ/dt2=0 #41 ★ tentai00.htm 天体(螺旋状軌道) xn1=rr*r*cos(θ); yn1=r*sin(θ); #42 ★ tentai01.htm 天体(バラ型軌道) r=r+2*sin(50*(sin(10θ))*θ); xn1=rr*r*cos(1.0θ); yn1=r*sin(θ); 力学、流体力学、電磁気学: #50 azforecast.htm 気象:短期予報 #51 azforecastlong.htm 気象:1週間〜1ヶ月予報 xn1=xn+(-(xn*gradxnx+yn*gradxny)+2*omega*Math.sin(phi)*yn -(1/dens)*(gradpresx)+fx)*dt; yn1=yn+(-(xn*gradynx+yn*gradyny)-2*omega*Math.sin(phi)*xn -(1/dens)*(gradpresy)+fy)*dt; #60 ★ azfoucault.htm フーコーの振子: xn1=v*sin(aθ)*cos(bθ); yn1=-v*sin(aθ)*sin(bθ); #61 ★ azkeiatu.htm 傾圧下の物体の運動 du/dt=fv dv/dt=-fu+grav #63 ★ azekman.htm 気象、海洋:エクマンスパイラル(2次元) u=a*(1-exp(-bθ))*(cos(bθ)) v=a*(exp(-bθ))*(sin(bθ)) z=θ #65 ★ azstewart.htm スチュアートの渦列:[d2x/dt2+4π2sinx=C] x0=0,x0'=0.1x4π。 x0=4πは区分線。 (1/2)*y*y-A*A*cos(x)=c #66 ★ azcatenary.htm 懸垂線、カテナリー y=(a/2)*(exp(x/a)+exp(-x/a)) #67 ★ azlotkavorterra.htm ロトカ・ボルテラの方程式:生態系 dx/dt=a*x-c*x*y dy/dt=-b*y+c*x*y #68 ★ azvanderpol.htm ファン・デル・ポールの方程式:自励振動の表現 d2y/dt2 -μ(1-y2)(dy/dt)+y=0 dx/dt=y とおき、微分の次数を下げる。 #69 ★ azjattractor.htm ジャパニーズ・アトラクター:ダフィン方程式のxがない場合。 (d2x/dt2)+k(dx/dt)+x3=Bcos(θ) dx/dt=y とおき、微分の次数を下げる。 #70 ★ azduffing.htm ダフィン方程式 d2x/dt2 +k(dx/dt)+x+x3=Bcos(θ) dx/dt=y とおき、微分の次数を下げる。 #71 azlobe.htm MainLobe & SubLobe :電波の指向性二次元表示 y=sinx/x 図形の照合、オーディオ作動: 分類未整理の方程式 #99 ★ azeq01.htm EQ01 dx/dt=y dy/dt=0.2*y+x-x*x*x #99 ★ azeq04.htm Runge kutta vs Euler d2y/dt2+siny=0 dy/dt=x dx/dt=-siny #99 ★ azeq08.htm Runge kutta vs Euler 付録: #101 chaos2programstructure.htm : JAVAプログラムの構造 Return to Home Page
AZure All rights reserved. Hajime Satoh, 2002 Copy Right.