高斯-勒让德积分学习
高斯-勒让德积分求解函数积分
- 前言
- 高斯-勒让德积分
- 一般积分区间的归一化
- 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−tdt
高斯-勒让德积分
关于勒让德复杂的表征方法暂时不想多做分析学习,暂且记住勒让德多项式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∑∞flPl(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∫−11f(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!1dxndn(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)∫−11f(x)dx≈i=1∑nwif(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} ∫abf(x)dx=∫−11f(2b−aξ+2a+b)dξdxdξ≈2b−ai=1∑nwif(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−tdt=−γ−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上抄写推导:γ=limn→∞(−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∑nk1)≈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语言描述)第三版
高斯-勒让德积分学习相关推荐
- GSL科学计算库——计算高斯-勒让德积分
相关文章: Windows系统Qt5配置GSL科学计算库 Windows系统下Cygwin+Dev C ++ 配置GSL科学计算库 假设计算下列积分: ∫0πexcos(x)dx\int_0^\pi ...
- 高斯-勒让德积分——MATLABPython混合实现
高斯-勒让德积分 前言 一种很NB的数值积分.原理我们就不多说了,这里只介绍怎么直接拿来用. 核心问题是如何获取系数表. 参数介绍 对于函数 f(x),积分区间为 a 到 b,求在这一区间上的定积分. ...
- MATLAB高斯-勒让德积分求解
MATLAB高斯-勒让德积分求解 积分函数 function [ y ] = CalcuFunctionValue( x ) y=exp(-x^2);%积分函数 end 求积分算法函数 functio ...
- 高斯-勒让德积分中不同阶数下最大高斯节点间距的关系
高斯-勒让德计算方法的高斯节点是勒让德多项式的根值,很多教材都把常用的根值和其对应的加权系数表示在如下的表格(P403 SEC. 7.5 GAUSS-LEGENDRE INTEGRATION (OPT ...
- 数据积分-牛顿科茨法与高斯勒让德法对比及示例
在结点xi上插值f的次数最多是n次的多项式 p(x)=∑f(xi)li(x) 拉格朗日插值多项式: li(x)= ∏(x-xj)/(xi-xj) 基于插值的数值积分: ∫f(x)dx≈∫p(x)dx= ...
- 高斯勒让德(Gauss-legendre)求解多重积分(python,数值积分)
第四十四篇 高斯勒让德求解多重积分 多重积分 在工程分析中,经常需要在一个面积或体积上对函数进行积分.多重积分的解析方法在有限的情况下是可能的,但在这一篇中使用数值积分去求解.一维的函数积分详见重复牛 ...
- 重复高斯勒让德法则(gauss-legendre)求积分(python,数值积分)
第四十一篇 高斯勒让德法则 牛顿-科特斯法则很方便使用,因为样本点在积分范围内均匀分布,而且权重系数很容易记住(至少到辛普森法则).详情可见重复牛顿-科特斯法则 高斯法则采取样本点在积分范围内的最佳间 ...
- 高斯勒让德求积公式matlab通用程序,数值分析——Gauss-Legendre 求积分(Matlab实现)...
2020 4.4 题目:编写Gauss求积法计算积分的程序(Gauss点数取1,2,3,4,5即可)并用于计算积分 ∫10sinxxdx∫01sinxxdx\int_{0}^{1} \frac{\s ...
- 高斯-勒让德求积分的Python程序
理论知识: 勒让德多项式及性质 第四节 高斯(Gauss)求积公式 高斯-勒让德求积公式及Matlab实现 目标函数求积区间为[-1,1]时 代码: #高斯-勒让德求积公式 from sympy im ...
- matlab中求积函数,MATLAB软件及高斯勒让德求积公式MATLAB软件及高斯勒让德求积公式.doc...
MATLAB软件及高斯勒让德求积公式MATLAB软件及高斯勒让德求积公式 数 值 分 析 课 程 实 验 报 告 2012-2013学年度 第二学期 系别:数学与计算机科学学院 实验课程数值分析班 级 ...
最新文章
- 阿里 mysql 架构_阿里java架构教你怎么用mysql怒怼面试官
- 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )
- 【Python】青少年蓝桥杯_每日一题_12.11_开关灯问题
- flash as3 android air 插入视频,FLASH加载外部影片as3代码
- mysql select带字段名_关于Select * 与Select 字段名 的问题!
- Docker中的libcontainer架构图
- map和foreach的区别和应用场景_说说session和cookie区别与主要应用场景,localStorage的特点...
- python threading.Timer
- python web开发实录
- 诸葛io的技术架构图_阿里P8总结三面四轮技术面试:Tomcat+Redis+线程池锁+悲观锁+NIO...
- 以下关于java文件名的叙述正确的有_sun java认证考试题库
- CorelDRAWX4的VBA插件开发(十一)弹窗界面和一键导出图片
- 如何用代码模拟自由落体
- 用python自动制作ppt第二讲——插入文字的两种方法和追加文字
- eclipse下改变 匹配标签和匹配括号的颜色
- 图解HTTP(读书笔记01)
- 爬虫120例之第17例,用Python面向对象的思路,采集各种精彩句子
- 网易互娱耗时最长的活动
- OSG 高效渲染 之 多线程模型与渲染
- 如何在未越狱iOS设备上安装IPA
热门文章
- 根号n向下取整的c语言编程,【向上取整/向下取整】C语言向上或向下取整 函数...
- 桌面客户端上登入Gmai 邮箱
- fclose用法matlab,fclose和close之间的区别
- Overleaf 中文硕博论文LaTex模板
- Spyder使用教程
- linux scsi程序,Linux scsi设备读写流程
- 计算机英语知识竞赛题库,大学生计算机基础知识竞赛题库_大学生计算机基础知识竞赛试题附答案...
- 资深黑客谈:安全趋势正在向应用层发展
- Spring中的工厂模式
- c#读取mysql返回的值类型_C#中Mysql读取字段值