高斯—勒德积分公式
摘:
高斯—勒德积分公式较少节点数高精度计算结果现现实生活中常运数值积分法然积分区间较时积分精度理想
The adva ntage of GaussLegendre integral formula is tend to get highprecision calculational result by using fewer Gausspoints real life is now often applied numerical integration method But the precision is not good when the length of integral interval is longer
关键字:
积分计算积分公式高斯—勒德积分公式MATLAB
Keyword
Integral Calculation Integral formula GaussLegendre integral formula Matlab
引言:
众周知微积分两部分微分积分微分实际求函数导数积分已知函数导数求函数微分积分互逆运算
实际积分分两部分第种单纯积分已知导数求原函数称定积分
相言种定积分称定积分积分出值确定数函数
计算定积分方法高斯—勒德公式中
高斯积分法精度高插值型数值积分具2n+1阶精度高斯积分总稳定高斯求积系数Lagrange项式插值系数进行积分
高斯—勒德求积公式构造高精度差值积分方法通节点积分系数定函数f(x)取i012n次项式够精确成立求出积分节点积分系数高斯积分代数精度2n1高通常运(11)积分节点积分系数积分域通变换x(ba)t2 +(a+b)2 变换11间积分
1 现方法理
11高斯 勒德求积公式
高斯求积公式(451)中取权函数区间公式
知道勒德项式区间正交项式勒德项式零点求积公式(式)高斯点.形(式)高斯公式特称高斯-勒德求积公式.
取零点做节点构造求积公式
令准确成立定出.样构造出点高斯-勒德求积公式中矩形公式.取两零点构造求积公式
令准确成立
.
解出两点高斯-勒德求积公式
.
三点高斯-勒德求积公式形式
.
表列出高斯-勒德求积公式节点系数.
0
00000000
20000000
1
05773503
10000000
2
07745967
00000000
05555556
08888889
3
08611363
03399810
03478548
06521452
4
09061798
05384693
00000000
02369269
04786287
05688889
公式(459)余项(458)
里高项系数1勒德项式(326)(327)
.
时
.
辛普森公式余项辛普森公式少算函数值.
积分区间[-11]般区间时做变换
化[-11]时
.
等式右端积分高斯-勒德求积公式.
12复化GaussLegendre求积公式
积区间m等分 记 作变换
区间应GaussLegendre公式 累加复化GaussLegendre求积公式
妨设
Gauss点数时
Gauss点数时
总结复化GaussLegendre求积程
1 分割区间 记录区间端点值
2 通查表求解非线性方程组 区间 Gauss系数Gauss点值代入变量换公式
3 区间结果累加 整区间积分似值
针Gauss点数复化GaussLegendre求积公式编写简单MATLAB函数 compgauss()
function [ ] compgauss(a b n)
Composite Gauss Integration
Equation Type n2 n3
Coded by NanXiao 20100525
Step1 Divide Interval
Step2 Calculate
Step3 Sum Results
format long
f @(x) exp(x)*sin(x)
h(ba)n
xkzeros(n+11)
xk(11)a
xk(n+11)b
fk1zeros(n1)
fk2zeros(n1)
for i1n1
xk(i+11)a+h*i
end
for j1n
fk1(j)f((xk(j)+xk(j+1))2+(h2)*(1sqrt(3)))+
f((xk(j)+xk(j+1))2+(h2)*(1sqrt(3)))
end
for r1n
fk2(r)(59)*f((xk(r)+xk(r+1))2+(h2)*(sqrt(15)5))+
(89)*f((xk(r)+xk(r+1))2+(h2)*(0))+
(59)*f((xk(r)+xk(r+1))2+(h2)*(sqrt(15)5))
end
mysum1h*sum(fk1)2
mysum2h*sum(fk2)2
disp('Result of 2 Nodes')
disp(mysum1)
disp('Result of 3 Nodes')
disp(mysum2)
end
13龙贝格三点五点变步长高斯勒德求积法
关龙贝格三点五点变步长高斯勒德间精度相互较
#include
#include
#include
#define Precision1 0000000000001
# define e 271828183
#define MAXRepeat 10
double function (double x)
{
double s
s1x
return s
}
double Romberg(double adouble bdouble f(double x))
{
int mnk
double y[MAXRepeat]heppxksq
hba
y[0]h*(f(a)+f(b))20计算T`1`(h)12(ba)(f(a)+f(b))
m1
n1
epPrecision1+1
while((ep>Precision1)&&(m
p00
for(k0k
xka+(k+05)*h
pp+f(xk)
}
p(y[0]+h*p)20 T`m`(h2)变步长梯形求积公式
s10
for(k1k
s40*s pow(4m)
q(s*py[k1])(s10)
y[k1]p
pq
}
epfabs(qy[m1])
mm+1
y[m1]q
nn+n 2 4 8 16
hh20二倍分割区间
return q
}
double ThreePointGaussLegendre(double adouble bdouble f(double x))
{
double xw
static double X[3]{sqrt(15)500sqrt(15)50}
static double L[3]{590890590}
w00
for(int i0i<3i++)
{
x((ba)*X[i]+(b+a))20
ww+f(x)*L[i]
}
return w
}
double FivePointGaussLegendre(double adouble bdouble f(double x))
{
double xw
static double X[5]{090617984590538469310100538469310109061798459}
static double L[5]{0236926885104786286705056888888890478628670502369268851}
w00
for(int i0i<5i++)
{
x((ba)*X[i]+(b+a))20
ww+f(x)*L[i]次区间利勒德公式计算结果
}
return w
}
double FivePointPrecisionGaussLegendre(double adouble bdouble f(double x))
{
int mij
double spephaabbwxg
static double X[5]{090617984590538469310100538469310109061798459}
m1
hba
sfabs(0001*h)
p10e+35
epPrecision1+1
while((ep>Precision1)&&(fabs(h)>s))
{
g00
for(i0i
aaa+i*h
bbaa+h
w00
for(j0j<4j++)
{
x((bbaa)*X[j]+(bb+aa))20
ww+f(x)*L[j]
}
gg+w区间计算结果相加
}
gg*h20
epfabs(gp)(10+fabs(g))计算精度
pg
mm+1
h(ba)m分割区间
}
return g
}
main()
{
double abs
cout<<请输入积分限
cin>>a
cout<<请输入积分限
cin>>b
cout<<㏑真值<
sRomberg( a b function)
cout<<龙贝格求积公式<
*三点求积公式*
sThreePointGaussLegendre( a b function)
cout<<三点求积公式<
*五点求积公式*
sFivePointGaussLegendre( a b function)
cout<<五点求积公式<
cout<<控制精度五点求积公式<
}
2 高斯-勒德求积程序
21三点高斯勒德公式代码
function glf(strab)
xzeros(31)
yzeros(31)
x(1)sqrt(15)5
x(2)0
x(3)sqrt(15)5
for i13
t(ba)2*x(i)+(a+b)2
y(i)eval(str)exp(t)*sin(t)处求积函数t变量
end
gl59*y(1)+89*y(2)+59*y(3)
面代码保存fm文件调时候
f('t*2'11)
f('exp(t)*sin(t)'13)
中第参数求积分表达式第二三参数分
积分限
22高斯勒德数值积分Matlab代码
function [qlAkxk]guasslegendre(funabntol)
if nargin1
a1b1n7tol1e8
elseif nargin3
n7tol1e8
elseif nargin4
tol1e8
elseif nargin2|nargin>5
error('The Number of Input Arguments Is Wrong')
end
syms x
psym2poly(diff((x^21)^(n+1)n+1))(2^n*factorial(n))
tkroots(p)
Akzeros(n+11)
for i1n+1
xkttk
xkt(i)[]
pnpoly(xkt)
fp@(x)polyval(pnx)polyval(pntk(i))
Ak(i)quadl(fp11tol) 求积系数
end
xk(ba)2*tk+(b+a)2
funfcnchk(fun'vectorize')
fxfun(xk)*(ba)2
qlsum(Ak*fx)
3数值实验
31 4点(n3)高斯——勒德求积公式计算
解:
先区间化(1)
(1)
根表47中n3节点系数值求
( 准确值 )
32高斯勒德公式计算积分
解:
令
高斯—勒德公式计算积分
高斯—勒德公式计算积分
32四节点高斯―勒德求积公式计算定积分计算程保留4位数.
解 :
高斯-勒德求积公式求积分区间[-11]积分问题.需作变换令
x1时u1x0时u-1.
=
=
3 总结
高斯―勒德求积公式定积分计算拥高精度特点存积分区间[11]区间变会导致精度降低寻找精度更高加速更快算法必
参考文献
[1]数值计算 张军林瑛钟竞辉 清华学出版社 2008 6 17
[2]数值分析 陈晓江黄樟灿· 科学出版社 2010 7 10
[3]数值分析原理吴勃英 科学出版社 2009 7 23
[4] 复化两点GaussLegendre求积公式外推算法 桂林航天工业高等专科学校学报2007年03期
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档