• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python 实现定积分与二重定积分的操作

    1.概述

    最近项目需要使用程序实现数学微积分,最初想用java实现,后来发现可用文档太少,实现比较麻烦,后来尝试使用python实现,代码量较少,主要有sympy与scipy两种实现方式,本文主要记录scipy的实现方式。

    2.内容

    2.1 所求函数

    2.2 python代码

    # 引入需要的包
    import scipy.integrate
    from numpy import exp
    from math import sqrt
    import math
    
    # 创建表达式
    f = lambda x,y : exp(x**2-y**2)
    
    # 计算二重积分:(p:积分值,err:误差)
    # 这里注意积分区间的顺序
    # 第二重积分的区间参数要以函数的形式传入
    p,err= scipy.integrate.dblquad(f, 0, 2, lambda g : 0, lambda h : 1)	
    print(p)
    
    

    2.3 注意问题

    1. exp尽量使用numpy的exp

    2. 注意积分区间参数的顺序

    3. 第二重积分的区间参数要以函数的形式传入

    补充:python实现求解积分

    例子 1:

    假设有随机变量 x,定义域 X,其概率密度函数为 p(x),f(x) 为定义在 X 上的函数,目标是求函数 f(x) 关于密度函数 p(x) 的数学期望

    蒙特卡洛法根据概率分布 p(x) 独立地抽样 n 个样本 x1,x2,…..xn,得到近似的 f(x) 期望为:

    其实这个的理解就是要求一个拥有概率密度的函数期望值

    期望=积分(每个点的密度函数*每个点的价值函数)

    例子 2:

    假设我们想要求解 h(x) 在 X 上的积分:

    我们将 h(x) 分解成一个函数 f(x) 和一个概率密度函数 p(x) 的乘积,进而又将问题转换为求解函数 f(x) 关于密度函数 p(x) 的数学期望

    这里的Ep(x)是相当于把整个分布当时了概率分布,即总发生概率为1.

    这里,f(x) 表示为 ,则有:

    更一般的,假设我们想要求解 ,熟悉积分的同学肯定已经知道答案为 ,那么如何用采样的方法来得到这个值呢?

    ,0x10,那么

    下面是代码:

    '''import random
    num=1000000
    sum=0
    for i in range(0,num):
        x=random.uniform(0,10)
        sum+=x*x*10
    sum/=1000000
    print(sum)'''
    import random
    numSamples=10000
    samples=[random.uniform(0,10)for _ in range(numSamples)]
    f_samples=[10*sample**2 for sample in samples]
    result=1/10000.0*sum(f_samples)
    print(result)

    result=333.10527012455066

    random.uniform(x,y)表示在[x,y)之间生成一个 实数

    对于复杂的 h(x),这种方法计算起来显然就更加方便了(特别是忘记积分怎么算的同学)。

    蒙特卡洛方法其实就是利用大数定理通过大量统计来算出最后的值。

    到这里为止,我们简单的介绍了蒙特卡洛方法,但是依旧没有提到要怎么利用复杂的概率密度函数进行采样。

    接下来我们来看一下接受-拒绝法(accept-reject sampling method),它也是蒙特卡洛法中的一种类型适用于不能直接抽样的情况。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • python、Matlab求定积分的实现
    • python 求定积分和不定积分示例
    • python编程通过蒙特卡洛法计算定积分详解
    上一篇:python 解决微分方程的操作(数值解法)
    下一篇:python 中的@运算符使用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python 实现定积分与二重定积分的操作 Python,实现,定,积分,与,二,