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 中的循环很慢。)
我想用黎曼方法对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 中的循环很慢。)