打印在某些python函数中不起作用

时间:2013-07-24 21:45:30

标签: python numpy stdout

以下是有问题的代码,应该用注释不言自明:

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)

1 个答案:

答案 0 :(得分:1)

print不起作用。这是你的代码的逻辑失败。在inv_powerm,第一次m0 == 1m1 == 1.0m0 - m1 == 0。所以while测试失败了。 while中的所有代码都未执行。