热线电话:13121318867

登录
2019-03-04 阅读量: 1007
matrix_power的matplotlib中绘制矩阵

我有以下代码来绘制标量x与标量f(x),其中函数内部存在一些矩阵乘法:

import numpy as np

import matplotlib.pyplot as plt

from numpy.linalg import matrix_power

P=np.array([\

[0,0,0.5,0,0.5],\

[0,0,1,0,0], \

[.25,.25,0,.25,.25], \

[0,0,.5,0,.5], \

[0,0,0,0,1], \

])

t=np.array([0,1,0,0,0])

ones=np.array([1,1,1,1,0])

def f(x):

return t.dot(matrix_power(P,x)).dot(ones)

x=np.arange(1,20)

plt.plot(x, f(x))

现在,该功能本身工作正常。

>>> f(1)

1.0

>>> f(2)

0.75

但绘图会引发错误exponent must be an integer。

换句话说,如何在阵列上评估此函数?例如

f(np.array([1,2]))

我试着替换情节线 plt.plot(x, map(f,x))

但这没有帮助。

我怎样才能解决这个问题?

解决办法:In [1]: P=np.array([\

...: [0,0,0.5,0,0.5],\

...: [0,0,1,0,0], \

...: [.25,.25,0,.25,.25], \

...: [0,0,.5,0,.5], \

...: [0,0,0,0,1], \

...: ])

In [2]:

In [2]: P

Out[2]:

array([[0. , 0. , 0.5 , 0. , 0.5 ],

[0. , 0. , 1. , 0. , 0. ],

[0.25, 0.25, 0. , 0.25, 0.25],

[0. , 0. , 0.5 , 0. , 0.5 ],

[0. , 0. , 0. , 0. , 1. ]])

In [4]: np.linalg.matrix_power(P,3)

Out[4]:

array([[0. , 0. , 0.25 , 0. , 0.75 ],

[0. , 0. , 0.5 , 0. , 0.5 ],

[0.125, 0.125, 0. , 0.125, 0.625],

[0. , 0. , 0.25 , 0. , 0.75 ],

[0. , 0. , 0. , 0. , 1. ]])

In [5]: np.linalg.matrix_power(P,np.arange(0,4))

0.0000
6
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子