[英]Divide by zeros in a multi-variable function
我試圖根據函數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,這是由於我的代碼仍然出於零原因被零除的緣故。
任何幫助將非常感激。
通常,避免“被零除”警告或錯誤的一種有用方法是使用np.divide
函數。 您應該指定問題值而不是無窮大(在本示例中為零)。
c = np.divide(a, b, out=np.zeros_like(a), where=b!=0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.