https://blog.csdn.net/lanchunhui/article/details/50569311

1. 矩阵形式的通项

(Fn+2Fn+1)=(1,1,10)⋅(Fn+1Fn)(Fn+2Fn+1)=(1,11,0)⋅(Fn+1Fn)

\begin{pmatrix} F_{n+2}\\ F_{n+1} \end{pmatrix}=\begin{pmatrix} 1,&1\\ 1,&0 \end{pmatrix}\cdot \begin{pmatrix} F_{n+1}\\ F_{n} \end{pmatrix}

不妨令:A=(1,1,10),F1=1,F0=0A=(1,11,0),F1=1,F0=0 A=\begin{pmatrix} 1,&1\\ 1,&0 \end{pmatrix} , F_1=1, F_0=0,证明,An=(Fn+1,Fn,FnFn−1)An=(Fn+1,FnFn,Fn−1)A^n=\begin{pmatrix} F_{n+1},&F_n\\ F_n,&F_{n-1} \end{pmatrix},采用数学归纳法进行证明,A1=(F2,F1,F1F0)A1=(F2,F1F1,F0)A^1=\begin{pmatrix} F_{2},&F_1\\ F_1,&F_{0} \end{pmatrix},显然成立,

An+1=An⋅A=(Fn+1,Fn,FnFn−1)⋅(1,1,10)=(Fn+2,Fn+1,Fn+1Fn)An+1=An⋅A=(Fn+1,FnFn,Fn−1)⋅(1,11,0)=(Fn+2,Fn+1Fn+1,Fn)

A^{n+1}=A^n\cdot A=\begin{pmatrix} F_{n+1},&F_n\\ F_n,&F_{n-1} \end{pmatrix}\cdot \begin{pmatrix} 1,&1\\ 1,&0 \end{pmatrix}=\begin{pmatrix} F_{n+2},&F_{n+1}\\ F_{n+1},&F_{n} \end{pmatrix}

2. 偶数项和奇数项

因为 An=(Fn+1,Fn,FnFn−1)An=(Fn+1,FnFn,Fn−1) A^n=\begin{pmatrix} F_{n+1},&F_n\\ F_n,&F_{n-1} \end{pmatrix} ,则有:

A2m====(F2m+1,F2m,F2mF2m−1)Am⋅Am(Fm+1,Fm,FmFm−1)⋅(Fm+1,Fm,FmFm−1)(F2m+1+F2m,Fm(Fm+2Fm−1),Fm(Fm+2Fm−1)F2m+F2m−1)A2m=(F2m+1,F2mF2m,F2m−1)=Am⋅Am=(Fm+1,FmFm,Fm−1)⋅(Fm+1,FmFm,Fm−1)=(Fm+12+Fm2,Fm(Fm+2Fm−1)Fm(Fm+2Fm−1),Fm2+Fm−12)

\begin{split} A^{2m}=&\begin{pmatrix} F_{2m+1},&F_{2m}\\ F_{2m},&F_{2m-1} \end{pmatrix}\\ =&A^m\cdot A^m\\ =&\begin{pmatrix} F_{m+1},&F_m\\ F_m,&F_{m-1} \end{pmatrix}\cdot \begin{pmatrix} F_{m+1},&F_m\\ F_m,&F_{m-1} \end{pmatrix}\\ =&\begin{pmatrix} F^2_{m+1}+F^2_{m},&F_m(F_m+2F_{m-1})\\ F_m(F_m+2F_{m-1}),&F^2_m+F^2_{m-1} \end{pmatrix} \end{split}

所以有:

F2m+1=F2m+1+F2mF2m=Fm(Fm+2Fm−1)F2m+1=Fm+12+Fm2F2m=Fm(Fm+2Fm−1)

F_{2m+1}=F^2_{m+1}+F^2_{m}\\ F_{2m}=F_m(F_m+2F_{m-1})

3. 矩形形式求解 Fib(n)

因为涉及到矩阵幂次,考虑到数的幂次的递归解法:

  • n 为奇数:n=2k+1n=2k+1n=2k+1

    • Fn=F2k+1=F2k+1+F2kFn=F2k+1=Fk+12+Fk2F_n =F_{2k+1}= F^2_{k+1}+F^2_{k}
    • Fn+1=F2k+2=Fk+1(Fk+1+2Fk)Fn+1=F2k+2=Fk+1(Fk+1+2Fk)F_{n+1}=F_{2k+2}=F_{k+1}(F_{k+1}+2F_k)
  • n 为偶数:n=2kn=2kn=2k
    • Fn=F2k=Fk(Fk+2Fk−1)=Fk(Fk+2(Fk+1−Fk))Fn=F2k=Fk(Fk+2Fk−1)=Fk(Fk+2(Fk+1−Fk))F_n=F_{2k}=F_k(F_k+2F_{k-1})=F_k(F_k+2(F_{k+1}-F_k))
    • Fn+1=F2k+1=F2k+1+F2kFn+1=F2k+1=Fk+12+Fk2F_{n+1}=F_{2k+1}=F^2_{k+1}+F^2_{k}

4. Python

def fib(n):if n > 0:f0, f1 = fib(n // 2)if n % 2 == 1:return f0**2+f1**2, f1*(f1+2*f0)return f0*(f0+2*(f1-f0)), f0**2+f1**2return 0, 1if __name__ == '__main__':print([fib(i)[0] for i in range(10)])

斐波那契 —— 矩阵形式推导相关推荐

  1. 斐波那契数列与黄金分割比以及矩阵形式推导

    数学上,斐波那契数列以递归的形式进行定义:  F 0 =0F 1 =1F n =F n−1 +F n−2    \begin{split} &F_0=0\\ &F_1=1\\ & ...

  2. 斐波那契(fibonacci)数列与黄金分割比以及矩阵形式推导

    原文地址:https://blog.csdn.net/lanchunhui/article/details/50569311 (如有侵权请联系删除) 数学上,斐波那契数列以递归的形式进行定义: 注意, ...

  3. 由递推关系式用差分方程的方法得到通项公式实现求斐波那契数列的第n项;迭代、递归、栈、差分方程之间的本质联系以及由推广的迭代法解决“变态青蛙跳台阶”问题;汉诺塔问题的数字特征以及用递归解决的原理推导。

    最近几天在研究算法中一个比较基础且突出的问题,就是关于"递推关系式.递归.迭代.序列前k项和"之间的区别与联系. 一.斐波那契数列与差分方程 首先我们考察一个经典的算法,求斐波那契 ...

  4. 斐波那契数列通项公式的推导证明----举一反三

    斐波那契数列通项公式的推导证明----举一反三 1-前言 2-斐波那契 2-1-什么是斐波那契 2-2-通项公式的证明 2-3-举一反三 1-前言 2021年5月20号的那天,有对象的都忙着约会秀恩爱 ...

  5. python斐波那契数列for循环_Python编程题、for循环和列表推导式的用法题(阿凡提与国王比赛下棋、 斐波那契数列等)...

    # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. "&quo ...

  6. 推导斐波那契数列通项公式

    ( 这里用 代表斐波那契数列第 项,且约定 ) 设有一个矩阵 使得 设 就有 直接令 ,再令 ,得到 把 特征分解,就可以求出 的通项式 解特征方程 得到的特征值 然后得到两个的特征向量 所以 相同的 ...

  7. python兔子繁殖问题中如何输出相应月份的数列_斐波那契数列介绍及Python中五种方法斐波那契数列...

    Q:斐波那契数列为何那么重要,全部关于数学的书几乎都会提到? A:由于斐波那契数列在数学和生活以及天然界中都很是有用.html 1. 斐波那契数列 概念引入 斐波那契数列(Fibonacci sequ ...

  8. 斐波那契数列和矩阵的特征值于特征向量的关系

    从事软件开发的人对斐波那契数列可以说在熟悉不过了,一般是学习递归算法的入门案例写在教科书中,它用递推公式表达是这个样子的: 作为一名自尊自爱的码农,看到这个公式不免既心痒又难骚,必须要安排它一下,就拿 ...

  9. 算法学习笔记五 斐波那契数列

    斐波那契数列 一.最基本的 所以,只要知道这个数列的前两项,就可以求出之后所有项了. 核心部分(最简单的递推方法,但是范围是n<=48,否则会超时and溢出): #include <cst ...

最新文章

  1. jsonArray与 jsonObject区别与js取值
  2. java 远程调用url_使用Java的URL/HttpURLConnection进行远程调用(POST请求)
  3. 全新互联网四通手机震撼上市
  4. c语言赋值运算符 amp amp 怎么读,重载赋值运算符 amp;amp; 对象
  5. 单元测试基本路径覆盖法(转)
  6. 安装ISA2004后,加入域时提示:远程过程调用失败且未运行的解决办法
  7. 新西兰储备银行数据遭泄露
  8. Neuron:Neural activities in V1 create a bottom-up saliency map
  9. C - Copying Books (POJ - 1505)
  10. Spring Cloud Alibaba Nacos之服务注册中心
  11. python成员变量_Python——成员变量
  12. python调用window dll和linux so例子
  13. 用goquery从国家统计局拉取最新省市区3级行政区划代码,生成SQL文件导入数据库
  14. Windbg分析蓝屏Dump文件
  15. 五个方向告诉你如何运营好一个公众号!
  16. rust怎么拆除墙壁指令_腐蚀RUST基本指令及服务器指令大全
  17. 统计素数并求和 (20 分)本题要求统计给定整数M和N区间内素数的个数并对它们求和。
  18. 全球及中国弹性运动胶带行业发展展望及投资趋势预测报告2022-2027年
  19. 时间集合中获取最接近的时间
  20. CATIA安装问题解决nbsp;(个人拙见)

热门文章

  1. Golang的演化历程
  2. ndr4108贴片晶振是多少频率_流处理器、核心频率、 位宽……这些显卡参数你知道吗?—— 电脑硬件科普篇(八)...
  3. webpack5打包普通html项目,webpack打包其他资源
  4. 集群之间数据拷贝distcp性能的调优
  5. Phoenix命令及语法
  6. Welcome to Apache HBase 介绍一
  7. yield用法详解——最简单,最清晰的解释
  8. Linux下docker(centos7)
  9. python写透视挂_python opencv 透视变换
  10. 判断能否组成三角形(水题)