(三)scipy1.0---积分quad、dblquad、nquad

简介
关键词:数值计算库(线性代数、常微分方程、信号处理、图像处理、矩阵等)
官网:scipy.org
学习大致内容:
integral 积分
optimize 最优化
interpolation 插值
linear 线性计算
others

scipy1.0—积分quad、dblquad、nquad
scipy.integrate.quad

"""
scipy1.0:integrate积分
马玉华   2019.11.5
"""

import numpy as np
import scipy
from scipy import integrate  #解决错误:AttributeError: module 'scipy' has no attribute 'integrate'


def main():
    #  quad一维积分 ,dblquad二维积分(double quad),nquad 多维积分

    result1 = integrate.quad(lambda x:np.exp(-x) , a=0,b=np.inf)  #quad(func,a,b),对函数func从a到b积分。np.inf表示无穷大
    print(result1,type(result1))   # 返回结果为:元组(积分值,误差值)。 因为电脑算的数值积分不同于定积分不定积分,会有一个误差值

    result2 = integrate.dblquad(lambda y,x: x*y**3 , a=0,b=5,gfun= lambda x:0, hfun=lambda x:6)   # ∫_0^6【∫_0^5〖xy^3 ⅆx〗】 ⅆy
    # integral of func(y,x) from x=a..b ,and y=gfun(x)..hfun(x)
    print('积分值,误差值:',result2)

    def f(x,y):              #积分函数
       return x*y
    def bound_x(y):          #积分内容边界
       return [0, 1-2*y]
    def bound_y():           #积分内容边界
        return [0, 0.5]
    result3 = integrate.nquad(f,[bound_x,bound_y])     #nquad(积分函数,积分边界)。 ∫_0^0.5【∫_0^(1-2y)【xyⅆx】】ⅆy
    # 这其中被调用的函数f(x,y)、bound_x(y)均不写括号(),因为我们没有要传入的实参,写了反而会因为没有传入参数而出现错误。bound_y()可写可不写,因为定义的函数中就不需要接收参数
    print(result3)

    """
    为什么要写出这么多函数来调用,直接积分不行吗?
    
    如果直接积分,应该这么写:integrate.nquad(lambda x,y: x*y, [[0,1-2*y],[0,0.5]])
    那就会出现 name 'y' is not defined ,就是x积分域中的1-2*y的y没有被定义没法使用
    
    可写成result3 = integrate.nquad(lambda x,y: x*y, [bound_x,[0,0.5]])
    或result3 = integrate.nquad(f, [bound_x,bound_y()])
    """


if __name__ == '__main__':
    main()

上述例子中的积分为:
在这里插入图片描述
输出结果:

"C:\Users\mayuhuaw\Desktop\Python数据分析-基础技术\3. scipy\venv\Scripts\python.exe" "C:/Users/mayuhuaw/Desktop/Python数据分析-基础技术/3. scipy/scipy1.0:integrate积分.py"
(1.0000000000000002, 5.842606703608969e-11) <class 'tuple'>
积分值,误差值: (4049.9999999999995, 4.4964032497318833e-11)
(0.010416666666666668, 4.101620128472366e-16)

进程已结束,退出代码 0

对quad、dblquad、nquad的用法还有疑问可参见官网:
方法一:https://docs.scipy.org/doc/scipy/reference/integrate.html
方法二:打开官网scipy.org
点documentation
在这里插入图片描述
选scipy
在这里插入图片描述
点 API reference 下的语句
在这里插入图片描述
可得到
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nutron-ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值