Ruby でローレンツアトラクタを描画する
Ruby + gnuplot でローレンツアトラクタを描いてみました。
全体的にここなどを参考にしました。微分方程式はオイラー法(参考)で数値計算しています。
gnuplot での描画は numo/gnuplot という Gem を使っています。
require 'numo/gnuplot' fx = lambda {|x, y, z, r, p, b| -p * x + p * y} fy = lambda {|x, y, z, r, p, b| -x * z + r * x - y} fz = lambda {|x, y, z, r, p, b| x * y - b * z} dt = 1e-3 x, y, z = 1, 1, 1 p, r, b = 10, 28, 8 / 3.0 ax, ay, az = [], [], [] 100000.times do x += dt * fx[x, y, z, r, p, b] y += dt * fy[x, y, z, r, p, b] z += dt * fz[x, y, z, r, p, b] ax << x ay << y az << z end Numo.gnuplot do unset :key splot ax, ay, az, w: :dots end gets #終了待ち