高斯-勒让德积分求解函数积分

  • 前言
  • 高斯-勒让德积分
  • 一般积分区间的归一化
  • Exponential Integral
  • 实验
  • 参考

前言

梯度和辛普森是经典的几何求积分方法,简单易懂,那如果要更加高档(复杂难懂)的求积分方法找哪家了?高斯-勒让德积分当仁不让。举例来说,下面这个公式看着很高档,但真的要用C来实现还真的有些令人头痛。
A=12∫v∞e−ttdt\begin{aligned} A=\frac{1}{2}\int_{v}^{\infty}\frac{e^{-t}}{t} {\rm d}t \end{aligned} A=21​∫v∞​te−t​dt​

高斯-勒让德积分

关于勒让德复杂的表征方法暂时不想多做分析学习,暂且记住勒让德多项式Pl(x),l∈(0,1,...)P_l(x),l\in(0,1,...)Pl​(x),l∈(0,1,...)为本征函数族,正交和完备性可以令其作为广义傅里叶级数的基,即假设函数f(x)f(x)f(x)定义在区间(−1,1)(-1,1)(−1,1)上,则:f(x)=∑l=0∞flPl(x)f(x)=\sum_{l=0}^{\infty}f_lP_l(x) f(x)=l=0∑∞​fl​Pl​(x)系数flf_lfl​为fl=2l+12∫−11f(x)Pl(x)dxf_l=\frac{2l+1}{2}\int_{-1}^{1}f(x)P_l(x)dx fl​=22l+1​∫−11​f(x)Pl​(x)dx
而勒让德多项式的微分表征:Pn(x)=12nn!dndxn(x2−1)nP_n(x)=\frac{1}{2^nn!}\frac{d^n}{dx^n}(x^2-1)^n Pn​(x)=2nn!1​dxndn​(x2−1)n
看着有点晕,如果展开不同阶数nnn的多项式,可能会直观一些【5】

另外【5】还将5阶的多项式画在同一个图上,虽然看不懂,但也挺震撼。


高斯积分(Gaussion Quadrature)公式如下:
∫−11f(x)dx≈∑i=1nwif(xi)\int_{-1}^{1}f(x)dx \approx \sum_{i=1}^n w_if(x_i)∫−11​f(x)dx≈i=1∑n​wi​f(xi​)
即选择一定的插值点和插值权重去逼近积分值。高斯勒让德给出的权重值为【7】
wi=2(1−x2)[Pn′(xi)]2w_i=\frac{2}{(1-x^2)[P_n^\prime(x_i)]^2}wi​=(1−x2)[Pn′​(xi​)]22​
而对应的插值点和低阶权重值已经被算好,可以直接拿来用。

一般积分区间的归一化

翻译一下wiki的公式:
∫abf(x)dx=∫−11f(b−a2ξ+a+b2)dxdξdξ≈b−a2∑i=1nwif(b−a2ξ+a+b2),dxdξ=b−a2\int_a^bf(x)dx = \int_{-1}^{1}f(\frac{b-a}{2}\xi+\frac{a+b}{2})\frac{dx}{d\xi}d\xi\\ \approx\frac{b-a}{2}\sum_{i=1}^nw_if(\frac{b-a}{2}\xi+\frac{a+b}{2}),\ \frac{dx}{d\xi}=\frac{b-a}{2} ∫ab​f(x)dx=∫−11​f(2b−a​ξ+2a+b​)dξdx​dξ≈2b−a​i=1∑n​wi​f(2b−a​ξ+2a+b​), dξdx​=2b−a​

Exponential Integral

文章开头的指数积分,也有比较成熟的计算方法:E1(z)=∫z∞e−ttdt=−γ−lnz−∑k=1∞(−z)kkk!E_1(z)=\int_z^\infty\frac{e^{-t}}{t}dt=-\gamma-ln\ z-\sum_{k=1}^\infty\frac{(-z)^k}{kk!}E1​(z)=∫z∞​te−t​dt=−γ−ln z−k=1∑∞​kk!(−z)k​
更通用的表达,定义Ein(z)=∫0z(1−e−t)dtt=∑k=1∞(−1)k+1zkkk!Ein(z)=\int_0^z(1-e^{-t})\frac{dt}{t}=\sum_{k=1}^{\infty}\frac{(-1)^{k+1}z^k}{kk!} Ein(z)=∫0z​(1−e−t)tdt​=k=1∑∞​kk!(−1)k+1zk​
那么E1(z)=−γ−lnz+Ein(z)E_1(z)=-\gamma-ln\ z+Ein(z)E1​(z)=−γ−ln z+Ein(z)
第一个参数叫做欧拉常数,从wiki上抄写推导:γ=lim⁡n→∞(−logn+∑k=1n1k)≈0.577215664901532860606512\gamma=\lim_{n \to \infty}(-log\ n +\sum_{k=1}^n\frac{1}{k})\approx0.577215664901532860606512 γ=n→∞lim​(−log n+k=1∑n​k1​)≈0.577215664901532860606512

实验

最后用【10】里提供的算法,计算−E1(z)-E_1(z)−E1​(z)的几个积分值:

x=0.05    Ei(x)=-2.4678985
x=0.25    Ei(x)=-1.0442826
x=0.45    Ei(x)=-0.6253313
x=0.65    Ei(x)=-0.4115170
x=0.85    Ei(x)=-0.2840193
x=1.05    Ei(x)=-0.2018728
x=1.25    Ei(x)=-0.1464134
x=1.45    Ei(x)=-0.1077774
x=1.65    Ei(x)=-0.0802476
x=1.85    Ei(x)=-0.0602950

利用python的scipy.specials 库exp1计算的E1(z)E_1(z)E1​(z)对应值:

>>> exp1(0.05)   2.467898488509974
>>> exp1(0.25)   1.0442826344437384
>>> exp1(0.45)   0.6253313163232692
>>> exp1(0.65)   0.41151697594947967
>>> exp1(0.85)   0.28401926850246173
>>> exp1(1.05)   0.2018728132201966
>>> exp1(1.25)   0.14641337252591016
>>> exp1(1.45)   0.10777743986897659
>>> exp1(1.65)   0.08024762667334323
>>> exp1(1.85)   0.06029496682837346

参考

1.勒让德多项式及性质
2.高斯-勒让德数值积分公式
3.高斯-勒让德求积公式及Matlab实现
4.高斯积分
5.Legendre polynomials from wikipedia
6.6.2(i) Exponential and Logarithmic Integrals
7.Legendre-Gauss Quadrature
8.Exponential Integral from mathworld
9.Exponential integral from wikepedia
10.常用算法程序集(C语言描述)第三版

高斯-勒让德积分学习相关推荐

  1. GSL科学计算库——计算高斯-勒让德积分

    相关文章: Windows系统Qt5配置GSL科学计算库 Windows系统下Cygwin+Dev C ++ 配置GSL科学计算库 假设计算下列积分: ∫0πexcos(x)dx\int_0^\pi ...

  2. 高斯-勒让德积分——MATLABPython混合实现

    高斯-勒让德积分 前言 一种很NB的数值积分.原理我们就不多说了,这里只介绍怎么直接拿来用. 核心问题是如何获取系数表. 参数介绍 对于函数 f(x),积分区间为 a 到 b,求在这一区间上的定积分. ...

  3. MATLAB高斯-勒让德积分求解

    MATLAB高斯-勒让德积分求解 积分函数 function [ y ] = CalcuFunctionValue( x ) y=exp(-x^2);%积分函数 end 求积分算法函数 functio ...

  4. 高斯-勒让德积分中不同阶数下最大高斯节点间距的关系

    高斯-勒让德计算方法的高斯节点是勒让德多项式的根值,很多教材都把常用的根值和其对应的加权系数表示在如下的表格(P403 SEC. 7.5 GAUSS-LEGENDRE INTEGRATION (OPT ...

  5. 数据积分-牛顿科茨法与高斯勒让德法对比及示例

    在结点xi上插值f的次数最多是n次的多项式 p(x)=∑f(xi)li(x) 拉格朗日插值多项式: li(x)= ∏(x-xj)/(xi-xj) 基于插值的数值积分: ∫f(x)dx≈∫p(x)dx= ...

  6. 高斯勒让德(Gauss-legendre)求解多重积分(python,数值积分)

    第四十四篇 高斯勒让德求解多重积分 多重积分 在工程分析中,经常需要在一个面积或体积上对函数进行积分.多重积分的解析方法在有限的情况下是可能的,但在这一篇中使用数值积分去求解.一维的函数积分详见重复牛 ...

  7. 重复高斯勒让德法则(gauss-legendre)求积分(python,数值积分)

    第四十一篇 高斯勒让德法则 牛顿-科特斯法则很方便使用,因为样本点在积分范围内均匀分布,而且权重系数很容易记住(至少到辛普森法则).详情可见重复牛顿-科特斯法则 高斯法则采取样本点在积分范围内的最佳间 ...

  8. 高斯勒让德求积公式matlab通用程序,数值分析——Gauss-Legendre 求积分(Matlab实现)...

    2020 4.4 题目:编写Gauss求积法计算积分的程序(Gauss点数取1,2,3,4,5即可)并用于计算积分 ∫10sinxxdx∫01sin⁡xxdx\int_{0}^{1} \frac{\s ...

  9. 高斯-勒让德求积分的Python程序

    理论知识: 勒让德多项式及性质 第四节 高斯(Gauss)求积公式 高斯-勒让德求积公式及Matlab实现 目标函数求积区间为[-1,1]时 代码: #高斯-勒让德求积公式 from sympy im ...

  10. matlab中求积函数,MATLAB软件及高斯勒让德求积公式MATLAB软件及高斯勒让德求积公式.doc...

    MATLAB软件及高斯勒让德求积公式MATLAB软件及高斯勒让德求积公式 数 值 分 析 课 程 实 验 报 告 2012-2013学年度 第二学期 系别:数学与计算机科学学院 实验课程数值分析班 级 ...

最新文章

  1. 阿里 mysql 架构_阿里java架构教你怎么用mysql怒怼面试官
  2. 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )
  3. 【Python】青少年蓝桥杯_每日一题_12.11_开关灯问题
  4. flash as3 android air 插入视频,FLASH加载外部影片as3代码
  5. mysql select带字段名_关于Select * 与Select 字段名 的问题!
  6. Docker中的libcontainer架构图
  7. map和foreach的区别和应用场景_说说session和cookie区别与主要应用场景,localStorage的特点...
  8. python threading.Timer
  9. python web开发实录
  10. 诸葛io的技术架构图_阿里P8总结三面四轮技术面试:Tomcat+Redis+线程池锁+悲观锁+NIO...
  11. 以下关于java文件名的叙述正确的有_sun java认证考试题库
  12. CorelDRAWX4的VBA插件开发(十一)弹窗界面和一键导出图片
  13. 如何用代码模拟自由落体
  14. 用python自动制作ppt第二讲——插入文字的两种方法和追加文字
  15. eclipse下改变 匹配标签和匹配括号的颜色
  16. 图解HTTP(读书笔记01)
  17. 爬虫120例之第17例,用Python面向对象的思路,采集各种精彩句子
  18. 网易互娱耗时最长的活动
  19. OSG 高效渲染 之 多线程模型与渲染
  20. 如何在未越狱iOS设备上安装IPA

热门文章

  1. 根号n向下取整的c语言编程,【向上取整/向下取整】C语言向上或向下取整 函数...
  2. 桌面客户端上登入Gmai 邮箱
  3. fclose用法matlab,fclose和close之间的区别
  4. Overleaf 中文硕博论文LaTex模板
  5. Spyder使用教程
  6. linux scsi程序,Linux scsi设备读写流程
  7. 计算机英语知识竞赛题库,大学生计算机基础知识竞赛题库_大学生计算机基础知识竞赛试题附答案...
  8. 资深黑客谈:安全趋势正在向应用层发展
  9. Spring中的工厂模式
  10. c#读取mysql返回的值类型_C#中Mysql读取字段值