Частичный интеграл в Python

#python #numerical-integration

#python #численное интегрирование

Вопрос:

Я хочу использовать метод Римана для численного вычисления частичного интеграла в Python. Я хотел бы интегрировать относительно x и найти функцию от t, но я не знаю, как это сделать, моя функция: f(x) = cos(2*pi*x*t) ее примитив между [-1/2,1/2 ]: f(t) = sin(pi*t)/t

 def riemann(a, b, dx):
    if a > b:
        a,b = b,a
    n = int((b - a) / dx)
    s = 0.0
    x = a
    for i in range(n):
        f_i[k] = np.cos(2*np.pi*x)
        s  = f_i[k]
        x  = dx
    f_i = s * dx
    
    return f_i,t
  

Ответ №1:

В вашем подходе нет ничего слишком ужасного. Результат действительно близок к истинному значению:

 import numpy as np


def riemann(a, b, dx):
    if a > b:
        a, b = b, a
    n = int((b - a) / dx)
    s = 0.0
    x = a
    for i in range(n):
        s  = np.cos(2 * np.pi * x)
        x  = dx
    return s * dx


print(riemann(0.0, 0.25, 1.0e-3))
print(1 / (2 * np.pi))
  
 0.15965441949277526
0.15915494309189535
  

Некоторые замечания:

  • Вы бы не назвали этот метод Римана. Это метод средней точки (численного интегрирования).
  • Обратите немного больше внимания на границы вашей области. Прямо сейчас ваша числовая область [a - dx, b dx] .
  • Если вы ищете скорость, лучше всего собрать все ваши x значения (возможно, с linspace помощью), оценить функцию один раз со всеми точками, а затем np.sum значения вверх. (Циклы в Python медленные.)