矩阵快速幂算法的原理与实践——“使用MATLAB求解大型斐波那契数"

本文介绍了如何使用MATLAB的矩阵运算和符号运算处理大规模斐波那契数列,详细阐述了矩阵快速幂算法的原理,并通过实践展示了其在节省运算时间上的优势。同时,讨论了在MATLAB中遇到的输出限制和解决方案,包括使用diary函数将结果写入文件,以及自定义逻辑右移函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    无意间翻到了去年写的公选课MATLAB的课程论文。当时刚好GET了矩阵快速幂,就顺便用上了,意料之中地拿了90+分哈哈哈哈(毕竟是公选课)

________________________________________________________________________________________________________________________

①关于MATLAB

   关于MATLAB,有这么两点优势要说明:

    <1>MATLAB拥有着极其方便的矩阵运算,每一个数组都可以表示为相应维度的矩阵,可以通过两个数组的直接相乘来获得“矩阵1×矩阵2”运算的结果矩阵。

    <2>MATLAB拥有着精度超高的符号运算(syms),克服了大数溢出的问题。


   对于诸如C,C++,JAVA等语言,进行高精度数字的求解总是非常具有挑战性的,即使只是进行大规模整数运算,C++也需要铺写大量的代码定义大数类和重载操作符。如果再加入矩阵运算,使用起来极其不方便。JAVA还好,毕竟大数对它来说不是问题。

   而MATLAB的符号类精度之高非常恐怖,且操作异常方便,可以像处理普通整型一样地处理符号类。因此,使用MATLAB可以让“大型”运算变得具有非常强的可行性。

   当然,最好用的果然还是Python了……


②关于“大型斐波那契数”


<1>“斐波那契数”

   斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(LeonardodaFibonacci )以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。

   而斐波那契数,就是指在已经定义了递推初始值的前提下,持续递推斐波那契数列所得的其中一个数。

<2>“大型”

   所谓“大型”,当然不会是求第10个、第20个、第100个斐波那契数这等简单循环便可以轻易得到结果的数据(当然,其实第100个斐波那契数已经达到了3.54×10­­20的整型存放不下的大数)。

   所谓“大型”,应该是指第一万个、第十万、百万,乃至第千万、第一亿个斐波那契数。根据下图所示,斐波那契数列有着跟指数函数类似的曲线,到达一定程度后会有类似“指数爆炸”的曲线斜率


③关于“矩阵快速幂”

<1>“矩阵”

   斐波那契数的递推式可以用一个2×2的矩阵A来表示。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值