C++|趣味实用小实例:用斐波那契数列来计算黄金比例数

把一条线段分割为两部分,较短部分与较长部分长度之比等于较长部分与整体长度之比称为黄金比例数。

设线段长度为1,长的一段为L,按定义:

(1-L)/L=L/1
化简为:
L^2+L-1=0
L=(√5-1)/2
短的一段为:
(3-√5)/2

黄金比例数通常用φ来表示:

φ ≈ 0.61803398874989484820 45868 34365 63811

C++|趣味实用小实例:用斐波那契数列来计算黄金比例数

上图OCHG就是黄金矩形(通常认为是最具美感比例的矩形),设OC=OA=1,长的一段为L:

K是BC的中点,kp=kc=1/2,OP=OG=L

(1/2)^2+1^2=(L+1/2)^2

L=(√5-1)/2

如果你把第n-1个斐波那契数除以第n个斐波那契数,当n足够大时,其结果就会很接近黄金比例数。

斐波那契数列开始于1、1,并通过先前的两个数相加产生随后的数,如:
1 1 2 3 5 8 13 21 34 55 89……

C/C++学习交流群:1018234390,有大牛答疑,有资源共享!有想学习CC++的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。

为此,可以通过计算斐波那契数列来计算黄金比例数:

#include <iostream>
#include <stdlib.h>
#include <cmath>
using namespace std;
void phi()
{
	int n = 0;
	int i = 0;
	double prev = 1.0;
	double current = 1.0;
	double next = 0.0;
	cout<<"How many fibbnaic numbers to generate?";
	cin>>n;
	cout.precision(15);
	while(n>0)
	{
		next = prev + current;
		current = prev;
		prev = next;
		cout<<++i<<"	"<<next<<"	";
		cout<<"ratio="<<current/prev<<endl;
		--n;
	}
}
void main()
{
	phi();
	double phinum = (sqrt(5)-1)/2;
	cout<<"(sqrt(5)-1)/2:"<<phinum<<endl;
	cout<<"φ	 ≈ 0.61803398874989484820 45868 34365 63811"<<endl;
	cin.ignore();
	cin.ignore();
}

运行结果如下:

C++|趣味实用小实例:用斐波那契数列来计算黄金比例数

这个数值的作用不仅仅体现在诸如绘画、雕塑、音乐、建筑等艺术领域,而且在管理、工程设计等方面也有着不可忽视的作用。

一个很能说明问题的例子是五角星/正五边形。五角星是非常美丽的,我们的国旗上就有五颗,还有不少国家的国旗也用五角星,这是为什么?因为在五角星中可以找到的所有线段之间的长度关系都是符合黄金分割比的。正五边形对角线连满后出现的所有三角形,都是黄金分割三角形。

由于五角星的顶角是36度,这样也可以得出黄金分割的数值为2Sin18 。

黄金分割奇妙之处,在于其比例与其倒数是一样的。例如:1.618的倒数是0.618,而1.618:1与1:0.618是一样的。 确切值为根号5减1再除以2.

现在科学研究表明,0.618的位置经常成为自然界乃至生活的最佳状态。

一个体态匀称的人,膝盖到脚趾与肚脐到脚底的长度之比也为0.618。

有趣的是,人们认为乐曲也有“黄金分割”。数学家对莫扎特的乐曲做过分析:莫扎特的每一段钢琴协奏曲都可以分成两大部分,显示部和展开——再现部。如果计算一下节拍次数,其第一部分和第二部分节拍数的比几乎与黄金分割完全一致。

0.618也可以用于健康长寿方面。人的正常体温为37℃,与0.618的乘积为22.8℃,因此人在环境温度为22℃至24℃时感觉最舒适,这时肌体的新陈代谢、生理节奏和生理功能处于最佳状态。人的动与静也应该保持0.618的比例关系,大致四分动、六分静,这是最佳的养生和长寿之道。

C/C++学习交流群:1018234390,有大牛答疑,有资源共享!有想学习CC++的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。

猜你喜欢

转载自blog.csdn.net/L947223094/article/details/89846974