可能会提高代码的效率
来源:6-8 实现更一般化的高斯-约旦消元法

GeXeLr
2018-12-18
def _forward(self):
i, k = 0, 0
while i < self._m and k < self._n:
# 看Ab[i][k]位置是否可以是主元
max_row = self._max_row(i, k, self._m)
self.Ab[i], self.Ab[max_row] = self.Ab[max_row], self.Ab[i]
if is_zero(self.Ab[i][k]):
k += 1
else:
# 将主元归为一
self.Ab[i] = self.Ab[i] / self.Ab[i][k]
for j in range(i + 1, self._m):
self.Ab[j] = self.Ab[j] - self.Ab[j][k] * self.Ab[i]
self.pivots.append(k)
i += 1
# k+=1 需要在这里加上这一句吗???
老师,这个_forward函数下一轮循环会在已经主元处理过的那一列的下一行开始寻找主元,找到的一定是0,相当于空转了一轮循环。所以else分支加上k+=1这个语句是不是效率会更高?
写回答
1回答
-
你是对的。应该加上。
其实应该是我忘记加了。但是正好不加k+=1,逻辑也是正确的,只是空转一轮,在is_zero的if分支下,k进行了+1操作= =
非常抱歉!
继续加油!:)
012018-12-18
相似问题
波波老师能否在出一门概率与数理统计的课程
回答 1
课程后续疑问
回答 1