避免在零的错误
问题描述:
我正在写一个代码来查找参数k和l的不同值的多项式的根。除了当参数等于零时,此代码工作正常。避免在零的错误
我的做法是将零点偏移到一个小数字(如下所示),但这有缺点。
xlist = np.linspace(-n_steps*step_size,near_0,n_steps+1)
xlist=np.append(xlist,np.linspace(step_size,n_steps*step_size,n_steps))
ylist = np.linspace(-n_steps*step_size,near_0,n_steps+1)
ylist=np.append(ylist,np.linspace(step_size,n_steps*step_size,n_steps))
for k_i,k in enumerate(xlist):
for l_i,l in enumerate(ylist):
p=[1,-1j*w*k,l**2/(k**2+l**2)*(1-1/R),-l**2/(k**2+l**2)*w*1j*k]
roots=np.roots(p)
参数为零时避免计算的不同方式有哪些优缺点?在k = 0或l = 0的答案并不重要。我想最好的办法是当k或l为0时不运行计算。
感谢您的任何帮助。
答
你可能只是做:
xlist = np.linspace(-n_steps*step_size,near_0,n_steps+1)
xlist=np.append(xlist,np.linspace(step_size,n_steps*step_size,n_steps))
ylist = np.linspace(-n_steps*step_size,near_0,n_steps+1)
ylist=np.append(ylist,np.linspace(step_size,n_steps*step_size,n_steps))
for k_i,k in enumerate(xlist):
for l_i,l in enumerate(ylist):
if k == 0 or l == 0: # Just continue!
continue
p=[1,-1j*w*k,l**2/(k**2+l**2)*(1-1/R),-l**2/(k**2+l**2)*w*1j*k]
roots=np.roots(p)
希尔伯特被翻转在他的坟墓 –
尝试 - 除了用'ZeroDivisionError'似乎是合理的,不是吗? –
希尔伯特然后建议@touchmyboomboom – Chogg