版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上高斯勒让德积分公式摘要:高斯勒让德积分公式可以用较少节点数得到高精度的计算结果,是现在现实生活中经常运用到的数值积分法。然而,当积分区间较大时,积分精度并不理想。The adva ntage of Gauss-Legendre integral formula is tend to get high-precision calculational result by using fewer Gauss-points, real life is now often applied numerical integration method. But the precisi
2、on is not good when the length of integral interval is longer.关键字: 积分计算,积分公式,高斯勒让德积分公式,MATLABKeyword:Integral Calculation , Integral formula ,Gauss-Legendre integral formula, Matlab引言:众所周知,的两大部分是微分与积分。微分实际上是求一函数的,而积分是已知一函数的导数,求这一函数。所以,微分与积分互为逆运算。实际上,积分还可以分为两部分。第一种,是单纯的积分,也就是已知导数求原函数,称为不定积分。相对而言,另一种就
3、是定积分了,之所以称其为定积分,是因为它积分后得出的值是确定的,是一个数,而不是一个函数。计算定积分的方法很多,而高斯勒让德公式就是其中之一。高斯积分法是精度最高的插值型数值积分,具有2n+1阶精度,并且高斯积分总是稳定。而高斯求积系数,可以由Lagrange多项式插值系数进行积分得到。高斯勒让德求积公式是构造高精度差值积分的最好方法之一。他是通过让节点和积分系数待定让函数f(x)以此取i=0,1,2.n次多项式使其尽可能多的能够精确成立来求出积分节点和积分系数。高斯积分的代数精度是2n-1,而且是最高的。通常运用的是(-1,1)的积分节点和积分系数,其他积分域是通过变换x=(b-a)t/2&
4、#160; +(a+b)/2 变换到-1到1之间积分。1. 现有的方法和理论1.1高斯 勒让德求积公式在高斯求积公式(4.5.1)中,若取权函数,区间为,则得公式 我们知道勒让德多项式是区间上的正交多项式,因此,勒让德多项式的零点就是求积公式(上式)的高斯点形如(上式)的高斯公式特别地称为高斯勒让德求积公式若取的零点做节点构造求积公式令它对准确成立,即可定出这样构造出的一点高斯勒让德求积公式是中矩形公式再取的两个零点构造求积公式令它对都准确成立,有由此解出,从而得到两点高斯勒让德求积公式三点高斯勒让德求积公式的形式是如表列出高斯勒让德求积公式的节点和系数00.2.10.1.20.0
5、.0.0.30.0.0.0.40.0.0.0.0.0.公式(4.5.9)的余项由(4.5.8)得,这里是最高项系数为的勒让德多项式,由(3.2.6)及(3.2.7)得 当时,有它比辛普森公式余项还小,且比辛普森公式少算一个函数值当积分区间不是,而是一般的区间时,只要做变换可将化为,这时 对等式右端的积分即可使用高斯勒让德求积公式1.2复化Gauss-Legendre求积公式将被积区间m等分, 记, 作变换在每个小区间上应用Gauss-Legendre公式, 累加即得复化Gauss-Legendre求积公式不妨设则有:Gauss点个数时,Gauss点个数时,总结复化Gauss-Legendre求
6、积过程如下:1. 分割区间, 记录区间端点值;2. 通过查表或求解非线性方程组, 在所有小区间上, 将Gauss系数和Gauss点的值代入变量替换后的公式;3. 将所有区间的结果累加, 即得到整个区间上的积分近似值.针对Gauss点个数和的复化Gauss-Legendre求积公式编写的一个简单的MATLAB函数 compgauss() 如下: function = compgauss(a, b, n)% Composite Gauss Integration% Equation Type: n=2, n=3% Coded by Nan.Xiao 2010-05-25% Step.1 Divid
7、e Interval% Step.2 Calculate% Step.3 Sum Resultsformat longf = (x) exp(x).*sin(x);h=(b-a)/n;xk=zeros(n+1,1);xk(1,1)=a;xk(n+1,1)=b;fk1=zeros(n,1);fk2=zeros(n,1);for i=1:n-1 xk(i+1,1)=a+h*i;endfor j=1:n fk1(j)=f(xk(j)+xk(j+1)/2+(h/2)*(-1/sqrt(3)+. f(xk(j)+xk(j+1)/2+(h/2)*(1/sqrt(3);endfor r=1:n fk2(r)
8、=(5/9)*f(xk(r)+xk(r+1)/2+(h/2)*(-sqrt(15)/5)+. (8/9)*f(xk(r)+xk(r+1)/2+(h/2)*(0)+. (5/9)*f(xk(r)+xk(r+1)/2+(h/2)*(sqrt(15)/5);endmysum1=h*sum(fk1)/2;mysum2=h*sum(fk2)/2;disp('Result of 2 Nodes:')disp(mysum1);disp('Result of 3 Nodes:')disp(mysum2);end1.3龙贝格,三点,五点以及变步长高斯勒让德求积法以下是关于龙贝格,
9、三点,五点以及变步长高斯勒让德之间精度的相互比较#include <iostream.h> #include <math.h> #include <iomanip.h> #define Precision1 0.1 # define e 2. #define MAXRepeat 10 double function
10、60;(double x) double s; s=1/x; return s; double Romberg(double a,double b,double f(double x) int m,n,k; double yMAXRepeat,h,ep,p,xk,s,q; h=b-a; y0=h*(f(a)+f(b)/2.0;/计算T1(h)=1/2(b-a)(f(a)+f(b); m=1; n=1; ep=Pr
11、ecision1+1; while(ep>=Precision1)&&(m<MAXRepeat) p=0.0; for(k=0;k<n;k+) xk=a+(k+0.5)*h; p=p+f(xk); p=(y0+h*p)/2.0; /Tm(h/2),变步长梯形求积公式
12、;s=1.0; for(k=1;k<=m;k+) s=4.0*s;/ pow(4,m) q=(s*p-yk-1)/(s-1.0); yk-1=p; p=q; ep=fabs(q-ym-1); m=m+1; ym-1=q; n=n+n; / 2 4 8 16 h=h/2.0;/二倍分割区间 re
13、turn q; double ThreePointGaussLegendre(double a,double b,double f(double x) double x,w; static double X3=-sqrt(15)/5.0,0,sqrt(15)/5.0; static double L3=5/9.0,8/9.0,5/9.0; w=0.0; for(int
14、 i=0;i<3;i+) x=(b-a)*Xi+(b+a)/2.0;
15、0; w=w+f(x)*Li; return w; double FivePointGaussLegendre(double a,double b,double f(double x) double x,w; stat
16、ic double X5=-0.,-0.,0,0.,0.; static double L5=0.,0.,0.,0.,0.; w=0.0; for(int i=0;i<5;i+) &
17、#160; x=(b-a)*Xi+(b+a)/2.0; w=w+f(x)*Li;/每一次小区间利用勒让德公式计算的结果
18、 return w; double FivePointPrecisionGaussLegendre(double a,double b,double f(double x) int m,i,j; double s,p,ep,h,aa,bb,w,x,g; static double X5=-0.,-0.,0,0.,0.; m=1; &
19、#160; h=b-a; s=fabs(0.001*h); p=1.0e+35; ep=Precision1+1; while(ep>=Precision1)&&(fabs(h)>s) g=0.0; for(i=0;i<
20、m;i+) aa=a+i*h; bb=aa+h; w=0.0;
21、0; for(j=0;j<=4;j+) x=(bb-aa)*Xj+(bb+aa)/2.0;
22、 w=w+f(x)*Lj; g=g+w;/各个区间计算结果之和相加 &
23、#160; g=g*h/2.0; ep=fabs(g-p)/(1.0+fabs(g);/计算精度 p=g; m=m+1;
24、 h=(b-a)/m;/分割区间 return g; main() double a,b,s; cout<<"请输入积分下限:" cin>>a;
25、60; cout<<"请输入积分上限:" cin>>b; cout<<"的真值为:"<<endl; cout<<"1."<<endl; /*龙贝格求积*/ s=Romberg( a, b
26、, function); cout<<"龙贝格求积公式:"<<endl; cout<<setiosflags(ios:fixed)<<setprecision(14)<<s<<endl; /*三点求积公式*/ s=ThreePointGaussLegendre( a, b,
27、function); cout<<"三点求积公式:"<<endl; cout<<setiosflags(ios:fixed)<<setprecision(14)<<s<<endl; /*五点求积公式*/ s=FivePointGaussLegendre( a, b, function)
28、; cout<<"五点求积公式"<<endl; cout<<setiosflags(ios:fixed)<<setprecision(14)<<s<<endl; s=FivePointPrecisionGaussLegendre(a, b,function); cout<<&quo
29、t;控制精度五点求积公式"<<endl; cout<<setiosflags(ios:fixed)<<setprecision(14)<<s<<endl; return 0; 2. 高斯勒让德求积的程序2.1三点高斯勒让德公式的代码function gl=f(str,a,b)x=zeros(3,1);y=zeros(3,1);x(1)=-sqrt(15)/5;x(2)=0;x(3)=sqrt(15)/5;for i=1:3 t=(b-a)/2*x(i)+(a+b)/2; y(i)=eval(str);%exp(t)*sin(t);%此处为求积的函数,t为自变量endgl=5/9*y(1)+8/9*y(2)+5/9*y(3);上面的代码保存为f.m文件,调用的时候如下f('t*2',-1,1)f('exp(t)*sin(t)',1,3)其中第一个参数为求积分的表达式,第二三个参数分别
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拎包入住指南
- 智研咨询发布-中国降脂药行业产业链全景分析及发展趋势预测报告
- 勘察设计方案、进度计划和保障措施
- 智研咨询发布-2025年中国锅炉及原动机制造行业市场竞争格局、行业政策及需求规模预测报告
- 排涝泵站建设进度控制方案
- 车站客运考试题库及答案
- 环保工程验收与交付标准方案
- 2026届广东省北京师范大学东莞石竹附属学校高二化学第一学期期中调研试题含解析
- 项目6任务6-1-1加密标书文件
- 2026届广东省颜锡祺中学高二化学第一学期期末学业水平测试试题含答案
- 注意缺陷多动障碍儿童社交技能培养方案
- 小学高级数学教师评审答辩资料范本
- 市政管道高压水射流清淤施工方案
- 江苏省苏州市阳光调研2025-2026学年高一上学期期中考试化学试题(含答案)
- 国防安全主题课件
- 肝癌实施监测预防策略
- 2025-2026学年第一学期浙江省宁波市余姚市六校期中联考七年级语文试卷(含答案)
- 2025广东广州市越秀区流花街招聘党建工作指导员1人笔试考试参考题库及答案解析
- 对越自卫反击战课件
- 淋巴水肿康复护理手册
- 教资考试论述题含答案
评论
0/150
提交评论