Description : 设A是一个N*N的矩阵,很多时候人们需要计算一个矩阵的n次幂,当n足够大时,计算量会变得很大,时间会变得很长,编程快速计算A^n。
Input: matirx A
Output: matrix B=A^n。
算法描述:
设A 是一个 N*N 的矩阵,输入 n, 该算法可以实现快速计算 A^n 。
首先需要实现一个计算矩阵乘法的函数,该函数在算法中为MAT_mul(A,B)
表示A*B 。
可以采用以下方法重新组织算法:
A ^ n = A ^(( n /2) * 2)
A ^ n == ( A ^( n /2))^2
算法 MAT_power(A, n)
1. if n = 1
2. return A;
3. end if
4. Temp = A^n/2; //MAT_power(A,n/2)
5. Temp2 = Temp*Temp ;// MAT_mul(Temp,Temp)
6. if n % 2 = 0 // n是偶数
7. return Temp2;
8. end if
9. esle
10. return temp2*A;
11. end