zoukankan      html  css  js  c++  java
  • 数学算法(一):快速求斐波那契数第n项通过黄金分割率公式

    有一个固定的数学公式= =,不知道的话显然没法应用

    首先黄金分割率接近于这个公式,

    (以下为黄金分割率与斐波那契的关系,可跳过)

    通过斐波那契数列公式

    两边同时除以

     

     得:

    (1)

     注意后一项比前一项接近于黄金分割率

    (2)

    那么前一项比后一项则为1/黄金分割率(备注:其实有这么一个规律0.618/1=1/1.618=1.618/2.618=0.618)

    (3)

    那么(2)(3)带入(1)可得

         

    可以求得黄金分割率的根为

    对于广义的斐波那契数列:

    一般项可以表示为:

    因此:

    当 

    这个函数趋向于

    开始代码 

    a(n)为斐波那契数第n项,Binet 公式(推导过程见下最下方)

    O(1)复杂度

    Python

    def fib(self, N):
      golden_ratio = (1 + 5 ** 0.5) / 2
      return int((golden_ratio ** N + 1) / 5 ** 0.5)

    参考:

    斐波那契数列与黄金分割率的关系:https://demonstrations.wolfram.com/GeneralizedFibonacciSequenceAndTheGoldenRatio/

    Binet公式推导:https://www.sohu.com/a/284819172_614593

    可以直接留言交流问题或想法,每天都会看
  • 相关阅读:
    rockGenmel stone.txt
    WHICHDAY.txt
    WORKDAYS.txt
    WAIT_YN.txt
    WEEKDAYS.txt
    WHEREXY.txt
    KeySelected.txt
    WINDOW.txt
    UPPER.txt
    ParentShapes It.txt
  • 原文地址:https://www.cnblogs.com/shitianfang/p/12347963.html
Copyright © 2011-2022 走看看