使用 scipy.integrate.quad 执行 3D 积分

2023-12-03

提出问题的动机

我正在尝试在所有空间上积分函数 f(x,y,z) 。

我尝试使用 scipy.integrate.tplquad 和 scipy.integrate.nquad 进行积分,但这两种方法都将积分返回为 0(当积分应该是有限的时)。这是因为,随着积分量的增加,被积函数非零的区域被采样得越来越少。积分“错过”了这个空间区域。然而, scipy.integrate.quad 似乎能够通过执行变量的更改来处理 [-无穷大,无穷大] 的积分......

Question

是否可以使用 scipy.integrate.quad 3 次来执行三重积分。我想到的代码如下所示:

x_integral = quad(f, -np.inf, np.inf)
y_integral = quad(x_integral, -np.inf, np.inf)
z_integral = quad(y_integral, -np.inf, np.inf)

其中 f 是函数 f(x, y, z),x_integral 应从 x = [- 无穷大, 无穷大] 积分,y_integral 应从 y = [- 无穷大, 无穷大] 积分,z_integral 应从 z = [- 无穷大] 积分, 无穷]。我知道quad想要返回一个浮点数,因此不喜欢在x上积分函数f(x, y, z)以返回y和z的函数(如上面代码中的x_integral = ...行正在尝试做)。有没有办法实现上面的代码?

Thanks


这是一个嵌套调用的示例quad执行积分,得到球体体积的 1/8:

import numpy as np
from scipy.integrate import quad

def fz(x, y):
    return quad( lambda z:1, 0, np.sqrt(x**2+y**2) )[0]

def fy(x):
    return quad( fz, 0, np.sqrt(1-x**2), args=(x, ) )[0]

def fx():
    return quad( fy, 0, 1 )[0]

fx()
>>> 0.5235987755981053

4/3*np.pi/8
>>> 0.5235987755982988
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 scipy.integrate.quad 执行 3D 积分 的相关文章

随机推荐

  • Kivy - 通过 id 删除小部件

    我有以下代码 from kivy app import App from kivy uix floatlayout import FloatLayout class GUI FloatLayout def remove self self
  • 导入错误:没有名为plotly.plotly的模块

    我正在处理项目并收到此错误 导入错误 没有名为plotly plotly的模块 I tried pip 情节安装 pip install plotly 升级 But import plotly plotly as py没用 不知道pyzo
  • 一次将 100 个文本文件导入 Excel

    我有这个宏可以在 Excel 电子表格中批量导入同一文件夹中包含的 100 多个 txt 文件 Sub QueryImportText Dim sPath As String sName As String Dim i As Long qt
  • FileUpload1.HasFile 为 False

    我尝试在网上搜索这个问题 发现大家都在询问UpdatePanel内的FileUpload控件的问题 首先 我没有使用 UpdatePanel 下面是我的代码 HTML
  • ImportError:运行从 pyinstaller 获取的可执行文件时没有名为 Geometry 的模块

    Traceback most recent call last File
  • odoo 中的 Many2one 字段的域过滤器?

    下面的代码是资产继承类 这里我要补充一下 place 场与 卡恩 邦 肯杰里 and 卡恩 邦 马勒什瓦拉姆 对于 Karn Bang Kengeri 将添加带有 A 和 B 的 asset catg id 然后对于 karn bang m
  • MySQL GROUP 和 COUNT 多个表

    我有一个由 3 部分组成的问题 这给我带来了麻烦 如果我查询 1 个表 我知道如何让表正常工作 一次但我似乎不知道如何将两者结合起来tags and more tags表以获得相同的结果 下面列出了我遇到的 3 个主要问题 问题1 我希望能
  • 如果React.js是MVC中的V,那么其他字母是什么?

    我正在学习 React 但我仍然不确定如何将其发展为成熟的应用程序 对于 M 和 C 哪些框架很适合使用 如果我想发挥功能怎么办 我应该只使用 jQuery 吗 路由 Ajax 以及许多框架为我们提供的其他功能怎么样 你实际上可以简单地去F
  • 为什么我不能在另一个函数中定义一个函数?

    这不是 lambda 函数问题 我知道我可以将 lambda 分配给变量 允许我们在代码中声明但不定义函数有什么意义 例如 include
  • Rails db:迁移关系不存在

    我有这样的模型 学生 class Student lt ActiveRecord Base has many participations dependent destroy has many subject item notes depe
  • setbuf() 会影响 cout 吗?

    我的老师再次无法回答我的问题 我知道谁能够 所以 我从来没有真正学过 C 在 C 中 显然我一直都会使用 cout 语句 在最近的一次作业中 我的老师告诉我们要确保 setbuf stdout NULL 在 main 的顶部以获得无缓冲的输
  • 如何获取属性文件的路径并在运行时将其传递给 bean

    我有一个由 Spring 创建的 bean 实际的类驻留在与 Spring 不同的 JAR 中 该 bean 传递一个路径作为构造函数参数 但是 我很难检索文件的句柄 该文件位于 WEB INF classes 中 我尝试过基于 WEB I
  • Unix“查找”命令用法

    这是一个 bash 安装脚本 脚本 foo sh 将 DIRECTORY 作为参数 说 有一个目录 lt HOME gt TEST TEST 1A TEST 2A TEST 3和另一个目录 lt HOME gt TEST TEST 1B T
  • PostgreSQL 或 MySQL 中的默认选择顺序是什么?

    我在 PostgreSQL 文档中读到 如果没有 ORDER 语句 SELECT 将以未指定的顺序返回记录 最近在一次采访中 有人问我如何按照插入的顺序 SELECT 记录 而无需 PK 或created at 或其他可用于排序的字段 采访
  • Boost Spirit x3 示例计算器(calc8、calc9)链接器错误

    我对提升精神 以及提升 非常陌生 它非常有趣的图书馆 我使用 qtcreator MinGW 5 3 我只是添加每个源文件git hub calc8进入新项目并添加一些 boost 库 但我在尝试构建时遇到以下错误 所有其他示例都工作正常
  • 如何去除Makefile中的重复项?

    有没有办法简化 Makefile 中的这种重复 duo node modules bin duo build lib background build lib page build lib popup build lib backgroun
  • 如何将文件复制到另一个路径?

    我需要将文件复制到另一个路径 将原始文件保留在原来的位置 我还希望能够重命名该文件 FileInfo 的 CopyTo 方法有效吗 看一下文件 复制 使用 File Copy 您可以将新文件名指定为目标字符串的一部分 所以像 File Co
  • 开发 gem 时如何使用“调试器”和“撬动”? (红宝石)

    我正在开发一个 gem 我的 Gemfile 如下所示 source rubygems gemspec group development test do gem pry gem debugger gem rake end 但是 我不希望人
  • 词典应用程序[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想开发一个需要英语单词词典的iPhone应用程序 你们能给我建议任何链接吗 我可以从那里获得包含合理数量的英语单词及其含义和例句的数据库 提前致谢
  • 使用 scipy.integrate.quad 执行 3D 积分

    提出问题的动机 我正在尝试在所有空间上积分函数 f x y z 我尝试使用 scipy integrate tplquad 和 scipy integrate nquad 进行积分 但这两种方法都将积分返回为 0 当积分应该是有限的时 这是