0

今天我的任务是制作一个直方图来表示 A^n 的运算,其中 A 是一个矩阵,但仅适用于矩阵中的特定条目。

例如,假设我有一个矩阵,其中行总和为 1。第一个条目是一些特定的十进制数。但是,如果我将该矩阵提高到 2 次方,那么第一个条目就会变成别的东西,如果我将该矩阵提高到 3 次方,它会再次发生变化,等等 - 令人作呕,这就是我需要绘制的。

现在我的尝试是创建一个空列表,然后使用 for 循环将矩阵乘法产生的条目添加到列表中。但是,它所做的只是将最终矩阵乘法的结果打印到列表中,而不是在每次迭代时打印其值。

这是我正在谈论的特定代码:

print("The intial probability matrix.")

print(tabulate(matrix))

baseprob = []

for i in range(1000):

     matrix_n = numpy.linalg.matrix_power(matrix, s)

     baseprob.append(matrix_n.item(0))

print(baseprob)

print("The final probability matrix.")

print(tabulate(matrix_n))

这是完整的代码,以及我得到的输出。

http://pastebin.com/EkfQX2Hu

4

1 回答 1

0

当然它只打印最终值,您正在执行相同的操作,matrix^s, 1000 次。您需要s更改每一个 1000 次。

如果您想计算位置matrix(0)中的所有值,以了解每个值从matrix^i哪里到(您的最终权力),请执行以下操作:i1s

baseprob = []

for i in range(1,s): #changed to do a range 1-s instead of 1000

     #must use the loop variable here, not s (s is always the same)
     matrix_n = numpy.linalg.matrix_power(matrix, i)

     baseprob.append(matrix_n.item(0))

然后baseprob会一直持有matrix(0)for matrix^1,matrix^2matrix^s

于 2015-07-20T23:13:44.203 回答