以下是有问题的代码,应该用注释不言自明:
import numpy as np
import sys
A = np.matrix([[1, 1], [2, 0]])
x0 = np.matrix([1, 0]).reshape(2, 1)
thresh = 1e-3
def inv_powerm(A, x0, thresh):
m0 = x0.flat[abs(x0).argmax()]
x1 = np.linalg.solve(A, (x0 / m0))
m1 = x1.flat[abs(x1).argmax()]
while abs(m1 - m0) > thresh:
m0 = m1
x1 = np.linalg.solve(A, (x1 / m1))
m1 = x1.flat[abs(x1).argmax()]
print(x1)
print(m1)
return m1;
def pmat(m):
i = 0
while i < 10:
print(m)
i = i + 1
return m
# I can print the matrix
print(A)
# I can print the matrix in pmat()
pmat(A)
# But I cannot print matrices in inv_powerm()
inv_powerm(A, x0, thresh)
答案 0 :(得分:1)
print
不起作用。这是你的代码的逻辑失败。在inv_powerm
,第一次m0 == 1
和m1 == 1.0
,m0 - m1 == 0
。所以while
测试失败了。 while
中的所有代码都未执行。