我需要实现LU分解,然后将其与numpy中的$(function() {
$('#slides').slidesjs({
width: 800,
height: 400,
play: {
active: true,
auto: true,
interval: 500,
// within the play property, effect should be a string, i.e. "fade"
effect: "fade"
},
navigation: {
effect: "fade"
},
pagination: {
effect: "fade"
},
effect: {
fade: {
speed: 1000
}
}
});
});
函数进行比较。
代码中的函数(见下文)运行没有任何问题,但当我用它来解决矩阵时,我不断收到错误:
np.linalg.solve
就行:
IndexError: list index out of range
以下是整个代码:
L[i][j] = (A2[i][j] - s2) / U[j][j]
有什么想法吗?谢谢!
答案 0 :(得分:0)
您的matrixMul
方法不正确。试试这个:
matrixMul([[1, 0], [0, 1]], [[1, 0], [0, 1]])
这是两个身份矩阵相乘,并应返回[[1, 0], [0, 1]]
。当我运行它时,它返回[[1, 0], []]
。这意味着A2
内lu
只有一行,其余为空。因此,i == 1
和j == 0
时的索引错误。
失败的原因是TB
是zip
个对象。那些只能迭代一次,消耗迭代器。我实际上根本不认为你需要TB
对象,只是迭代B
的元素。
def matrixMul(A, B):
return [[sum(ea*eb for ea,eb in zip(a,b)) for b in B] for a in A]
返回所需的输出:
>>> matrixMul([[1, 0], [0, 1]], [[1, 0], [0, 1]])
>>> [[1, 0], [0, 1]]
编辑:
顺便说一下,您的解决方案还存在其他问题。你和NumPy的版本仍然不匹配。但是这里的解决方案将修复您的索引错误。