导入SciPy不起作用

时间:2012-02-11 12:04:44

标签: python ubuntu scipy

我正在尝试使用SciPy使用Newton-Raphson求解一个非常简单的方程(Kepler方程)。但是,执行该程序失败,并显示以下错误消息:

    return sc.optimize.newton(f, meanAnomaly, f_prime, args=(), 
AttributeError: 'module' object has no attribute 'newton'

显然,我在Ubuntu 12.04下安装了SciPy。来自scipy.test():

NumPy version 1.5.1
NumPy is installed in /usr/lib/python2.7/dist-packages/numpy
SciPy version 0.9.0
SciPy is installed in /usr/lib/python2.7/dist-packages/scipy
Python version 2.7.2+ (default, Jan 21 2012, 23:31:34) [GCC 4.6.2]
nose version 1.1.2

有什么问题?这是我的代码:

# File a
from b import *

print calculate_eccentric_anomaly(1,2)

# File b
def calculate_eccentric_anomaly(meanAnomaly, eccentricity):
    import scipy.optimize as sc

    def f(eccentricAnomaly):
        return (eccentricAnomaly - eccentricity * 
                sc.sin(eccentricAnomaly) - meanAnomaly)

    def f_prime(eccentricAnomaly):
        return 1 - eccentricity * sc.cos(eccentricAnomaly)

    return sc.optimize.newton(f, meanAnomaly, f_prime, args=(), 
                              tol=1e-10, maxiter=50)

2 个答案:

答案 0 :(得分:6)

您要将scipy.optimize导入为sc,然后您尝试拨打sc.optimize.newton,这实际上是scipy.optimize.optimize.newton。我会做的

import scipy.optimize as opt

import scipy.optimize as scopt

答案 1 :(得分:0)

你可能也想到了这一点,但除了larsmans指出的问题之外,scipy.optimize中没有sin / cos。