は私が解決しようとしている宿題であるrule-台形で機能を統合:ここではPython
最後の質問からおおよその統合方法の更なる向上をfの下の領域を分割することです(x)を等間隔のn台の台形に曲げます。
この考えに基づき、以下の式は積分を近似するために導出することができます!
(https://www.dropbox.com/s/q84mx8r5ml1q7n1/Screenshot%202017-10-01%2016.09.32.png?dl=0)!
ここで、hは台形の幅であり、
h=(b−a)/n
とxi=a+ih,i∈0,...,n
は台形の辺の座標です。上記の図は、台形ルールの考え方を視覚化しています。この式をPython関数
trapezint(f,a,b,n)
で実装します。 b> aかどうかを確認して確認する必要があるかもしれません。さもなければ変数を入れ替える必要があるかもしれません。たとえば、
trapezint(math.sin,0,0.5*math.pi,10)
の結果は、0.9979(数値エラーあり)である必要があります。trapezint(abs,-1,1,10)
の結果は2.0にする必要があります。
これは私のコードですが、正しい値を返すようには見えません。私は1.0
を取得すると仮定しています私は、私は0.18000000000000002を得る0.9979
print (trapezint(abs, -1, 1, 10))
のために取得することとしています、私は0.012286334153465965取得print ((trapezint(math.sin,0,0.5*math.pi,10)))
、については、
。
import math
def trapezint(f,a,b,n):
g = 0
if b>a:
h = (b-a)/float(n)
for i in range (0,n):
k = 0.5*h*(f(a+i*h) + f(a + (i+1)*h))
g = g + k
return g
else:
a,b=b,a
h = (b-a)/float(n)
for i in range(0,n):
k = 0.5*h*(f(a + i*h) + f(a + (i + 1)*h))
g = g + k
return g
print ((trapezint(math.sin,0,0.5*math.pi,10)))
print (trapezint(abs, -1, 1, 10))
「正しい値に到達していないようです」より具体的に指定してください。期待されるアウトプットとは何ですか?エラーメッセージが表示されましたか?もしそうなら、完全なトレースバックは何でしたか? [最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve)を参照してください。 –
'return g'文がどこにあるかを見てください。また、同じコードを2つコピーしていないほうがずっと良いでしょう。 –