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 に答える