【问题标题】:Integrate multivariable function with singularities using scipy.integrate.nquad使用 scipy.integrate.nquad 将多变量函数与奇点积分
【发布时间】:2020-09-13 11:32:38
【问题描述】:

我正在尝试集成功能

def func(x, y):
    return 1 / np.sqrt(x**2 + y**2)

x 和 y 都在 -1 和 1 之间,其数值解约为 7.05。

问题是 x=y=0 的分母是零,我不明白如何处理它。我一直在尝试integrate.nquad的选项点:

integrate.nquad(func, [[-1,1], [-1,1]], points = [[0],[0]])    

但这似乎不是正确的语法。我发现了许多使用选项点将一个变量函数与奇点集成的示例(我可以重现),但我不明白如何(以及是否可能)用多个变量的函数来概括这一点。不幸的是,看手册对我没有帮助......

【问题讨论】:

  • 我想解决这个问题的一种简单方法是定义你的函数,这样如果x, y 接近奇点,它就会返回 0。
  • 谢谢;是的,这确实是一个解决方案。我只是想知道是否有办法在 n>1 个变量中使用积分选项
  • 您是否尝试过设置opts=lambda x, y: {"points": ...} 或类似的设置?另见,直接源码:github.com/scipy/scipy/blob/master/scipy/integrate/quadpack.py
  • 我已经尝试过,但没有成功。目前我只是按照 Mateen 的建议将函数定义为当 x 接近 y 时为零。反正我会继续看的

标签: python scipy numerical-integration


【解决方案1】:

使用

nquad(func, [[-1, 1], [-1, 1]], opts=[{'points': [0,]}, {'points': [0,]}])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-07
    • 2018-07-11
    • 2016-06-24
    • 2016-11-05
    • 2021-04-18
    • 2019-08-04
    • 2020-04-14
    • 2016-05-09
    相关资源
    最近更新 更多