我找到了一个为 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 的值(并且 j 的值取决于 for 循环),它就会简单地返回 M_ij 的值,但是 i 是什么?
xrange 和 range 不相似吗?但它在这里返回了什么?
当与函数 max 结合时,会发生什么?我只是不知道正在比较的 max 函数中的内容是什么。
对不起,如果这个问题听起来很愚蠢。我对编程很陌生