2013-11-28 272 views
0

我已经在第4行使用了np.Zeros,并且它没有给出错误,为什么它在第17行给出错误AttributeError:'module'object has no attribute'Zeros'并在第27行它给误差..误差在Y = newtonRaphson(残留,startSoln(X),1.0E-5)AttributeError:'模块'对象没有属性'零'

import numpy as np 
from newtonRaphson import * 

def residual(y): 
    r=np.Zeros((m+1)) 
    r[0]=y[0] 
    r[m]=y[m]-1.0 
    for i in range(1,m): 
     r[i]=y[i-1] 
    return r 

def F(x,y,yPrime): 
    F=-3.0*y*yPrime 
    return F 

def startSoln(x): 
    y=np.Zeros((m+1)) 
    for i in range(m+1): 
     y[i]=0.5*x[i] 
    return y 

xStart=0.0 
xStop=2.0 
m=10 
h=(xStop-xStart)/m 
x=np.arange(xStart,xStop+h,h) 
y= newtonRaphson(residual,startSoln(x),1.0e-5) 
print '\n   x   y' 
for i in range(m+1): 
    print x[i],'   '.y[i] 
residual(0.0005) 

这里是newtonRaphson模块

def newtonRaphson(f,df,a,d,tol=1.09e-9): 
    import error 
    fa= f(a) 
    if fa == 0.0 :return a 
    fb = f(b) 
    if fb ==0.0: return b 
    if fa*fb >0.0: error.err 
    x= 0.5*(a+b) 
    for i in range(30): 
     if abs(fx)<tol :return x 
     if fa*fx <0.0: 
      b=x 
     else: 
      a=x ;fa=fx 
     dfx=df(X) 
     try:dx= -fx/dfx 
     except ZeroDivisionError: dx=b-a 
     x=x+dx 
     if (b-x)*(x-a)<0.0: 
      dx=0.5*(b-a) 
      x=a+dx 
     if abs(dx)< tol*max(abs(b),1.0): return x 
     print 'Too many iterations in Newton-Raphson' 
+0

在newtonRaphson中有'np'吗? –

+0

@BurhanKhalid我进口numpy的为NP代码 – user3036166

+0

@BurhanKhalid修正Z到Z后。现在的误差仅在27行,这是newtonRaphson需要ATLEAST 4场参数和我只给3 .. – user3036166

回答

2

这是因为the function is called zeros ,而不是Zeros。将np.Zeros更改为np.zeros

+0

而不是它的原因第4行给出的错误是由于其他错误而导致该行无法到达。 –

+0

是的,现在错误被纠正了,现在错误只在第27行,那就是newtonRaphson需要至少4个参数,而我只给出了3 ... – user3036166

相关问题