首页 > 解决方案 > Python中的偏积分

问题描述

我想使用 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

标签: pythonnumerical-integration

解决方案


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

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

一些备注:

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

推荐阅读