我收到此错误“索引错误:列表索引超出范围”

时间:2021-05-19 09:22:34

标签: python list numpy testing append

我收到此错误 IndexError: list index out of range

ERROR: test_Nullstellen_Polynom (__main__.Test_Praktikum) [Nullstellen des Polynoms p11 werden nicht korrekt mit Parametern delta=10**-5, n=50 berechnet.]
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\AYMEN\test2.py", line 191, in subTest
    yield
  File "C:\Users\AYMEN\test2.py", line 450, in test_Nullstellen_Polynom
    self.runner(lib.Nullstellen_Polynom, (a, 10**k, n), self.assertAlmostEqualRelativeAbs,
  File "C:\Users\AYMEN\test2.py", line 135, in runner
    result = post(method(*args))
  File "C:\Users\AYMEN\lib2.py", line 147, in Nullstellen_Polynom
    pol=Hornerschema(pol,x_nst[-1])[:-1]
  File "C:\Users\AYMEN\lib2.py", line 95, in Hornerschema
    b.append(a[0])
IndexError: list index out of range

我的代码:

def Hornerschema(a, x0):
   
    i = 1
    b = []
    b.append(a[0])
    while i < len(a):
           b.append ( b[i-1] * x0 + a[i])
           i +=1
    return b

def Polynom_Funktion(a):    
    def p(x):
        n=len(a)
        res=0
        i = 0
        while i < n:
            res+= Hornerschema(a, x)[-1]*x**(n-i-1)
            i +=1
        return res 
    return p
      
def Diff_Polynom(a):
    n=len(a)
    u=list(range(n-1))
    for i in range(0,n-1):
        u[i]=a[i]*(n-1-i)
    return u

def Nullstellen_Polynom(a,delta,k):
   start=-10
   end=10
   n=40
   length=len(a)
   NstL=[]
   pol=a
   trys=n             
   x_nst=[]
   for i in range(length-1):
     while trys>=(n):
          x1=complex(np.random.uniform(start,end), np.random.uniform(start,end))
          f=Polynom_Funktion(pol)
          df=Polynom_Funktion(Diff_Polynom(pol))
          x_nst=Newton_Verfahren(f,df,x1,delta,n)
          trys=len(x_nst)
          pol=Hornerschema(pol,x_nst[-1])[:-1]
          NstL.append(x_nst[-1])
          trys=n
   return NstL``` 
test file:
def test_Hornerschema(self):
    for i, a in enumerate(self.pi):
        name = 'p' + str(i + 1)
        with self.subTest(msg='Hornerschema für Polynom {} falsch.'.format(name), name=name):
            for x0 in np.linspace(-10, 10, 11):
                self.runner(lib.Hornerschema, (a, x0), self.assertAlmostEqualRelative)
        
def test_Polynom_Funktion(self):
    for i, a in enumerate(self.pi):
        name = 'p' + str(i + 1)
        with self.subTest(msg='Polynom_Funktion für Polynom {} falsch.'.format(name), name=name):
            p = lib.Polynom_Funktion(a)
            for x in np.linspace(-10, 10, 11):
                self.runner(p, (x, ), self.assertAlmostEqualRelative)
        
def test_Diff_Polynom(self):
    for i, a in enumerate(self.pi):
        name = 'p' + str(i + 1)
        with self.subTest(msg='Diff_Polynom für Polynom {} falsch.'.format(name), name=name):
            self.runner(lib.Diff_Polynom, (a, ), self.assertAlmostEqualRelative)
        
def test_Nullstellen_Polynom(self):
    np.random.seed(seed=12345)
    import random
    random.seed(12345)
    for i, a in enumerate(self.pi):
        name = 'p' + str(i + 1)
        with self.subTest(name=name):
            for k, n in ((-5, 50), ):
                with self.subTest(msg='Nullstellen des Polynoms {} werden nicht korrekt mit Parametern delta=10**{}, n={} berechnet.'.format(name, k, n), name=str(-k)):
                    self.runner(lib.Nullstellen_Polynom, (a, 10**k, n), self.assertAlmostEqualRelativeAbs,
                                post=Test_Praktikum.Polynom_von_Nullstellen, true_value=a, relative=10**-4,
                                msg='Polynom {} = {}.'.format(name, a))

0 个答案:

没有答案
相关问题