python - 我得到这个错误''IndexError:列表索引超出范围''
问题描述
我收到此错误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))
解决方案
推荐阅读
- python - 确定点是否在移动(熊猫窗口函数)
- android - 如何在Android App中访问下载目录中的文件
- python - 自定义列布局 Python API
- java - 从 ResultSet 中获取以 NanoSeconds 为单位的时间戳
- sql - 计算年初至今重复
- php - sim800l 和 api rest 的 cookie 问题
- php - 如何在 Symfony 4 中使用 cronjob 检查我的数据库,以便在必要时更改它?
- javascript - nodejs 和浏览器之间的一些 Javascript 功能如何实现不同?
- php - 在一个 Postgresql 中更新多个表
- plot - 函数图,DomainError。产生复杂结果的求幂需要一个复杂的参数