2016-12-12 5 views
-2

Uniのラボラトリークラスで、私のコードの1つのバージョンが失敗しましたが、もう1つは成功しました。誰でもこれらのscipyのインポートの違いを説明できますか?

た失敗したバージョン:

import scipy as sc 

def trapez(f, a, b, n) 
    h = (b - a)/n 
    c = list(range(1, n)) 
    return (h/2) * (f(a) + f(b) + 2 * sum(f(a + i * h) for i in c)) 

def finderror(n) 
    def f(x): 
     return x ** 2 
    l = sc.integrate.quad(f, -1, 2) 
    return l[0] - trapez(f, -1, 2, n) 

だった渡されたバージョン:

import scipy.integrate as sc 

def trapez(f, a, b, n): 
    h = (b - a)/n 
    c = list(range(1, n)) 
    return (h/2) * (f(a) + f(b) + 2 * sum(f(a + i * h) for i in c)) 

def finderror(n): 
    def f(x): 
     return x ** 2 
    l = sc.quad(f, -1, 2) 
    return l[0] - trapez(f, -1, 2, n) 

は、これらの両方は、「失敗」1での私の混乱したがって、まったく同じ答えを返しました。

アドバイスをいただきありがとうございます。 (私はすでにこれを完了しているので、これは私が答えを得ようとするものではありません)

+2

「失敗」または「不合格」とはどういう意味ですか? – user2357112

+0

エラーを投稿する(スタックトレース付き) –

+0

失敗した、または渡されたと言うと、それは電子メールを送信し、各機能を通過または失敗した電子メールを返します。 AttributeError: 'scipy'モジュールに 'integrate'属性がありません。 –

答えて

2

ちょうどimport scipy as scの場合、scipy.integrateサブモジュールがロードされません。明示的にimport scipy.integrateが必要です。

最初のスニペットが試したときに動作するように見えたのは、それを単独でテストしなかったからです。 scipy.integrateがすでに他のインポートによって読み込まれている環境で試しました。

+0

これは私のコースの誰かが提案したものです。私は後で試してみました。scipyをscとしてインポートした後、sc.integrate.quad(関数と引数 –