Ошибка в моей интеграции правила Симпсонов

Я написал следующий код, чтобы использовать правило Симпсона для интеграции произвольной функции, в моем случае, 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))
Другие вопросы по тегам