「グモウスキー・ミラの写像」の式は、次式で与えられる。
xt+1=yt
+a(1-byt2)yt
+G(xt)
yt+1=-xt+G(xt+1)
2(1-μ)xt2 | |
G(xt)=μxt+ | |
1+xt2 |
各テキストフィールドに数値を入力後、「計算する」ボタンを押すと、
新しいページにデータが生成されるので、そこで、「全て選択」して、
テキストエディタを起動して、ファイルにコピーペーストし、名前を付けて保存する。
ここでは、Cドライブ以下のtempフォルダに「gumowskimira.dat」という名前で保存する。
これをグラフ作成ツール「gnuplot」を用いて、グラフ化するには、
gnuplotを起動して、以下のコマンドを入力する。
横軸をx、縦軸をyとして出力
set terminal png set output 'c:\temp\gumowskimira.png' plot 'c:\temp\gumowskimira.dat' using 1:2 with dots exit |
<form name="gmform"> <table border="5" style="margin-left:auto;margin-right:auto;text-align:center;"> <tr> <td align="right"><i>a</i>=</td> <td align="left"><input type="text" name="a"></td> </tr> <tr> <td align="right"><i>b</i>=</td> <td align="left"><input type="text" name="b"></td> </tr> <tr> <td align="right"><i>μ</i>=</td> <td align="left"><input type="text" name="mu"></td> </tr> <tr> <td align="right">初期値:<i>x</i><sub>0</sub>=</td> <td align="left"><input type="text" name="x0"></td> </tr> <tr> <td align="right">初期値:<i>y</i><sub>0</sub>=</td> <td align="left"><input type="text" name="y0"></td> </tr> </table> <input type="button" value="計算する" onClick="gmcalc()"> </form> |
function gmcalc(){ var t,a,b,mu; /* ループ変数と各変数 */ var x=new Array(10001); var G=new Array(10001); var y=new Array(10001); /* 10001個の値(n[0],...,n[10000]) を格納する配列G,x,yを宣言 */ a=parseFloat(document.gmform.a.value); b=parseFloat(document.gmform.b.value); mu=parseFloat(document.gmform.mu.value); x[0]=parseFloat(document.gmform.x0.value); /* xの初期値 */ G[0]=mu*x[0]+2*(1-mu)*x[0]*x[0]/(1+x[0]*x[0]); y[0]=parseFloat(document.gmform.y0.value); /* yの初期値 */ document.writeln("<html>"); document.writeln("<head>"); document.writeln("<title>グモウスキー・ミラの写像</title>"); document.writeln("</head>"); document.writeln("<body bgcolor='#ffd700' text='#000000'>"); document.writeln("<pre>"); for(t=0;t<10000;++t){ x[t+1]=y[t]+a*(1-b*y[t]*y[t])*y[t]+G[t]; G[t+1]=mu*x[t+1]+2*(1-mu)*x[t+1]*x[t+1]/(1+x[t+1]*x[t+1]); y[t+1]=-x[t]+G[t+1]; document.writeln(x[t]," ",y[t]," ",G[t]); } document.writeln("</pre>"); document.writeln("</body>"); document.write("</html>"); } |