Python 中的部分积分

Partial integral in 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

你的方法没有什么可怕的。结果确实接近真实值:

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

一些备注:

  • 你不会称这个黎曼方法。这是midpoint method(数值积分)。
  • 多注意域的边界。现在,您的数字域是 [a - dx, b + dx].
  • 如果您正在寻找速度,最好收集所有 x 值(也许 linspace),评估函数 once点,然后 np.sum 值向上。 (Python 中的循环很慢。)