流水笔记

面向免费零食和饮料的编程

求解e的矩阵次方

找了一下,貌似numpy库没有这个函数,自己写了一个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from numpy import *
def pow_e(A, err = 1E-5):
'''e的A次方,A为矩阵'''
idx = 1
fact = 1
result = A ** 0
while True:
T = (A ** idx) / fact
idx += 1
fact *= idx
sumT = sum(map(lambda l: sum(map(long, map(abs, l))), T.tolist()))
if sumT > 10E10:
raise Exception('power is too large')
if sumT <= err:
break
result += T
return result