导入SciPy失败
我正在尝试用SciPy来解决一个非常简单的方程(开普勒方程),使用的是牛顿-拉夫森方法。不过,运行程序时出现了以下错误信息:
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
你可能也发现了这一点,除了larsmans提到的问题之外,scipy.optimize里没有sin和cos这两个函数。
8
你正在把 scipy.optimize
导入为 sc
,然后你试图调用 sc.optimize.newton
,这实际上就是 scipy.optimize.optimize.newton
。我会这样做:
import scipy.optimize as opt
或者
import scipy.optimize as scopt