python斐波那契数列流程图:斐波那契数列python实现和可视化
1 说明
====
1.1 斐波那契数列的介绍。
1.2 斐波那契数列是上帝的指纹,大自然中随处可见,目前广泛应用到黄金分割线的布局美和股市等预测等等。
1.3 斐波那契数列的python的matplotlib和turtle的可视化。
1.4 本文为整理后的资料,小白易懂,适合收藏。
斐波那契 - 意大利数学家-1175年-1250年;图片来自网络,如有侵权请联系,定删
2 斐波那契数列
===========
2.1 斐波那契数列(Fibonacci sequence),又称黄金分割数列。
2.2 因他以兔子繁殖为例子而引入,故又称为“兔子数列”。
2.3 数列为:1、1、2、3、5、 8、13、21、34、55、89、144......
2.4 数列中的数为斐波那契数。
2.5 斐波那契数列是上帝的指纹,是一切自然纹理的规律线,文末有图。
3 先看看python的可视化效果图
=======================
3.1 图1
500以内的斐波那契数
3.2 图2:
3.3 图3
3.4 图4
3.5 图5
4 图片的代码
==========
4.1 图1的代码:
import matplotlib.pyplot as plt
#定一个空列表,存放斐波那契数列的数
#作为可视化y坐标轴值
y_data=[]
#数列产生
def fib(n):
a=0
b=1
while a<=n:
#将产生的数列的数添加到列表中
y_data.append(a)
a,b=b,a b
#自定义输入自然整数范围
n=int(input('请输入非0任意整数:,推荐500:'))
#调出函数产生数列
fib(n)
#定义x坐标轴数列个数序号
x_data=[i for i in range(len(y_data))]
#标题名
plt.title('该数列的个数:' str(len(y_data)))
#作图
plt.plot(x_data,y_data,'r',marker='o')
#数值标注
for xy in zip(x_data, y_data):
plt.annotate("(%s,%s)" % xy, xy=xy, xytext=(-20, 10), textcoords='offset points')
#图片展示
plt.show()
4.2 图2代码
#参考文章:https://blog.csdn.net/cd_don/article/details/87212314
#导出模块
import numpy as np
import matplotlib.pyplot as plt
#定义数列产生的函数
def fibo(n):
if n == 0:
fibo_list = np.array([0])
#修改源代码bug
elif n == 1:
fibo_list = np.array([0,1])
else:
f_0, f_1 = 0, 1
fibo_list = np.array([f_0,f_1])
for i in np.arange(n-2):
fibo_num = f_0 f_1
fibo_list = np.append(fibo_list,fibo_num)
f_0, f_1 = f_1, fibo_num
return fibo_list
#定义划线函数,由列表找到xy坐标
def find_o_xy(f_list):
#起始圆心坐标
x_n, y_n = 0, 0
o_x_array, o_y_array = np.array([x_n]), np.array([y_n])
for n in np.arange(1,len(f_list)):
#需要注意pyhton中计数是从0开始
#第一项作为起始点已经给出
y_n=y_n np.mod(n 1,2)*f_list[n]*(-1)**(1 (np.mod(n 1,2) n 1)/2)
x_n=x_n np.mod(n,2)*f_list[n]*(-1)**(1 (np.mod(n 1,2) n 1)/2)
#横纵坐标(x,y)
o_x_array = np.append(o_x_array, x_n)
o_y_array = np.append(o_y_array, y_n)
return o_x_array, o_y_array
#画圆弧设置
#以下绘图以n=7为例
count = 7
f_list = fibo(count)
x0_array,y0_array = find_o_xy(f_list)
#各个正方形对应的边长,如例图半径从1,2...开始
f_list_r = fibo(count 2)[2::]
#画出各个正方形内的1/4圆
start_angle, end_angle = np.pi, 1.5*np.pi
for n in np.arange(len(f_list)):
t=np.arange(start_angle,end_angle,0.001)
circle_x = (f_list_r[n])*(np.sin(t)) x0_array[n]
circle_y = (f_list_r[n])*(np.cos(t)) y0_array[n]
start_angle = 0.5*np.pi
end_angle = 0.5*np.pi
#画圆弧形
plt.plot(circle_x,circle_y,color='r')
#标题
plt.title('斐波那契数列螺旋线')
#图片展示
plt.show()
4.3 图3代码
#导入模块
from turtle import *
#输入自定义数列的个数
amount=int(input("请输入斐波那契数列的而个数,推荐15:"))
#数列产生
a1=0
a2=1
tem_he=0
shulie=[]
for i in range(1,amount):
#终端输出数列的数值
print(a1,end=',')
tem_he=a1 a2
a1=a2
a2=tem_he
#数列添加数值
shulie.append(tem_he)
#turtle画图
for i in range(1,amount-1):
for n in range(4):
forward(shulie[i])
left(90)
#画圆
circle(shulie[i],90)
#输出数列数值
write(shulie[i],font=("微软雅黑",i*2))
mainloop()
4.4 图4代码
# encoding:utf-8
#参考文章
#https://blog.csdn.net/jiyeguhong/article/details/108020193?utm_medium=distribute.pc_relevant.none-task-blog-utm_term-2&spm=1001.2101.3001.4242
import turtle
from random import random
def draw_square(r):
t.fillcolor(random(), random(), random())
t.begin_fill()
for _ in range(4):
t.fd(r)
t.left(90)
# 填充关键点,正方形填充一半就结束,然后立即开始圆形填充
if _ == 1:
t.end_fill()
t.fillcolor(random(), random(), random())
t.begin_fill()
t.circle(r, 90)
t.end_fill()
return
if __name__ == '__main__':
t = turtle.Turtle()
t.hideturtle()
t.up()
t.goto(-130, 50)
t.down()
t.pensize(3)
# 黄金比例
scale = 0.618
# 初始半径
r = 50
for _ in range(5):
draw_square(r)
r /= scale
turtle.mainloop()
4.5 图5
#参看文章:https://blog.csdn.net/cd_don/article/details/87212314
#导出模块
import numpy as np
#其实就是matplotlib模块
import pylab as plt
# 产生菲波那切数列
def fibo(n):
f_0 = 0
f_1 = 1
fibo_list = np.array([f_0,f_1])
for i in np.arange(n-2):
fibo_num = f_0 f_1
fibo_list = np.append(fibo_list,fibo_num)
f_0, f_1 = f_1, fibo_num
return fibo_list
#找出各个圆心
def find_o_xy(f_list):
x_n, y_n = 0, 0 #起始圆心坐标
o_x_array, o_y_array = np.array([x_n]), np.array([y_n])
for n in np.arange(1,len(f_list)):
#需要注意pyhton中数组计数是从0开始
#第一项作为起始点已经给出
y_n=y_n np.mod(n 1,2)*f_list[n]*(-1)**(1 (np.mod(n 1,2) n 1)/2)
x_n=x_n np.mod(n,2)*f_list[n]*(-1)**(1 (np.mod(n 1,2) n 1)/2)
o_x_array = np.append(o_x_array, x_n)
o_y_array = np.append(o_y_array, y_n)
return o_x_array, o_y_array
count = 6 #为7是需要调整figsize=(10,10)大小
f_list = fibo(count)
x0_array,y0_array = find_o_xy(f_list)
#------------------------头像4----------------------------
f_list_r = fibo(count 2)[2::]
start_angle, end_angle = np.pi, 1.5*np.pi
fig = plt.figure(num=1,facecolor='k',figsize=(10,10))
#增加坐标轴对象,显示box
ax = fig.add_axes([0.0, 0.0, 1.0, 1.0], frameon=True,aspect=1)
x_min, x_max, y_min, y_max = 0, 0, 0, 0
for n in np.arange(len(f_list_r)):
#圆心坐标
x0 = x0_array[n]
y0 = y0_array[n]
#得到对角顶点坐标
x2 = x0 f_list_r[n]*(-1)**((np.mod(n 1,2) n 1)/2)
if n == 0:
y2 = -1 #起始点特殊目前只想到这么整了
else:
y2 = y0 f_list_r[n]*(-1)**(1 (np.mod(n,2) n)/2)
#画出圆弧
t=np.arange(start_angle,end_angle,0.001)
circle_x = (f_list_r[n])*(np.sin(t)) x0_array[n]
circle_y = (f_list_r[n])*(np.cos(t)) y0_array[n]
start_angle = 0.5*np.pi
end_angle = 0.5*np.pi
#画图,在坐标轴上画图
ax.plot(np.append(x0_array[n],np.append(circle_x,x0_array[n])),
np.append(y0_array[n],np.append(circle_y,y0_array[n])),
color='k',linewidth=5)
ax.fill(np.append(circle_x,x0_array[n]),
np.append(circle_y,y0_array[n]),
facecolor='gold',alpha = 1)#f5bf03
#设置axes内的填充颜色
ax.patch.set_facecolor('k')
#调节坐标范围
x_min,x_max=8.5,-11.5
y_min,y_max=10,-10
mul_times = 1.5
ax.set_xlim(x_min*mul_times, x_max*mul_times)
ax.set_ylim(y_min*mul_times, y_max*mul_times)
#不显示坐标轴刻度以及刻度线
ax.tick_params(axis='both',labelsize=0,length=0)
#图片展示
plt.show()
5 大自然
黄金分割数列:黄金分割线
按照布局的照片最美
螺纹
- 03-06六小龄童现在情况怎样:六小龄童的毁灭史从万人追捧
- 01-18千元性价比最高的27寸显示器 真地板价,27英寸2KIPS曲面显示器低至473元
- 11-21房企如何赢得下一个十年?管理红利,时代各大房企最重视这项工作
- 02-13济南商业圈在哪儿 济南首条24小时商街悦立方开业
- 11-28杭州机场与高铁站的位置 新升级的杭州东站像机场一样高大上了
- 12-23最近最火的歌是不是西楼儿女 网络热歌西楼儿女
- 05-07navicat,forsql navicat,forsql
- 03-26夏青老师的经典播音 夏青传媒学院师生参与播音艺术家葛兰老师诵读作品后期制作
- 04-2011条建设中的铁路最新进展,年内还有12个铁路项目将开通
- 09-27140平方房子客厅的70寸电视:2000块钱搞定新房客厅电视
- 03-12七十年代怎么挣工分?靠工分养家的年代一个工分值多少钱
- 11-22排尿不完全是尿失禁吗?排尿不受控制做好5个措施
- 04-11开往春天旅顺的绿皮火车:开往深秋的绿皮火车连梦都要变成金色
- 02-14美女主播呆妹儿:美女主播性感写真壁纸
- 12-14遂宁安居女子开车坠河,四川达州一辆轿车在拐弯处冲进河里
- 03-10pdf最好翻译工具:这个网站你还不知道吗
热门
推荐
- 1外贸专业实习日志494
- 2励志文艺句子_句子280
- 3关于教师个人工作总结3篇407
- 4幼儿园大门喷绘效果图_幼儿园大门喷绘效果图欣赏360
- 5广告策划书范文参考405
- 6形容女人的成语161
- 7三年级写珍爱生命预防溺水作文3篇409
- 8田汉与关汉卿有关系吗294