黄金比と生物(人)の話、ドラゴン曲線

  • 松ぼっくりを見つけた。
  • その時、松ぼっくりのつぶつぶの配置に、フィボナッチ数列が潜んでいる話を思い出した。
  • そこで、生物において、フィボナッチ数列がどんなときに現れるのか、ということが気になって調べてみた。
  • こちらの文献をまとめる。
  • 導入
  • 古典幾何は、三角、四角(正方形、長方形)
    • 建物とかには良い
    • 非線形な形には厳しい
      • 自然界によくある
  • フラクタル幾何は良い
    • 自己相似性
    • 非整数次元とか
  • 古典幾何の形は、大概、式で一発で表せる
  • フラクタル幾何は、関数をかける操作を繰り返すことで形を得る(作る)
    • フラクタル幾何の形が、自然と似ているので、作り方が似ているのかと疑問が出る
  • フラクタルの重要な2点
    • 自己相似性
    • 非整数か非全数の値
      • 連続的にとれるわけじゃないみたいな意味?
      • まっすぐにするのが難しい(どっか欠けてる)
    • 無限に相似
      • いろんな階層で
        • ひまわり、雪山、骨
  • 自然の至るところに出てくるフラクタル幾何に基づく自己相似性
    • ただの確率的なことか、機能的なものか
  • 生物の創造と設計を表す式が定められていないが、黄金比やFibonacci数列は考える出発点の1つ
  • Fibonacci数列
    • 0か1で始め、次の数は前の2つの和
    • 再帰
  • 黄金比
    • 2つの連続する数の比が、黄金比に近づく
  • 黄金長方形
    • 正方形は2つの辺。
    • 数列の数の辺の長さを持つ正方形を繋げていく
    • すると、長方形に、正方形をたして、大きな長方形を作る操作になる。
    • この頂点を結んでいくと、黄金螺旋が出来る
    • 自然界
      • 貝殻(オウムガイ)
      •  握りこぶし
        • 頂点は関節
      • 手の骨の長さがフィボナッチ数列っぽい
        • 1、1.3、2.3
        • 1、1、2
      • 顔の美しさ
        • 顔のパーツ内の黄金比を探す試みがあった
        • 客観的美しさは島皮質で、
        • 主観的美しさは扁桃体
        • 黄金比が解剖学的な観点で現れても、それを顔の美しさの指標とするのは、良くない。
      • 葉序
      • 冠動脈
      • 心拍
        • 心拍の中の黄金比
        • 拡張期間隔と収縮期間隔の比
        • R波とR波の間隔と拡張期間隔の比
      • 人DNA
        • DNAのコドンの配列の出てくる数を数え上げる
        • すると、その比に黄金比が出てくることがある。
        • Dragon曲線
          • 線分がある
          • それを直角に折り曲げる
            • 折り曲げた時の角は固定
          • 折り曲げた時に出来た辺を直角に折り曲げる
            • その時、折り曲げ方は交互に(右90°なら、次の(隣接する)場所は、左90°)
          • これを繰り返す
        • カオス理論、フラクタル幾何、アトラクターとかが出てくる
  • DNAとフラクタルの話に興味が出た。
  • ドラゴン曲線はこちら
  • コードの参考にしたサイトはこちら。(この人、統計やってる方の模様)
  • 初めてフラクタルを書いたので、書き方に慣れていなかった
    • 再帰的にしつつ、
    • 最後の部分(葉)で描くようにすれば上手くいくみたい
    • 分枝させつつ、再帰に持って行く
    • 再帰回数の上限を決めて、そこを葉として、描く操作を足す
  • 今回は3次元にしてみた。(ちょっと込み入ったところはわかりにくいが)

 

#%matplotlib inline
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from math import *
#from cmath import *

fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(111, projection='3d')
def dragon(i,dx,dy,sign):
  global x,y,z,dz
  if i == 0:
    ax.plot([x,x+dx],[y,y+dy],[z,z+dz],color = "green")
    x += dx
    y += dy
    z += dz
  else:
    dragon(i-1,(dx-sign*dy)/2,(dy+sign*dx)/2,1)
    dragon(i-1,(dx+sign*dy)/2,(dy-sign*dx)/2,-1)

x = y = z = 0
dz = 1
dragon(10,100,0,1)
ax.set_title("Dragon Plot",size =20,color= "red")
plt.show()

f:id:medical-science:20220207010854p:plain

フラクタル幾何はまたまとめるとする。

バイバイ!