割り当ての場合、範囲関数F(X)
は、a
からb
までの範囲、[a,b]
の範囲内にあります。aからbの範囲の関数の範囲を見つける
微積分を使用すると、これほど難しくありません。私はこれを基底とし、その部分を見つけ出し、次のようにコードの特定の部分に到達しました。
注:私はf = x**2
をテスト用に使用しています。
def integrate(a,b,tolerance_level):
firsttrapezoid = simpleIntegrate(a,b)
secondtrapezoid = simpleIntegrate(a,b/2) + simpleIntegrate(b/2,b)
error_range = abs(firsttrapezoid - secondtrapezoid)
if error_range < tolerance_level:
return secondtrapezoid
else:
return integrate(a, b/2, tolerance_level/2) + integrate(b/2, b, tolerance_level/2)
def simpleIntegrate(a,b):
return (b-a)*(f(a)+f(b))/2
def f(x):
f = x**2
return f
result = integrate(0,5,0.0001)
print(result)
は、私は41前後の値を取得する必要がありますが、私が得る値は44
[a、b]の間隔を2つの小さな間隔に分割する方法を確認します。中点の計算方法を具体的にチェックしてください。より明確な見方をするには:[0、5]の例から始めないでください。例題[1、5]から始めましょう。 – joanolo
@joanolo私は与えられた入力例の1つであるので[0,5]を使用していましたが、試してみます。 – tokyolerd
=>あなたの中点はわずか5/2です。しかし、あなたが[1、5]で作業するなら...あなたの中点は... – joanolo