文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-02 22:21

关注

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 注意问题

exp尽量使用numpy的exp

注意积分区间参数的顺序

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

补充: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) 表示为 ,则有:

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

,0<x<10,那么

下面是代码:


'''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),它也是蒙特卡洛法中的一种类型适用于不能直接抽样的情况。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯