【发布时间】:2015-05-06 05:01:09
【问题描述】:
我找到了一个旋转方阵以进行 LU 分解的代码,但我无法理解其中的一些。
def pivotize(m):
"""Creates the pivoting matrix for m."""
n = len(m)
ID = [[float(i == j) for i in xrange(n)] for j in xrange(n)]
for j in xrange(n):
row = max(xrange(j, n), key=lambda i: abs(m[i][j]))
if j != row:
ID[j], ID[row] = ID[row], ID[j]
return ID
首先,ID 的行不就是单位矩阵吗?这样做有什么好处吗?
其次,我无法真正理解行的行。我知道 lambda 用于在文本中定义一个函数,它只是在提供 i 的值后返回 M_ij 的值(并且 j 的值取决于 for 循环),但是 i 是什么?
xrange 不是类似于 range 吗?但它在这里返回了什么?
当与函数 max 结合时,会发生什么?我只是不知道正在比较的 max 函数中的内容是什么。
对不起,如果这个问题听起来很愚蠢。我对编程很陌生
【问题讨论】:
-
i来自xrange(j, n)
标签: python lambda max xrange matrix-decomposition