猫史档案馆


【Python作品分享】逼近法黄金分割【教程贴】

用户:e国阳光e国阳光查看:0 回复:1 评论:0 创建时间:2020-02-14T22:49:22


【作品展示】

center_image

 

【作品介绍】

中值逼近确定黄金分割数值。

 

【作品源代码】

#逼近法黄金分割
# e国阳光 2020-02-04
# 段1:段2=段2:全长
# 令全长=1,段2=x
# (1-x)/x=x
#  1-x=x²
# 当x=0,左边1-x=1,右边=0,左边>右边
# 当x=1,左边1-x=0,右边=1,左边右边;如果x大了,左边 15:
        print("你输入的数%d>15,请重新输入!" % digits)
        continue

  print("开始进行%d位黄金分割数值逼近......" % digits)

  #逼近算法块
  start = 0  # 低界
  end = 1  # 高界
  zero = 4*pow(10, -digits-1)  # 浮点0,浮点数的0与精度有关,按四舍五入原则确定0的阈值。
  print("小数点后%d位的浮点0是%s。" % (digits, str(zero)))
  while(end-start > zero):
      mid = (start+end)/2  # 中值
      print("start=" + str(start) + " mid=" +
            str(mid) + " end=" + str(end))  # 打印域界和中值
      if 1-mid > mid*mid:  # 如果左边>右边,说明结果在mid的右边,否则在mid的左边
          start = mid
      else:
          end = mid

  print("%d位黄金分割数值是:%s" % (digits, str(round(end, digits))))  # 打印结果

'''
程序输出如下:
请输入小数点后位数3-15:3
开始进行3位黄金分割数值逼近......
小数点后3位的浮点0是0.0004。
start = 0 mid = 0.5 end = 1
start = 0.5 mid = 0.75 end = 1
start = 0.5 mid = 0.625 end = 0.75
start = 0.5 mid = 0.5625 end = 0.625
start = 0.5625 mid = 0.59375 end = 0.625
start = 0.59375 mid = 0.609375 end = 0.625
start = 0.609375 mid = 0.6171875 end = 0.625
start = 0.6171875 mid = 0.62109375 end = 0.625
start = 0.6171875 mid = 0.619140625 end = 0.62109375
start = 0.6171875 mid = 0.6181喵0625 end = 0.619140625
start = 0.6171875 mid = 0.61767578125 end = 0.6181喵0625
start = 0.61767578125 mid = 0.617919921875 end = 0.6181喵0625
3位黄金分割数值是:0.618
请输入小数点后位数3-15:

'''

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
在南海呢喃的蒟蒻在南海呢喃的蒟蒻

OK

点赞1


评论