问题描述
我想使用Riemann方法对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
一些评论:
- 您不会调用此 Riemann方法。这是midpoint method(数值积分)。
- 在域的边界上多加注意。现在,您的数字域为
[a - dx,b + dx]
。 - 如果您要寻找速度,最好收集所有
x
值(也许用linspace
),用所有要点评估函数一次,然后{ {1}}值上升。 (Python中的循环速度很慢。)