数值积分 - 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
原谅我的无知,函数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