数值积分 - Python 中的求和和函数

Numerical Integration - Summations and Functions in Python

原谅我的无知,函数H实际上是一个无穷和(包括-n项)。我希望理想地截断大约 100 的较大值。我的代码似乎有效,但我不确定它是否真的对描述的 n 值求和。

代码

import numpy as np
from scipy.integrate import trapz

tvals = [1, 2, 3, 4, 5] # fixed values of t
xvals = [0, 0.2, 0.4, 0.6, 0.8, 1.0] # fixed values of x

xi = np.linspace(0, 1, 100)

def H(xi, x, t):
    for n in range(-2, 2):
        return 0.5 * np.sin(np.pi * xi) * np.exp(-(x - 2 * n - xi)**2 / 4 * t) / np.sqrt(np.pi * t)

# Everything to the right of the sin term is part of a sum
# xi is the integral variable!

TrapzH = trapz(H(xi, xvals[1], tvals[0]), x=None, dx=0.1, axis=-1)
print(TrapzH)

我已经针对 n = 1 的版本进行了测试,范围为 (0, 1),它们似乎具有不同的值,但我仍然不确定。

您的函数 H 不会遍历指定的 n 范围,因为它会在遇到的第一个 return 处(在 n=-2 处)退出该函数。也许您正在寻找

def H(xi, x, t):
    sum = np.zeros(xi.shape)
    for n in range(-2, 2):
        sum += np.exp(-(x - 2 * n - xi)**2 / 4 * t) / np.sqrt(np.pi * t)
    return 0.5 * np.sin(np.pi * xi) * sum