谁能解释这些进口的scipy之间的区别?

时间:2016-12-12 19:10:40

标签: python scipy

在Uni的一个实验课上,我的代码的一个版本失败了,而另一个版本通过了,我希望有人可以解释为什么这些代码有什么不同?

失败的版本是:

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 个答案:

答案 0 :(得分:2)

如果您只是import scipy as sc,则不会加载scipy.integrate子模块。您需要明确import scipy.integrate

如果第一个代码段在您尝试时似乎有效,那是因为您没有单独测试它。您在其他导入已加载scipy.integrate的环境中尝试过它。