簡體   English   中英

使用tplquad對具有3個以上參數的函數進行三重積分

[英]Taking triple integral for a function with more than 3 parameters using tplquad

我想在func(eps,e,p,M)上接受這個三重積分:

在此處輸入圖片說明

積分在epsep ,代碼在這里:

def Probability(eps,e,p,M):
    prob=eps*e*(e**2-p**2)*function(M)
    return prob

a=0
b=np.inf

def gfun():
    return 0.25

def hfun():
    return 0.5

def qfun(e):
    return -e

def rfun(e):
    return 3*e-1

def n(M):
    n=integrate.tplquad(Probability, 0, np.inf,gfun,hfun,qfun,rfun,args=(M))
    return n

但是我得到這個錯誤:

integrate() argument after * must be an iterable, not float

我不知道這是什么問題,另一個問題是:函數概率中參數的順序是否正確?

如前所述,其他參數必須位於元組中。 請注意, (1)實際上是整數1 ,用逗號(1,)寫入一個元組。 該元組也傳遞給邊界函數。 這就是錯誤"gfun() takes 0 positional arguments but 1 was given" 下面的代碼正在工作:

import numpy as np
from scipy.integrate import tplquad

def probability(eps, e, p, M):
    prob = eps * e * (e**2 - p**2) * M
    return prob


def gfun(M):
    return 0.25

def hfun(M):
    return 0.5

def qfun(e, M):
    return -e

def rfun(e, M):
    return 3*e - 1

M = .1
n = tplquad(probability, 0, 12, gfun, hfun, qfun, rfun, args=(M,))

一個元組幾乎就像一個列表(有關更多詳細信息,請參見python:list vs tuple,何時使用每個? )。 您還可以編寫:

n = tplquad(probability, 0, 12, gfun, hfun, qfun, rfun, args=[M])

此處不需要逗號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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