2017-10-25 10 views
3

私は、tについて2回積分すると、x(t)の位置を見つけることができます。私はt = 10秒で位置を見つけようとしています。Scipyの使用単一の変数での複数積分

a(t)は多変数ではないので、私は必要な二重積分を計算するためにScipy dblquad関数を使用するのに問題があります。私がこれまで持っているものを見てください:

def a(t): 
     return (2.5/(1 + math.exp((t-8)/0.8))) 

    def upperbound(): 
     return 10 

    def lowerbound(): 
     return 0 

    x = dblquad(a,0,10,lowerbound,upperbound) 

これは私がdblquadがmultivariabled(t)を必要と集めることができるものからとしては動作しません。誰も助けることができますか?

+0

dblquadとは何ですか?あなたはもっと広く説明できます –

+0

ここでドキュメントを見つけてください:https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.integrate.dblquad.html –

+0

あなたの関数がどのように '' A Python少なくとも2つの変数の関数またはメソッド: '' – hpaulj

答えて

4

あなたは何を達成したいことは二つの変数の機能を統合することではなく、二回1つの変数の機能を統合することはないので、これが必要である。この

import math 
from scipy.integrate import quad 

def a(t): 
    return (2.5/(1 + math.exp((t-8)/0.8))) 

lb, ub = 0, 10 

integral = quad(lambda t: quad(a, 0, t)[0], lb, ub)[0] 
print(integral) 
# 86.28470375472537 

を達成するために二回scipyのダウンロードの単一の変数統合を使用することができます。上の積分文では、内側のquadは関数を一度積分しますが、tの関数として積分を維持します。外側のquadは、定義された制限を超えて2回目に関数を統合します。

タプルを出力するので、最初の引数はquadの出力から取得する必要があります。第2引数は、数値積分の誤差の上限です。

関連する問題