エクセルで描く

 ジャパニーズ・アトラクタ(Ueda's Attractor)を描く  
 
 Duffing方程式で 同位相 t=2nπ;n=0,1,2・・・をプロットしていく。

               dx/dt = y
               dy/dt = -ky-x^3+Bcos(t)

 (例)k=0.1 B=10  t=2nπ;n=0,1,2・・・ (初期値:x=0 y=0)の場合




Sub Jp_ATR()
Dim k0(2), k1(2), k2(2), k3(2)

div = 400
tmax = 10000

dt = 2 * 3.14159265 / div
t = 0
x = 0
y = 0


cnt = 0
cnt2 = 0
   
    Do

        k0(0) = dt * f1(t, x, y)
        k0(1) = dt * f2(t, x, y)
       
        k1(0) = dt * f1(t + dt / 2, x + k0(0) / 2, y + k0(1) / 2)
        k1(1) = dt * f2(t + dt / 2, x + k0(0) / 2, y + k0(1) / 2)
       
        k2(0) = dt * f1(t + dt / 2, x + k1(0) / 2, y + k1(1) / 2)
        k2(1) = dt * f2(t + dt / 2, x + k1(0) / 2, y + k1(1) / 2)
       
        k3(0) = dt * f1(t + dt, x + k2(0), y + k2(1))
        k3(1) = dt * f2(t + dt, x + k2(0), y + k2(1))
       
        x = x + (k0(0) + 2 * k1(0) + 2 * k2(0) + k3(0)) / 6
        y = y + (k0(1) + 2 * k1(1) + 2 * k2(1) + k3(1)) / 6
   
      If cnt Mod div = 0 Then
        Worksheets(1).Cells(6 + cnt2, 3) = x
        Worksheets(1).Cells(6 + cnt2, 4) = y
        cnt2 = cnt2 + 1
      End If
     
    cnt = cnt + 1
    t = t + dt

    Loop While t < tmax


End Sub

Function f1(t, x, y)
f1 = y
End Function

Function f2(t, x, y)
k = 0.1
b = 10
f2 = -k * y - x ^ 3 + b * Cos(t)
End Function

 



Math TOP