VBA实现矩阵快速求幂

       不管求一个数的幂还是矩阵的幂,比如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)
    Wend
End Function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值