【问题标题】:Making histogram out of matrix entries?用矩阵条目制作直方图?
【发布时间】:2015-07-20 22:32:24
【问题描述】:

今天我的任务是制作一个直方图来表示 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

【问题讨论】:

    标签: python matrix histogram linear-algebra stochastic


    【解决方案1】:

    当然它只打印最终值,你正在做同样的操作,matrix^s,1000 次。您需要让s 中的每一个更改 1000 次。

    如果要计算位置 matrix(0) 中的所有值 matrix^i 其中 i 是从 1s 的每个值(您的最终幂):

    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)matrix^1matrix^2 等一直到matrix^s

    【讨论】:

    • 您的第一个答案正是我想要的数据,但是,我无法用直方图表示它。现在,每当我尝试它时,它只会在最终值处打印一条直线。链接到我的输出:i.imgur.com/BNlXTJo.png 另外,这是我的完整代码:pastebin.com/XhJvQ22d 如您所见,baseprob 的值在 0.97 到 0.90 之间移动,但在直方图上,仅显示 0.90 处的线。
    • @RaleighL。我对 matplotlib 不太熟悉,但我认为您的问题出在 range=[minimum-0.1,minimum+0.1] 上。这会将范围设置为最小值。您的意思是创建一个maximum 变量并执行range=[minimum-0.1,maximum+0.1] 吗?
    • 即使进行了这些更改(您给出的范围命令),直方图仍然只打印一个条...?我的输出:i.imgur.com/gWfoQw2.png 完整代码:pastebin.com/G7DNUZLq
    • @RaleighL。您的直方图没有打印一个条形图。它正在打印几个,只是您看到的条比其他条大得多。尝试使用s=10s=30 运行,您可以很清楚地看到这一点。我不完全确定您生成的数字是什么意思,但是您以某种方式生成矩阵,使得matrix(0) 随着s 变大而越来越接近单个值。 matrix(0) 的前 30 个值的图片:imgur.com/jskeUbh。您可以看到它们正在收敛于一个最终值。对于s=10000,这个最终值是您可以看到的唯一条形。
    • @RaleighL。如果您尝试不同的初始矩阵(例如数字 >1),您可以看到matrix^i 步骤工作正常。对于您提出的具体案例来说,这简直太奇怪了。
    猜你喜欢
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多