def checkJacobi(m):
row = m.shape[0]
col = m.shape[1]
solv = 0
for i in range(row):
x = abs(m[i,i])
y = 0
for j in range(col):
y = y + abs(m[i,j])
y = y - x
if (y < x):
solv = solv + 1
if (solv == col):
return True
else:
return False
到目前为止,我的代码只是检查矩阵,看看它们是否可以用Jacobi方法求解(Jacobi方法只能在每行对角线元素的绝对值支配同一行中其他元素的绝对值之和时使用)。我用矩阵测试了它,结果它们返回了False。我的代码怎么了?你知道吗
主要错误是(y<;x)-求解+1->;必须是(y<;=x)
此外,将绝对值映射到行可能更干净一些:
实时调频:https://en.m.wikipedia.org/wiki/Diagonally_dominant_matrix
测试是
abs(m[i, i]) >= sum(abs(m[i, j]) for j in range(cols)) - abs(m[i, i])
。所以,你的代码应该是:您的代码正在检查严格对角优势,而Jacobi方法甚至适用于简单的“非严格”方法。你知道吗
相关问题 更多 >
编程相关推荐