Several families of methods exist for numeric quadrature. If I have a specific class of integrands how do I select the ideal method?

What are the relevant questions to ask both about the integrand (e.g. is it smooth? does it have singularities?) and the computational problem (e.g. error tolerance, computational budget)?

How do answers to these questions rule out or promote the various families of methods? For simplicity lets consider just single or low-dimensional integrals.

For example the Wikipedia article on QUADPACK states that the fairly general QAGS routine “uses global adaptive quadrature based on 21-point Gauss–Kronrod quadrature within each subinterval, with acceleration by Peter Wynn’s epsilon algorithm

How was this decision made? How can one make similar decisions when more is known?

<------------------------------------------------->
First of all, you need to ask yourself the question if you need an all-round quadrature routine that should take an integrand as a black box. If so, you cannot but go for adaptive quadrature where you hope that the adaptivity will catch “difficult” spots in the integrand. And that is one of the reasons Piessens et al. chose for a Gauss-Kronrod rule (this type of rule allows you to calculate an approximation of the integral and an estimate of the approximation error using the same function evaluations) of modest order applied in an adaptive scheme (with subdivision of the interval with the highest error) until the required tolerances are reached. The Wynn-epsilon algorithm allows to provide convergence acceleration and typically helps in the cases where there are end-point singularities.

But if you do know the “form” or “type” of your integrand, you can tailor your method to what you need so the computational cost is limited for the accuracy you need. So what you need to look at:

Integrand:

  • Smoothness: can it be approximated (well) by a polynomial from an orthogonal polynomial family (if so, Gaussian quadrature will do well)
  • Singularities: can the integral be split in integrals with only end-point-singularities (if so, the IMT-rule or double exponential quadrature will be good on each sub-interval)
  • Computational cost for evaluation?
  • Can the integrand be computed? Or is only limited point-wise data available?
  • Highly oscillatory integrand: look for Levin-type methods.

When dealing with singularities, one typically prefers them to be at the end-point of the integrals (see IMT, double exponential). If this is not the case, one can resort to Clenshaw-Curtis integration where you capture the singularities in the weight-function. One typically defines forms of singularities like ∣x−c∣−α|x-c|^{-\alpha}∣x−c∣−α and establishes expressions for the weights of the quadrature as a function of ccc and α\alphaα.

Integration interval: finite, semi-infinite or infinite. In case of semi-infinite or infinite intervals, can they be reduced to a finite interval by a variable transformation? If not, Laguerre or Hermite polynomials can be used in the Gaussian quadrature approach.

I don’t have a reference for a real flow sheet for quadrature in general, but the QUADPACK book (not the Netlib manpages, but the real book) has a flow sheet to select the appropriate routine based on the integral you want to evaluate. The book also describes the choices in algorithms made by Piessens et al. for the different routines.

For low-dimensional integrals, one typically goes for nested one-dimensional quadrature. In the special case of two-dimensional integrals (cubature), there exist integration rules for different cases of integration domains. R. Cools has collected a large number of rules in his [Encyclopedia of cubature formulas][1] and is the main author of the [Cubpack][2] package. For high dimensional integrals, one typically resorts to Monte Carlo type methods. However, one needs typically a very large number of integrand evaluations to get reasonable accuracy. For low-dimensional integrals, approximation methods like quadrature/cubature/nested quadrature often out-perform these stochastic methods.

General interesting references:

  1. Quadpack, Piessens, Robert; de Doncker-Kapenga, Elise; Überhuber, Christoph W.; Kahaner, David (1983). QUADPACK: A subroutine package for automatic integration. Springer-Verlag. ISBN 978-3-540-12553-2
  2. Methods of Numerical Integration: Second Edition, Ph. Davis and Ph. Rabinowitz, 2007, Dover Books on Mathematics, ISBN 978-0486453392
    [1]:http://nines.cs.kuleuven.be/ecf/
    [2]:http://nines.cs.kuleuven.be/software/CUBPACK/

见https://scicomp.stackexchange.com/questions/5689/method-selection-for-numeric-quadrature

Method selection for numeric quadrature相关推荐

  1. Individual Method Selection Survey rubric

    AEIOU https://www.thedesignexchange.org/design_methods/139 相关方法:9 Dimensions Framework, Ax4 Model, B ...

  2. 特征选择 回归_如何执行回归问题的特征选择

    特征选择 回归 1.简介 (1. Introduction) 什么是功能选择 ? (What is feature selection ?) Feature selection is the proc ...

  3. android 命名空间的使用

    1.自定义命名空间 在xml文件里 xmlns:名字="http://schemas.android.com/apk/res/包名" 在自定义控件里 名字:属性=" &q ...

  4. ICML 2019 Accepted Papers (Title, Author, Abstract, Code) (001-150)

    本博客致力于整理出ICML 2019接收的所有论文,包括题目.作者.摘要等重要信息,能够方便广大读者迅速找到自己领域相关的论文. 相关论文代码.附录可参考ICML 2019 #####1-10#### ...

  5. Revit 2015 API 的所有变化和新功能

    这里从SDK的文章中摘录出所有的API变化.主要是希望用户用搜索引擎时能找到相关信息: Major changes and renovations to the Revit API APIchange ...

  6. jython 调用java_Jython简介,第1部分:Java编程变得更容易

    关于本教程 本教程是关于什么的? 这个分为两部分的教程将向您介绍Jython脚本语言,并为您提供足够的知识以开始开发自己的基于Jython的应用程序. Jython是已与Java平台无缝集成的Pyth ...

  7. Android APIs (Class Index - Android SDK)(一)

    这些是Android API(API level: 19)类 类名 描述 A AbortableHttpRequest Interface representing an HTTP request t ...

  8. ControllerDescriptor的认识

    ControllerDescriptor类主要包含了对ASP.NET MVC中的Control的元数据的解析,在MVC的Model绑定以及数据处理过程中经常会遇到ControllerDescripto ...

  9. socks5协议RFC文档

    socks5协议RFC文档 « Xiaoxia[PG] socks5协议RFC文档 Network Working Group M. Leech Request for Comments: 1928 ...

最新文章

  1. python开发需要掌握哪些知识-Python基础学习需要掌握哪些知识
  2. 新书预告《网络规划设计师考试考点分析与真题详解》
  3. oracle导入时 ora39166,impdp ORA-39002,ORA-39166,ORA-39164的问题及解决
  4. 移位运算符优先级很低
  5. 【LeetCode】11. Container With Most Water 解题小结
  6. Tokenisation word segmentation sentence segmentation
  7. csv批量读取测试数据
  8. 算法复习周------“贪心问题之‘单源最短路径’”
  9. python selenium框架搭建_python + selenium 自动化框架搭建
  10. 神经网络系统辨识的特点,神经网络系统辨识程序
  11. 服务器网站被cc攻击,网站被CC攻击怎么办?宝塔防火墙防CC设置详解
  12. python ORM 模块peewee(三): Model的建立
  13. 车牌归属地 麦谈帮API数据接口
  14. SoX使用手册(中文版)
  15. 学习OpenCV(1)概述
  16. Understand 2.5使用指南(中文)
  17. 网络信息手机:web scrapper数据获取 、数据采集器、公众号信息收集
  18. 漫谈QNX(架构/进程,线程,同步,进程间通信IPC)
  19. 无人驾驶汽车横向控制模型
  20. 中移M5311模块MQTT协议连接阿里云物联网平台(干货)

热门文章

  1. js---javascript DOM
  2. java 代码实现日历表
  3. sshd: Corrupted MAC on input
  4. UART驱动程序设计
  5. Android5.1源码修改USB为串口UART
  6. c语言if函数多条件怎么输,excel中if函数怎么输入多个条件
  7. 记录一次@Accessors(chain = true) 引发的BeanUtils的反射问题
  8. PostGIS几何类型及常用函数
  9. Less系列之变量(Variables)
  10. 新版nonebot,go-cqhttp搭建qq机器人保姆级教程