数学ガール

2009年4月 5日 (日)

『数学ガール』が面白い

つい先日から読み始めた『数学ガール』が非常に面白い。
新しい発見、好奇心をそそる話題など、もっと早く読んどくんだった……。

例えば、自分が Scheme でプログラミングする際に作った階乗の特殊形が、「下降階乗冪」という名前で出てきたのを見て、「自分以外にも、組合せの計算で律儀に階乗を使って計算するのが面倒だと考えた人がいたのかな?」と思うと、ちょっとうれしくなったり……。

『オイラーの贈り物』で二項定理の説明を読んだときには、「そんなものなんだ……」という具合に流してしまったんだけど、『数学ガール』の中で、「n 個の x の中から何個の x をとるか」という説明をしてあるのを読んで、「これは確かに組合せになるなぁ……」とすっきりと納得ができたり……。

今のところ、難しい計算は飛ばしてとりあえず物語を読んで行く方針だけど、その次には本の中に出てきた計算を自分で確かめながらじっくりと読んでみようと思っている。

2009年4月 3日 (金)

数学ガール --- ωのワルツ

Omega1_5


遅ればせながら、昨日から『数学ガール』を読んでいます。

何となく買いそびれていたのですが、昨日、意を決して買ってみました。

いや〜おもしろい。しかも読みやすい。


ところでこの本の中に「ωのワルツ」という章がありますよね。

初項 C0 = 0, 公比 ω = ( -1 + √3 i ) / 2

の等比数列が、1, ω, ω² を繰り返すというやつです。

これが複素平面上で正三角形を形作るという話ですが、本当にそうなのか確かめたくて、 自作の「Turtle Graphics on Ruby/SDL」を使った、下記のようなスクリプトを作ってみました。

# # ωのワルツ # # from 『数学ガール』 # require 'turtle_graphics' require 'complex' class Turtle def move_to(x, y) dx = x.to_f - @x dy = y.to_f - @y case when (dx < 0) @angle = atan(dy / dx) / TO_RADIAN - 180 when (dx == 0) case when (dy < 0) @angle = 270 when (dy > 0) @angle = 90 end when (dx > 0) @angle = atan(dy / dx) / TO_RADIAN end len = sqrt(dx * dx + dy * dy) forward(len) end self end s = Screen.create s.set_zoom(160).grid_on s.set_speed(4) s.draw_circle(0, 0, 1, Blue) t = Turtle.new(1, 0) # Turtle.verbose_on t.set_color(Yellow) omega = Complex.new(-0.5, 0.5 * sqrt(3)) c = 1 loop do c = c * omega x = c.real y = c.image t.move_to(x, y) end s.main_loop

これは、横軸を実数軸、縦軸を虚数軸に見立てた複素平面で、ωの作る等比数列の示す点を 亀がたどって行くものです。青い円は複素平面の単位円です。

単に正三角形を描いているように見えますが、内部では虚数の計算をしながら、実際にωつくる 等比数列の項を順々に求めています。

こうして実際に亀が動く軌跡を見てみると、ちょっとした感動があります。


ちなみに

omega = Complex.new(0, 1)

とすると、『数学ガール』のp44の正方形上の移動を再現できます。

2016年7月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
フォト

最近のトラックバック

無料ブログはココログ