0

这是有问题的代码,应该通过注释不言自明:

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)
4

1 回答 1

1

这不是print不工作。这是您的代码逻辑失败。在inv_powerm,第一次m0 == 1m1 == 1.0,所以m0 - m1 == 0。所以while测试失败。里面的所有代码都while没有执行。

于 2013-07-24T21:59:29.473 回答