) 숫자 방법 클래스의 경우 Simpson의 합성 규칙을 사용하여 명확한 적분을 평가하는 프로그램을 작성해야합니다. 나는 이미 이것 (아래 참조)을 가지고 있지만, 나의 대답은 정확하지 않다. 나는 f (x) = x 인 프로그램을 0에서 1로 적분하여 결과를 0.5로 테스트한다. 나는 0.78746 ... 등을 얻는다. 나는 Scipy에서 이용할 수있는 Simpson 's 규칙이있다라는 것을 알고있다. 그러나 나는 정말로 그것을 직접 작성해야한다.Simpson의 규칙 (Python
두 개의 루프에 문제가 있다고 생각됩니다. 나는 "범위 (1, n, 2)에", "범위 (2, n-1, 2)에"전에 시도했는데, 이것은 0.41668333 ... 등의 결과를 줬다. 나는 또한 시도했다. "x + = h"이고 "x + = i * h"시도했습니다. 첫 번째는 0.3954, 두 번째 옵션은 7.9218입니다.
# Write a program to evaluate a definite integral using Simpson's rule with
# n subdivisions
from math import *
from pylab import *
def simpson(f, a, b, n):
h=(b-a)/n
k=0.0
x=a
for i in range(1,n/2):
x += 2*h
k += 4*f(x)
for i in range(2,(n/2)-1):
x += 2*h
k += 2*f(x)
return (h/3)*(f(a)+f(b)+k)
def function(x): return x
print simpson(function, 0.0, 1.0, 100)
파이썬 2 파이썬 (3) 내의 2ln (X/5)를 통합 할 것인가? – Makoto
이것은 절단 오류로 인한 것일 수 있습니다. 어느 시점에서 불확실한 값을 확인 했습니까? – StoryTeller
http://en.wikipedia.org/wiki/Simpsons_rule을 보셨습니까 python2에 나열된 알고리즘이 있습니다 – epsilonhalbe