コッホ曲線
線分を3等分し、分割した2点を頂点とする正三角形の作図を無限に繰り返すことによって得られる図形
From Wikipedia, the free encyclopedia
コッホ曲線(コッホきょくせん、英: Koch curve)はフラクタル図形の一つ。スウェーデンの数学者ヘルゲ・フォン・コッホ (Helge von Koch) が考案した[1]。線分を3等分し、分割した2点を頂点とする正三角形の作図を無限に繰り返すことによって得られる図形である。1回の操作で線分の長さが 4/3 倍になるので、操作を無限に繰り返して得られるコッホ曲線の長さは無限大である[2]。高木曲線などと同様に、連続でありながら至るところで微分不可能な曲線である[3]。
コッホ曲線は相似比が 1/3 の4個のセグメントから成っているので、フラクタル次元(相似次元)は、3 を底とする 4 の対数(logを必ずしも自然対数である必要はない任意の対数として、log 4/log 3 = 1.2618595...次元)である[4]。(A100831)
コッホ曲線の作成手順
コッホ雪片
コンピュータによる生成
コッホ曲線は、アフィン変換を使用することで得られ、
- 1/3 でスケーリングする変換式
- 1/3 でスケーリングし、60°回転させる変換式
- 1/3 でスケーリングし、-60°回転させる変換式
- 1/3 でスケーリングする変換式
反復関数 ƒ(x, y) は、ax+by+e, cx+dy+f の式で展開できるので、計算式は以下のように表される。
ƒ1
- x n + 1 = (1/3) x n
- y n + 1 = (1/3) y n
ƒ2
- x n + 1 = (1/6) x n −(√3/6) y n + 1/3
- y n + 1 = (√3/6) x n + (1/6) y n
ƒ3
- x n + 1 = (1/6) x n + (√3/6) y n + 1/2
- y n + 1 = −(√3/6) x n + (1/6) y n + (√3/6)
ƒ4
- x n + 1 = (1/3) x n + 2/3
- y n + 1 = (1/3) y n
これらの反復関数を各種プログラム言語(C, Python, Basicなど)でプログラミングし、順次反復計算させ、コッホ曲線を描画させることが可能である[7]。
また、下表のように各反復関数の確率因子を設定[8]しておき、コンピューターで乱数を発生させ、確率因子pに応じた乱数範囲で用いる関数を決定し、計算を反復的に実行することでも、コッホ曲線を描画させることができる。これはランダム・アルゴリズムと呼ばれる手法である[9][10]。
| w | a | b | c | d | e | f | p | 変換内容 |
|---|---|---|---|---|---|---|---|---|
| ƒ1 | 1/3 | 0 | 0 | 1/3 | 0 | 0 | 0.25 | 1/3にスケーリング |
| ƒ2 | 1/6 | -√3/6 | √3/6 | 1/6 | 1/3 | 0 | 0.25 | 1/3にスケーリング、60°回転 |
| ƒ3 | 1/6 | √3/6 | -√3/6 | 1/6 | 1/2 | √3/6 | 0.25 | 1/3にスケーリング、-60°回転 |
| ƒ4 | 1/3 | 0 | 0 | 1/3 | 2/3 | 0 | 0.25 | 1/3にスケーリング |
以下のように表計算ソフトの関数を利用することでも同様の計算を実行できる。

| A | B | C | D | E | F | G | H | |
|---|---|---|---|---|---|---|---|---|
| 1 | w | a | b | c | d | e | f | p |
| 2 | ƒ1 | 0.3333 | 0 | 0 | 0.3333 | 0 | 0 | 0.25 |
| 3 | ƒ2 | 0.1667 | -0.2887 | 0.2887 | 0.1667 | 0.3333 | 0 | 0.25 |
| 4 | ƒ3 | 0.1667 | 0.2887 | -0.2887 | 0.1667 | 0.5 | 0.2887 | 0.25 |
| 5 | ƒ4 | 0.3333 | 0 | 0 | 0.3333 | 0.6667 | 0 | 0.25 |
| 6 | random | ƒ | X | Y | ||||
| 7 | 0 | 0 | ←initial | |||||
| 8 | =RAND() | B8 | C8 | D8 | ←data |
なお、B8,C8,D8のセルには以下のような複数条件判定の関数(ネスティング参照)を入力する。
- B8=IF(A8<($H$2),1,IF(A8<($H$2+$H$3),2,IF(A8<($H$2+$H$3+$H$4),3,4)))
- C8=IF(B8=1,$B$2*C7+$C$2*D7+$F$2,IF(B8=2,$B$3*C7+$C$3*D7+$F$3,IF(B8=3,$B$4*C7+$C$4*D7+$F$4,$B$5*C7+$C$5*D7+$F$5)))
- D8=IF(B8=1,$D$2*C7+$E$2*D7+$G$2,IF(B8=2,$D$3*C7+$E$3*D7+$G$3,IF(B8=3,$D$4*C7+$E$4*D7+$G$4,$D$5*C7+$E$5*D7+$G$5)))
最終8行目をオートフィルで適当な行数だけコピーし、XY散布図とするとコッホ曲線が得られる。


