返回介绍

数学基础

统计学习

深度学习

工具

Scala

五、数值积分

发布于 2023-07-17 23:38:23 字数 5940 浏览 0 评论 0 收藏 0

  1. scipyintegrate模块提供了集中数值积分算法,其中包括对常微分方程组ODE的数值积分。

1. 积分

  1. 数值积分函数:

    
    
    xxxxxxxxxx
    scipy.integrate.quad(func, a, b, args=(), full_output=0, epsabs=1.49e-08, epsrel=1.49e-08, limit=50, points=None, weight=None, wvar=None, wopts=None, maxp1=50, limlst=50)
    • func:一个Python函数对象,代表被积分的函数。如果它带有多个参数,则积分只在第一个参数上进行。其他参数,则由args提供
    • a:积分下限。用-numpy.inf代表负无穷
    • b:积分上限。用numpy.inf代表正无穷
    • args:额外传递的参数给func
    • full_output:如果非零,则通过字典返回更多的信息
    • 其他参数控制了积分的细节。参考官方手册

    返回值:

    • y:一个浮点标量值,表示积分结果
    • abserr:一个浮点数,表示绝对误差的估计值
    • infodict:一个字典,包含额外的信息

    quad

  2. 多重定积分可以通过多次调用quad()实现。为了调用方便,integrate模块提供了dblquad()计算二重定积分,提供了tplquad()计算三重定积分。

  3. 二重定积分:

    
    
    xxxxxxxxxx
    scipy.integrate.dblquad(func, a, b, gfun, hfun, args=(), epsabs=1.49e-08, epsrel=1.49e-08)
    • func:一个Python函数对象,代表被积分的函数。它至少有两个参数:yx。其中y为第一个参数,x为第二个参数。这两个参数为积分参数。如果有其他参数,则由args提供
    • ax的积分下限。用-numpy.inf代表负无穷
    • bx的积分上限。用numpy.inf代表正无穷
    • gfuny的下边界曲线。它是一个函数或者lambda表达式,参数为x,返回一个浮点数。
    • hfuny的上界曲线。它是一个函数或者lambda表达式,参数为x,返回一个浮点数。
    • args:额外传递的参数给func
    • epsabs:传递给quad
    • epsrel:传递给quad

    返回值:

    • y:一个浮点标量值,表示积分结果
    • abserr:一个浮点数,表示绝对误差的估计值

    dblquad

  4. 三重定积分:

    
    
    xxxxxxxxxx
    scipy.integrate.tplquad(func, a, b, gfun, hfun, qfun, rfun, args=(), epsabs=1.49e-08, epsrel=1.49e-08)
    • func:一个Python函数对象,代表被积分的函数。它至少有三个参数:zyx。其中z为第一个参数,y为第二个参数,x为第三个参数。这三个参数为积分参数。如果有其他参数,则由args提供
    • ax的积分下限。用-numpy.inf代表负无穷
    • bx的积分上限。用numpy.inf代表正无穷
    • gfuny的下边界曲线。它是一个函数或者lambda表达式,参数为x,返回一个浮点数。
    • hfuny的上界曲线。它是一个函数或者lambda表达式,参数为x,返回一个浮点数。
    • qfunz的下边界曲面。它是一个函数或者lambda表达式,第一个参数为x,第二个参数为y,返回一个浮点数。
    • rfunz的上边界曲面。它是一个函数或者lambda表达式,第一个参数为x,第二个参数为y,返回一个浮点数。
    • args:额外传递的参数给func
    • epsabs:传递给quad
    • epsrel:传递给quad

    返回值:

    • y:一个浮点标量值,表示积分结果
    • abserr:一个浮点数,表示绝对误差的估计值

2. 求解常微分方程组

  1. 求解常微分方程组用:

    
    
    xxxxxxxxxx
    scipy.integrate.odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12, mxords=5, printmessg=0)
    • func:梯度函数。第一个参数为y,第二个参数为t0,即计算t0时刻的梯度。其他的参数由args提供
    • y0:初始的y
    • t:一个时间点序列。
    • args:额外提供给func的参数。
    • Dfunfunc的雅可比矩阵,行优先
    • col_deriv:一个布尔值。如果Dfun未给出,则算法自动推导。该参数决定了自动推导的方式
    • full_output:如果True,则通过字典返回更多的信息
    • printmessg:布尔值。如果为True,则打印收敛信息
    • 其他参数用于控制求解的细节

    返回值:

    • y:一个数组,形状为 (len(t),len(y0)。它给出了每个时刻的y
    • infodict:一个字典,包含额外的信息

    odeint odeint_lorenz

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文