簡體   English   中英

在多元函數中除以零

[英]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)

我設法寫了上面。

我有一些問題需要您協助:

  1. 我必須包括Jn[np.isnan(Jn)]=0因為沒有它,我的結果的第一個元素將否則返回nan。 (哪個顯示我的if語句不起作用)

  2. 如何擺脫過多的警告,即“除以零”和“在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM