Ошибка в моей интеграции правила Симпсонов
Я написал следующий код, чтобы использовать правило Симпсона для интеграции произвольной функции, в моем случае, sin(x):
import math
delta_x=(x2-x1)/N
def simpson(x1,x2,f,N):
sum=0
i=1
for i in range(1,N+1):
sum+=f(x1+i*delta_x)
sum1=(3*delta_x)*sum
return(sum1)
print(simpson(0,math.pi,math.sin(x),100))
однако я получаю сообщение об ошибке "объект с плавающей точкой не может быть вызван" в строке суммы +=f(x1+i*delta_x). Кто-нибудь знает, что может быть не так?
Спасибо:)
1 ответ
f
аргумент вашей функции должен быть функцией. math.sin(x)
не возвращает функцию, она вычисляет грех x
и возвращает это число. simpson()
затем пытается вызвать его как функцию.
Вы должны просто пройти math.sin
будет вызван simpson()
в петле.
print(simpson(0,math.pi,math.sin,100))