[数学] 黄金比の循環調和曲線
黄金比を適用した、循環調和曲線の数式を説明します。また、複数の循環調和曲線の図を作成する、SageMath スクリプトも公開します。
(There is the English(英語) page.)
(最終更新日: 2021年2月21日)
前書き
循環調和曲線とは、“cyclic-harmonic curve” 1 2 3 のことです。 まだ、一般的に通用する日本語訳がないようなので、個人的に訳してみました(直訳です)。
Web で、バラ曲線 (または、正葉曲線) の勉強をしているときに、循環調和曲線のことを知りました。
この曲線を描いた図の中に、大小の花びらで構成されたような図があります。先に示した図もその一つです。今回は、このような図の、大小の花びらの長さに、黄金比 を適用してみました。その数式を、以下 に説明します。
また、黄金比を適用した、複数の循環調和曲線の図を作成する、SageMath スクリプトも作成しました。そのスクリプトは、このページの 後半 で公開します。
黄金比の循環調和曲線
循環調和曲線の数式
循環調和曲線は、以下の極座標の方程式で表されます。
\[r = a \cos \left( \frac{n}{d} \, \theta \right) + b\]
- \(n\) と \(d\) は、正の整数です。
- \(a\) と \(b\) は、正の実数です。
- \(\theta\) は、\(0\) から \(2d \pi\) まで、変化します。
ちなみに、この式の \(b\) を \(0\) にした場合が、バラ曲線 に該当します。
循環調和曲線を描いた図は、以下の条件のときに、大小の花びらで構成されたような図になります。
- \(n \geq d\)
- \(a>b\)
このとき、大小の花びらの枚数は、同じ数で、以下の式で求められます。
\[\frac{n}{\mathrm{gcd}(n,d)}\]
また、大小の花びらの長さは、以下の式で求められます。
- 大きな花びらの長軸の長さ (下図の \(l\) ) は、\(a+b\) です。
- 小さな花びらの長軸の長さ (下図の \(s\) ) は、\(a-b\) です。
黄金比の適用
今回は、大小の花びらの長さの比率を、以下のように、黄金比 にします。
\[s : l = (l-s) : s = 1 : \frac{1 + \sqrt{5}}{2}\]
この式に、花びらの長さの式を代入すると、以下のようになります。
\[(a-b) : (a+b) = 1 : \frac{1 + \sqrt{5}}{2}\]
循環調和曲線の式の変数 \(a\) は、図の倍率に相当します。 そこで式を単純にするために、\(a=1\) とします。すると、前述の式は、以下のようになります。
\[(1-b) : (1+b) = 1 : \frac{1 + \sqrt{5}}{2}\]
\[\therefore \; (1-b) \times \frac{1 + \sqrt{5}}{2} = 1+b\]
この式を \(b\) について解くと 4 、以下のようになります。
\[b = \sqrt{5} -2 \approx 0.236 >0\]
\(a\) と \(b\) が決定したので、大小の花びらの長さを計算してみると、それぞれ、以下のようになります。 5
\[\begin{align*} l & = 1 + \left( \sqrt{5} -2 \right) \approx 1.236 \\ s & = 1 - \left( \sqrt{5} -2 \right) \approx 0.764 \end{align*}\]
最後に、循環調和曲線の式に、決定した \(a\) と \(b\) の値を代入すると、以下のようになります。
\[r = \cos \left( \frac{n}{d} \, \theta \right) + \sqrt{5} -2\]
あとは、この式の \(n\) と \(d\) に、いろいろな数値を代入すれば、黄金比で構成された、様々な図を描くことができます。
以下に、例を示します。
例1 : \(n=1\) , \(d=1\)
\(n\) と \(d\) は、\(n=1\) と \(d=1\) の組み合わせが、一番簡単な例になります。
以下に、使用した数式と、SageMath version 9.0 での実行結果を、順に示します。
\[r = \cos \theta + \sqrt{5} -2\]
sage: var('θ') # シンボリック変数 θ を作成します。一回だけ実行すれば良いです。
sage: polar_plot(cos(θ)+sqrt(5)-2, (θ, 0, 2*pi), plot_points=200)
上図で、大小の花びらの長さが、計算した値と等しいことを、確認できます。
例2 : \(n=3\) , \(d=1\)
\[r = \cos 3 \theta + \sqrt{5} -2\]
sage: polar_plot(cos(3*θ)+sqrt(5)-2, (θ, 0, 2*pi), plot_points=200)
例3 : \(n=5\) , \(d=3\)
\[r = \cos \left( \frac{5}{3} \, \theta \right) + \sqrt{5} -2\]
sage: polar_plot(cos((5/3)*θ)+sqrt(5)-2, (θ, 0, 2*3*pi), plot_points=200*3)
例4 : \(n=12\) , \(d=7\)
前述の3つの例で、花びらの長さが、計算した値と等しいことを、確認できたと思います。そこで、これ以降の例では、図形の美しさを楽しめるように、座標軸を表示しないことにします。
\[r = \cos \left( \frac{12}{7} \, \theta \right) + \sqrt{5} -2\]
sage: polar_plot(cos((12/7)*θ)+sqrt(5)-2, (θ, 0, 2*7*pi), plot_points=200*7, axes=False)
例5 : \(n=25\) , \(d=6\)
\[r = \cos \left( \frac{25}{6} \, \theta \right) + \sqrt{5} -2\]
sage: polar_plot(cos((25/6)*θ)+sqrt(5)-2, (θ, 0, 2*6*pi), plot_points=200*6, axes=False)
例6 : \(n=49\) , \(d=6\)
\[r = \cos \left( \frac{49}{6} \, \theta \right) + \sqrt{5} -2\]
sage: polar_plot(cos((49/6)*θ)+sqrt(5)-2, (θ, 0, 2*6*pi), plot_points=200*6, axes=False)
複数の循環調和曲線の図を作成するスクリプト
前述した、循環調和曲線の式から、複数の図を、まとめて作成するための、SageMath スクリプトと、その作成例を、以下に示します。
stop_int = 50 # >= 2
file_ext = "svg"
#file_ext = "png"
var('θ') # Create a symbolic variable 'θ'
for numer in range(1, stop_int): # Numerator
for denom in range(1, (numer + 1)): # Denominator
if gcd(numer, denom) != 1:
continue
c_h_curve = polar_plot( cos((numer/denom)*θ)+sqrt(5)-2, \
(θ, 0, 2*denom*pi), plot_points=200*denom)
file_name = "c_h_curve_" + str(numer) + "_" + str(denom) + \
"_gold." + file_ext
c_h_curve.save(file_name, axes=False)
print(file_name + " saved.")
このスクリプトを実行するには、スクリプトのコピーをファイル (例えば、make_figures.sage
) に保存し、端末で、以下のコマンドを実行してください。
$ sage make_figures.sage
このスクリプトは、\(n\) と \(d\) の値の、\(1\) から \((\mathrm{stop\_int} -1)\) までの範囲の、全ての組み合わせの図を作成します。 ただし、同じ形の図になる、一部の \(n\) と \(d\) の値の組み合わせの図は、出力しないようにしています。
例えば、以下の3つの循環調和曲線の式は、同じ形になります。
\[\begin{align*} r & = \cos \left( \frac{3}{2} \, \theta \right) + \sqrt{5} -2 \\[0.5em] r & = \cos \left( \frac{6}{4} \, \theta \right) + \sqrt{5} -2 \\[0.5em] r & = \cos \left( \frac{9}{6} \, \theta \right) + \sqrt{5} -2 \end{align*}\]
このスクリプトでは、一番目の図のみ出力し、それ以降の同じ形の図は、出力しません。 そのため、このスクリプトで出力される図は、全て違う形になります。
スクリプト内の、\(\mathrm{stop\_int}\) 変数の値を変更すれば、作成される図の数を変更することができます。 以下に例を示します。
\(\mathrm{stop\_int}\) の値 | 作成される図の数 |
---|---|
30 | 270 |
50 | 754 |
100 | 3004 |
\(\mathrm{stop\_int} =100\) の時に、作成された図を確認したところ、\(n=50\) 以上の循環調和曲線の図は、どれも似たような図になりました。よって、このスクリプトを試すときは、\(\mathrm{stop\_int} =50\) で、十分だと思います。
また、このスクリプトでは、図を SVG 形式で出力していますが、出力されるファイル名の拡張子を変更することで、図を別の形式で出力することもできます。例えば、図を PNG 形式で出力するときは、スクリプト内でコメントアウトしている箇所を変更してください。
以上、興味のある方は、お試しください。
追記
色を塗った、循環調和曲線の例を、別のページ に掲載しています。
Robert E. Moritz, The General Theory of Cyclic-Harmonic Curves. Annals of Mathematics Second Series, Vol. 23, No. 1 (Sep., 1921), pp. 29-39 (11 pages).
DOI: 10.2307/1967779
Documentation on JSTOR↩︎Sonja Gorjanc, Ema Jurkin, Generalized Rose Surfaces and their Visualizations. 2013.
Documentation on arXiv↩︎計算手順を以下に示します。
\[\begin{align*} (1-b) \times \frac{1 + \sqrt{5}}{2} & = 1+b \\[0.5em] (1-b) \left(1+ \sqrt{5} \right) & = 2 \, (1+b) \\[0.5em] \left(1+ \sqrt{5}\right) - \left(1+ \sqrt{5}\right)b & = 2+2b \\[0.5em] -\left(1+ \sqrt{5}\right)b -2b & = 2 - \left(1+ \sqrt{5}\right) \\[0.5em] \left(1+ \sqrt{5}\right)b +2b & = -2 + \left(1+ \sqrt{5}\right) \\[0.5em] \left(3+ \sqrt{5}\right)b & = -1 + \sqrt{5} \\[0.5em] b & = \frac{-1 + \sqrt{5}}{3+ \sqrt{5}} \\[0.5em] & = \frac{\left(-1 + \sqrt{5}\right) \left(3- \sqrt{5}\right)}{\left(3+ \sqrt{5}\right) \left(3- \sqrt{5}\right)} \\[0.5em] & = \frac{-3 + \sqrt{5} + 3 \sqrt{5} -5}{9-5} \\[0.5em] & = \frac{-8 + 4 \sqrt{5}}{4} \\[0.5em] & = -2 + \sqrt{5} \\[0.5em] & = \sqrt{5} -2 \end{align*}\]↩︎
検算手順を以下に示します。
\[\begin{align*} \frac{l}{s} & = \frac{1 + \left( \sqrt{5} -2 \right)}{1 - \left( \sqrt{5} -2 \right)} \\[0.5em] & = \frac{-1 + \sqrt{5}}{3 - \sqrt{5}} \\[0.5em] & = \frac{\left(-1 + \sqrt{5} \right) \left(3 + \sqrt{5} \right)}{\left(3 - \sqrt{5} \right) \left(3 + \sqrt{5} \right)} \\[0.5em] & = \frac{-3 - \sqrt{5} + 3 \sqrt{5} +5}{9-5} \\[0.5em] & = \frac{2 + 2 \sqrt{5}}{4} \\[0.5em] & = \frac{1 + \sqrt{5}}{2} \\[0.5em] & = \varphi \end{align*}\]↩︎
コメント
コメントを投稿