JAVA による カオスの図形表現
Goto→Top Page 参考文献はこちらです。 EXCEL-Coding による図形 Last Updated: 2001-11/30,12/29, 2002-1/02,1/03,1/05,1/06,1/09,1/11,1/17,1/18,4/09,4/10,5/05,6/02,6/15,6/21,6/26 2004-4/17
カオス: このWebはカオスを視覚的に研究する一助とするためのものです。この目的のため、     ・初期値やパラメータを順次変更することにより、軌道がいかに追随変化していくかを見る、     ・画像(軌道)を時間軸にそって動かし、軌道がいかに発達(収束・発散)していくかを見る、     ・画像(軌道)をX−Y−Zの3軸まわりに回転し、一つの軌道と隣接していると見える他の      軌道との空間的位置関係を見る、     ・軌道を拡大・縮小し、細部の様子や、大局的把握を行なう、     等の作業が可能です。これらの機能により、3次元空間のなかで様々な角度や大きさで軌道の     Dynamicsを観察することが出来ます。 #01 logistic2.htm ロジスティック関数(パラメーターを変えて、カオスになる様子を把握することができる) xn1=a*xn*(1-xn);   #02 ★ logistic330.htm : Bifurcation ロジスティック関数の熊手分岐 a=a+b*j; xn1=a*xn*(1-xn); #03 ★ henon330.htm : Bifurcation 熊手分岐  a=a+b*j; xn1=1-a*xn*xn+yn; yn1=B*xn; #04 ★◎ azlz.htm ローレンツのストレンジ・アトラクター(3次元表示、2軸回転機能付き。変化の様子を見る。)      ローレンツモデルの微分方程式は、以下の3つの方程式にて数値計算し、数値解を求めます。      この解(x,y,z)を順次連ねると、軌道としての図形が得られます。 xn1=xn+r*(-xn+yn)*dt; yn1=yn+(-xn*zn+m*xn-yn)*dt; zn1=zn+(xn*yn-b*zn)*dt; #05 ◎ azlzaddhyoji.htm ローレンツのストレンジ・アトラクター(3次元表示、3軸回転機能付き、ズーム機能付き) #06 ★ sample9995.htm : 初期値鋭敏性  初期値のわずかな違いによる誤差の発達を実感できます。 #07 ★◎ azrs.htm レスラーのアトラクター(3次元表示、2軸回転機能付き。変化の様子を見る。)      レスラーの微分方程式は、以下の3つの方程式にて数値計算し、数値解を求めます。      この解(x,y,z)を順次連ねると、軌道としての図形が得られます。 xn1=xn-(yn+zn)*dt; yn1=yn+(xn+r*yn)*dt; zn1=zn+(b+xn*zn-m*zn)*dt; #08 ◎ azrsaddnhyoji.htm レスラーのアトラクター(3次元表示、3軸回転機能付き、ズーム機能付き) その他のカオス的な図形: #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; #17 ★ azeq02lz.htm Lorenzの本より (計算は、Euler method による) dx/dt=x-y-x3 dy/dt=x-x2y #18 ★ azeq03lz.htm Lorenzの本より (計算は、Runge Kutta method による) dx/dt=x-y-x3.................=f1(x,y) K1=h*((x)-y-Math.pow((x),3)); K2=h*((x+K1/2.0)-y-Math.pow((x+K1/2.0),3)); K3=h*((x+K2/2.0)-y-Math.pow((x+K2/2.0),3)); K4=h*((x+K3)-y-Math.pow((x+K3),3)); //K4=0;K3=0;K2=0; K=(K1+2*K2+2*K3+K4)/6.0; //K=K*2.0; dy/dt=x-x2y..................=f2(x,y) L1=h*(x-x*x*y); L2=h*(x-x*x*(y+L1/2.0)); L3=h*(x-x*x*(y+L2/2.0)); L4=h*(x-x*x*(y+L3)); //L4=0;L3=0;L2=0; L=(L1+2*L2+2*L3+L4)/6.0; //L=L*2.0;
カオスやフラクタル、自然現象を表す微分方程式の数値解等をPCスクリーン上に表示し、 その「かたち」を図形として、また動き(ダイナミックス(Dynamics、力学))として 視覚的に実感して見ます。値を様々に変更して数式(モデル)からの応答を得ます。 これは、数値シミュレーションそのものです。 数式(モデル)によっては初期値或いはパラメーターをほんのわずか変えただけでも、 応答が一変することがあったり、発散してしまって、結果が出ないこともあります。 個々の数式(モデル)毎に筆者がシミュレーションした時の数値を掲載しておきまし たので、読者の皆様がシミュレーションするときの参考にして下さい。 初期値:(x,y,z)、パラメーター:(a,b,c,d,u,v,t,A,B,k,r,,,)、図形の拡大倍数:(mx,my)、 積分時間間隔:(dt)、計算回数:(n)、表示速度:(spd) 等をキーイン入力、スクロールバー、 マウスにて様々に変更し、数値解を得てその数値をスクリーン上に点または折れ線で表示します。 (spd=1のときは点列、SPD≠1のときは実線で表示します) 数式表現における注意事項: ・指数はexp、平方根はsqrt、πはPIや3.141592、角度θはtheta、角速度ωはomega等と表示した。 ・微分の次数は、d2x/dt2 等と表示した。また、変数の微分の簡易表現としてドット表示すべきところ  を x' や y' のように代用表現した箇所もある。 ・微分表示を差分表示する場合、xn,yn,xn1,yn1 等の変数を用いて、計算順序を表した。(添え字1が  ついている変数は、添え字1のない変数を常に初期値とみなすこととして、積分(順次繰返し)計算する) ・累乗は、x2、x3、y2、y3 等として2乗、3乗を意味するものとした。 ・演算は、誤解のない限り数学上の表現によった。但し、乗算においては、変数と予約語、変数と他の変数  を明確にするため、”*” にて乗算を意味している箇所も多数ある。
Return to Home Page AZure All rights reserved. Hajime Satoh, 2002 Copy Right.