我收到此错误 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))