VBA实现矩阵快速求幂

来源:互联网 发布:硬盘录像机数据恢复 编辑:程序博客网 时间:2024/06/08 06:47

       不管求一个数的幂还是矩阵的幂,比如a^16,把a做15次乘法是最容易想到的方法,但这样效率特别低。其实可以先算出a^2,其平方就是a^4,再平方就是a^8,最后平方一次,就是a^16,只要4次乘法就够了。这种逐次平方法求幂是个很基本的算法,不懂的读者请看这里:利用逐次平方法快速求幂。

       另外,可以使用Application.WorksheetFunction直接调用Excel内置的函数,比如矩阵相乘函数MMULT,所以函数的实现非常简洁:

Function pow(a, m)' a是方阵,m是不小于1的整数次幂    pow = a    m = m - 1    While m > 0        If m Mod 2 Then            pow = Application.WorksheetFunction.MMult(pow, a)        End If        a = Application.WorksheetFunction.MMult(a, a)        m = Int(m / 2)    WendEnd Function

0 0
原创粉丝点击