我试图根据功能n
和输入x
的顺序定义一个功能。
import numpy as np
#importing our packages
n = np.array([0,1,2])
x = np.arange(0,21,1)
#defining our functions
def J(n,x):
if np.all(n==0) and np.all(x==0):
return 0
else:
J0 = np.sin(x)/x
J0[np.isnan(J0)]=0
print("First function J0 is",J0)
if np.all(n==1) and np.all(x==0):
return 0
else:
J1 = np.sin(x)/(x**2)-np.cos(x)/x
J1[np.isnan(J1)]=0
print("Second function J1 is",J1)
#J2
g = ((3/x**2)-1)
if np.all(n==2) and np.all(x==0):
return 0
else:
J2 = g*J0-3*np.cos(x)/x**2
J2[np.isnan(J2)]=0
print("Third function J2 is",J2)
我已经设法写完了。
我有一些问题需要您帮助:
我必须包含Jn[np.isnan(Jn)]=0
,因为没有它,我的结果的第一个元素将否则返回nan。 (哪个显示了我的if语句不起作用)
如何摆脱过多的警告,即“除以零”和“在true_divide中遇到无效值”?我意识到此链接可以回溯到问题1,这是由于我的代码出于某种奇怪的原因仍然被零除。
任何帮助将不胜感激。
答案 0 :(得分:1)
通常,一种避免“被零除”警告或错误的有用方法是使用np.divide
函数。
您应该指定问题值而不是无穷大-在此示例中为零。
c = np.divide(a, b, out=np.zeros_like(a), where=b!=0)