2020/03/23

数学

黄金比

黄金比とは

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

黄金比

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

黄金比(近似値)

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

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

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

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

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

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

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

  F0 = 0

  F1 = 1

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

で定義されます。

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

  黄金比 = Fn / Fn-1

Javaソースコード

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

GoldenRatio1.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
public class GoldenRatio1 {
	public static void main(String[] args) {
		double f0, f1, fn;
		double gr;	// 黄金比

		f0 = 0.0;
		f1 = 1.0;
		for ( int i = 2; i <= 1000; ++ i ) {
			fn = f0 + f1;
			// 1つ前の値で、現値を割る
			gr = fn / f1;

			// 結果を表示
			if ( ( 20 >= i ) || ( 0 == ( i % 100 ) ) ) {
				System.out.println( i + ": " + gr );
			}

			// f0 ← f1、 f1 ← fn
			f0 = f1;
			f1 = fn;
		}
	}
}

実行結果

カウントダウンを実行

C:\talavax\javasample>java GoldenRatio1

出力結果

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まで求めて計算しています。この数を大きくしすぎるとオーバーフローが発生して正しい値が得られないので注意してください。

関連コンテンツ

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

自然界の現象に数多く出現するフィボナッチ数列のプログラムを作ってみませんか?

2017.01.23

再帰を使ったフィボナッチ数列を出力するプログラムを作ってみませんか?

2017.01.23

配列を使ったフィボナッチ数列を出力するプログラムを作ってみませんか?

2021.03.09

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

ウサギ算(rabbit arithmetic)って何?

2017.02.23

自然界に現れる黄金角について解説しています。興味のある方は是非ご覧ください。

2020.03.23

長方形を使って黄金比を計算する方法を説明しています。

2023.02.15

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

長方形の分割で、白銀比を計算する方法を説明しています。

2023.11.06

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

Javaのmainメソッドで受け取るパラメータについて解説しています。

2017.09.26

mainメソッドで受け取るパラメータの数の取得の仕方について解説しています。

2019.05.14

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

同じ型の変数(データ)を複数個まとめて管理するデータの持ちかたがあります。これが配列です。くわしくは、記事をご覧ください。

2016.01.14

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

広告