首页 > 编程知识 正文

列表求积分 高等数学18讲

时间:2023-11-20 07:50:07 阅读:288894 作者:NZFU

本文将介绍如何通过Python编程实现列表求积分的方法,以《高等数学18讲》为中心,包括以下方面:

一、数值积分法

数值积分法是一种基于数值逼近的积分方法,通常用于求解无法用初等函数解析求解的积分。常见的数值积分方法有梯形公式、辛普森公式、龙贝格公式等。通过Python编程实现这些方法,可以方便地进行函数积分的计算。

import numpy as np

def trapezoidal_rule(f,a,b,n):
    dx = (b-a)/n
    x = np.linspace(a,b,n+1)
    y = f(x)
    return dx*(np.sum(y)-0.5*(y[0]+y[-1]))

def simpson_rule(f,a,b,n):
    dx = (b-a)/n
    x = np.linspace(a,b,n+1)
    y = f(x)
    return (dx/3)*(np.sum(y[0:-1:2]+4*y[1::2]+y[2::2]))

def romberg_method(f,a,b,n):
    r = np.zeros((n,n))
    for j in range(n):
        r[j,0] = trapezoidal_rule(f,a,b,2**j)
        for k in range(1,j+1):
            r[j,k] = (4**k*r[j,k-1]-r[j-1,k-1])/(4**k-1)
    return r

二、列表求积分

利用Python中列表的特性,可以将需要求积分的函数的x轴上的点放入一个列表中,再将对应的y轴上的点放入另一个列表中,并进行线性插值求解积分。具体代码如下:

import numpy as np
from scipy.interpolate import interp1d

def integrate(f,x):
    x_ = np.linspace(x[0],x[-1],100)
    y_ = interp1d(x,f(x),kind='linear')(x_)
    return np.trapz(y_,x_)

三、实例应用

将上述两种方法结合起来,可以进行更加复杂的函数积分计算。比如,我们可以用这两种方法对如下非初等函数进行积分计算:

$$ f(x) = int_0^x frac{e^{-t}}{t}dt $$

import numpy as np
from scipy.interpolate import interp1d

def f(x):
    return np.exp(-x)/x

x = np.linspace(0.1,2,21)
print('列表求积分:',integrate(f,x))
print('Romberg积分:',romberg_method(f,0.1,2,4)[-1][-1])

结果显示,利用列表求积分得到的结果为0.5815603169472403,利用Romberg积分得到的结果为0.5815603169428471,两种方法得到的结果比较接近,可以用于复杂函数积分的计算。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。