エノン・ハイレスポテンシャルのポアンカレ断面




|極座標のグラフ>

<複素数平面の海|



フラクタルや美しい図形に戻る



目次



エノン・ハイレスポテンシャルのポアンカレ断面と顔


 エノン・ハイレスポテンシャルというポテンシャル†1を使い、顔のような模様を描くことができます。

†1 :ポテンシャルとは、中学や高校で習う位置エネルギーのことです。

エノン・ハイレスポテンシャルによる顔のような模様



 このページでは、エノン・ハイレスポテンシャルとポアンカレ断面について説明し、顔の模様を描く方法を説明します。

 また、プログラミング言語octaveにより、顔の模様を描くソースコードも載せておきます。

 このページの内容を完全に理解するには、大学で習う力学の知識が必要です。その知識がなくても、顔の模様を見てお楽しみください。

 動画もご覧ください。

エノン・ハイレスポテンシャルのポアンカレ断面




エノン・ハイレスポテンシャルとは


 エノン・ハイレスポテンシャルとは、

\[U(x,y)=\frac{1}{2}(x^2+y^2)+x^2y-\frac{1}{3}y^3\]

で表されるポテンシャルのことです。このポテンシャルの概形を描くと、下図のようになります。

エノン・ハイレスポテンシャルの3次元図
エノン・ハイレスポテンシャルの3次元図
エノン・ハイレスポテンシャルの原点付近の等高線図
エノン・ハイレスポテンシャルの原点付近の等高線図

 等高線図は、原点付近のものです。原点付近にはおにぎり形のくぼみがあるのが分かります。





ポアンカレ断面とは


 まず、位相空間†1について説明します。位相空間とは、運動する質点について、位置と速度を軸にとった空間のことです。

†1 :ここで言う位相空間は、物理学で使われている位相空間のことです。数学で使われている位相空間とは違うので、ご注意ください。

 運動する質点について位相空間を考え、その質点の位置や速度をプロットすることで、質点の運動を理解する助けになります。




 例えば、2次元の平面を運動する質点は、位置は$(x,y)$の2成分、速度も$(v_x,v_y)$の2成分を持っています。

 この質点について位相空間を考えると、位相空間は$(x,y,v_x,v_y)$の4つの軸を持つ、4次元空間だということになります。




 また、質点が一直線上を移動している場合は、質点の位置は$x$の1成分、質点の速度も$v$の1成分で表すことができます。なので、この質点の位相空間は、$(x,v)$の2次元空間だということになります。

 質点が、我々の住むような3次元空間を移動しているならば、その位相空間は6次元空間です。




 位相空間を考えることで質点の運動を理解しやすくなります。しかし、位相空間は次元が大きくなりやすく、図にしにくいという特徴を持っています。2次元空間は紙に描けますが、4次元空間や6次元空間は紙に描けません。




 物理にしろ、数学にしろ、図を使ってイメージするということはとても重要な作業です。なので、なんとかして位相空間を図にするため、ポアンカレ断面という考え方を使います。ポアンカレ断面とは、位相空間を切断した断面のことです。

位相空間とポアンカレ断面

 上の図の黒線は、質点の位相空間上の軌道で、水色の面はポアンカレ断面です。黒丸は、質点の位相軌道と断面が交差している点です。

 このように断面を考えて、質点の軌道が断面中のどこを通るか見てやれば、質点の位相軌道をイメージしやすくなります。





エノン・ハイレスポテンシャルのポアンカレ断面


 ここまでで、エノン・ハイレスポテンシャルとポアンカレ断面について説明してきました。

 これから、冒頭に出てきた顔の描き方を説明します。




 エノン・ハイレスポテンシャルの、おにぎり形のくぼみの中で質点を運動させてみましょう。質点の位置を$(x,y)$速度を$(v_x,v_y)$とします。

 初期条件は、初期位置$(0,0)$、初速度$(\sqrt{0.125},0)$です。この条件は、質点を原点から$x$軸正の方向へ向けて、速度$\sqrt{0.125}$で打ち出すという運動です。




 なお、この時の質点の運動エネルギーは、質量を1とすると

$\frac{1}{2}mv^2=\frac{1}{2} \times \sqrt{0.125}^2=0.0625$

となっています。




 この条件の下で質点の軌道を描くと、下図のようになります。青い線が質点の軌道です。

エノン・ハイレスポテンシャル中を運動する質点の軌道



 ここで、質点が位置$x=0$を通過した時の、$(y,v_y)$の値をグラフに点でプロットしていきます。すると、下図のようになります。

顔の一部



 何となく顔の一部が見えてきました。さて、顔を完成させましょう。次は、質点のエネルギーを変えずに、初速度の向きを少しだけ変えて運動させ、そのときの$(y,v_y)$の値を上のグラフに重ねてプロットします。

 初速度の向きを少しずつ変えながら$(y,v_y)$をプロットしていくと、ようやく顔の完成です。

エノン・ハイレスポテンシャルによる顔のような模様



 初期条件のエネルギーの値を変えると、顔の模様が少しずつ変化します。エネルギーを変えてプロットしてみましょう。

エノン・ハイレスポテンシャルによる顔のような模様
エノン・ハイレスポテンシャルによる顔のような模様
エノン・ハイレスポテンシャルによる顔のような模様
エノン・ハイレスポテンシャルによる顔のような模様



 また、$x=0$でのポアンカレ断面という条件は変えず、$(y,v_y)$ではなく、$(v_x,v_y)$$(v_x,y)$をプロットてみましょう。

エノン・ハイレスポテンシャルによる模様
エノン・ハイレスポテンシャルによる模様




octaveによる描画


 最後に、顔の模様を描くoctaveプログラムを載せておきます。下のプログラムソースは、計算速度を速めるため、計算回数を少なくしています。このソースで描くことができたら、tmaxを1000、mmaxを50などにし、より詳細な顔の模様を描いてみてください。




clear;
clf;

function xdot=xdot(x,t)
    m=1;
    k=1;
    xdot(1)=x(2);
    xdot(2)=(-k*x(1)-2*x(1).*x(3))/m;
    xdot(3)=x(4);
    xdot(4)=(-k*x(3)-x(1).^2+x(3).^2)/m;
endfunction

tmax=100;
cut=0.05;
t=[0:cut:tmax];

E=0.125;
mmax=10;

for m=1:mmax
    vx0=abs((m/mmax)*(2*E)^0.5);
    vy0=abs((2*(E-0.5*vx0^2))^0.5);
    x0=[0 vx0 0 vy0];
    R=lsode("xdot",x0,t);
    x=R(:,1);
    vx=R(:,2);
    y=R(:,3);
    vy=R(:,4);
    for k=1:tmax/cut
        if x(k).*x(k+1)<0
            yp=y(k);
            vyp=vy(k);
            plot(yp,vyp,"markersize",0.1,"bo")
            hold on
        endif
    endfor
endfor

axis([-0.8 0.8 -0.8 0.8],"square")
xlabel("y","fontsize",20)
ylabel("Vy","fontsize",20)







 このプログラムの説明をします。最初のfnctionは、エノン・ハイレスポテンシャルでの運動方程式です。後にlsodeで運動方程式を解くため、関数として定義しています。

 次のtmaxとcutは、一つの軌道の計算回数を決めます。tは時間を表し、lsodeで運動方程式を解くときに使います。

 Eは質点のエネルギーを決める定数です。これを変えると顔の形が変わります。

 mmaxについてですが、顔の模様を描くときの説明で、質点の初速度の向きを少しづつ変えながらプロットすると書きました。mmaxは向きを変える回数です。全部で20回、初速度の向きを変えてプロットを行います。

 次の、mについてのfor文中では、1つの初期条件について質点の軌道を計算しています。

 R=lsodeの部分で運動方程式を解き、質点の軌道を計算しています。x,y,vx,vyは質点の位置と速度です。

 次のforとif文では、x=0のときのy,vyを求めるため、lsodeで求めた質点の軌道データから、x=0となる点を探しています。

 具体的には、xの符号が変化する部分を探し、その部分で質点がx=0を通ると見なします。その時のy,vyの値を抜き出し、グラフに点でプロットしています。


|極座標のグラフ>

<複素数平面の海|



フラクタルや美しい図形に戻る

ホームページのTOPに戻る