2016-03-24 15 views
0

リスト内のxとyの値のセットに対して台形規則を実行する方法はありますか?私はお互いにプロットしたときにベルカーブの形をしている2つの数字のリストを持っています。どのようにカーブの領域を見つけるのですか?私はこのコードを持っていますが、数字の2つのリストだけで動作するように修正する方法はわかりません。リストに値が与えられた台形規則

def trap0 (f ,a ,b ,n): 
    # Basic trapezium rule . Integrate f(x) over theinterval from a to b using n strips 
    h= float (b-a)/n 
    s =0.5*(f(a)+f(b)) 
    for i in range (1,n): 
     s= s+f(a+i*h) 
    return s*h 
+0

このコードが現時点で正しいことを行う方法はありません。それはどこから来たのですか?あなたはそれをテストしましたか? –

+0

自分で関数を実装する必要がありますか?外部ライブラリが便利であろうか? ['numpy.trapz()'](http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.trapz.html)? [Scipy](http://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html)も同じ関数を呼び出します。 – Reti43

答えて

0

どの機能を正確に統合しますか?それは? x座標をソートしてから、連続する(x、y)のペアを直線的に補間することによって与えられるものですか?

多分不規則に間隔を置いた(x、f(x))のペアがあり、連続したペアで定義される台形の面積の合計を計算したいという考え方です。それらの点を通る関数の積分に対する近似)?

もし旧:私はこれらの線に沿って何かを示唆(危険:未テストコード):あなたがPiecewiseLinearFunctionのインスタンスを作成し、あなたのtrap0機能または何にそれを渡すことができ

class PiecewiseLinearFunction: 
    def __init__(self, xs, ys): 
     self.coords = zip(xs, ys) 
     self.coords.sort() 
    def __call__(self, x): 
     # I'll let you implement this 
     # but the idea is to find which interval x lies in, e.g. 
     # by bisection, and then to evaluate f by linear interpolation 
     # between the ys on either side 

た後。

の場合:おそらく上記のコードのように(x、y)のペアをソートし、各台形の面積(幅と平均の高さ)を計算して加算します。

関連する問題