ゆるゆるプログラミング

・黄金比

黄金比とは、人間が最も美しいと感じることができるとされている比率のことです。比率は以下のとおりです。

黄金比

式を計算すると以下のような比率になります。1.618033…は、黄金数と呼ばれます。

黄金比(近似値)

この比率は、自然界で多く見られ、そしてデザインでも使われています。

自然界では、DNA、渦巻き(ハリケーン、銀河)、鉱物の結晶、ヒマワリの種の配列などにも黄金比が存在します。

デザインでは、モナ・リザ、ピラミッド、パルテノン神殿、ミロのビーナス、法隆寺 五重塔、Apple社のログにも黄金比が使われています。

次に、この黄金比フィボナッチ数列の関係について紹介します。

フィボナッチ数列は、イタリアの数学者レオナルド・フィボナッチが考えた「ウサギ算」から導かれる数列です。

それでは、フィボナッチ数列とはどうのようなものかを見ていきましょう。

n番目のフィボナッチ数をFnで表すと、Fnは再帰的に

  F0 = 0
  F1 = 1
  Fn+2 = Fn + Fn+1 (n≧0)

で定義されます。

この式と黄金比との関係は、フィボナッチ数を1つ前のフィボナッチ数で割った値が黄金比に限りなく近づくというものです。

  黄金比 = Fn / Fn-1

以下は、この関係をJavaのプログラムで確認したものです。

GoldenRatio1.java ← クリックしてダウンロードページに移動
001:    public class GoldenRatio1 {
002:    	public static void main(String[] args) {
003:    		double f0, f1, fn;
004:    		double gr;	// 黄金比
005:    
006:    		f0 = 0.0;
007:    		f1 = 1.0;
008:    		for ( int i = 2; i <= 1000; ++ i ) {
009:    			fn = f0 + f1;
010:    			// 1つ前の値で、現値を割る
011:    			gr = fn / f1;
012:    
013:    			// 結果を表示
014:    			if ( ( 20 >= i ) || ( 0 == ( i % 100 ) ) ) {
015:    				System.out.println( i + ": " + gr );
016:    			}
017:    
018:    			//
019:    			f0 = f1;
020:    			f1 = fn;
021:    		}
022:    	}
023:    }

GoldenRatio1.Javaの出力結果

2: 1.0
3: 2.0
4: 1.5
5: 1.6666666666666667
6: 1.6
7: 1.625
8: 1.6153846153846154
9: 1.619047619047619
10: 1.6176470588235294
11: 1.6181818181818182
12: 1.6179775280898876
13: 1.6180555555555556
14: 1.6180257510729614
15: 1.6180371352785146
16: 1.618032786885246
17: 1.618034447821682
18: 1.6180338134001253
19: 1.618034055727554
20: 1.6180339631667064
100: 1.618033988749895
200: 1.618033988749895
300: 1.618033988749895
400: 1.618033988749895
500: 1.618033988749895
600: 1.618033988749895
700: 1.618033988749895
800: 1.618033988749895
900: 1.618033988749895
1000: 1.6180339887498951

計算結果が、黄金比に近づいていることが確認できました。

このプログラムでは、フィボナッチ数を1000まで求めて計算しています。この数を大きくしすぎるとオーバーフローが発生して正しい値が得られないので注意してください。

■関連コンテンツ

フィボナッチ数列 フィボナッチ数列

■新着情報

2020.05.07 サイコロの出目確率 サイコロの目のでる確率は?
2020.04.22 現在日時をミリ秒で取得 現在日時をミリ秒数で取得
2020.04.22 日時 日時の操作について
2020.04.22 時間の単位変換 1日、1時間は何ミリ秒?

■広告

法人向けのETC専用カード

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

Topへ