グモウスキー・ミラの写像

a
b
μ
初期値:x0
初期値:y0



解説

「グモウスキー・ミラの写像」の式は、次式で与えられる。
xt+1yta(1-byt2ytGxt

yt+1=-xtGxt+1

  2(1-μxt2
Gxt)=μ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




ソースコード

gumowskimira.html

<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>

gumowskimira.js

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>");
}



Shadow Academy トップへ戻る

inserted by FC2 system