matlab数值分析程序--高等数学,数值代数的matlab实现-文字版, matlab电子书, 和matlab 有关的电子书:

9.6.2 在上的高斯-勒让德积分及其MATLAB程序

9.6.2  在上的高斯-勒让德积分及其MATLAB程序

   

 (一)  两点高斯-勒让德积分公式

例9.6.3  分别用两点高斯–勒让德积分公式(9.60)、步长为2的梯形公式和步长为1的辛普森求积公式计算d,并将计算结果与精确值进行比较.

解 设. 输入程序

>>  x1=-1/sqrt(3);x2=1/sqrt(3); y1=1/(5+x1); y2=1/(5+x2);

G2=y1+y2, t=-1:2:1;y=1./(5+t); T=trapz(t,y)

syms x

fi=int(1/(5+x),x,-1,1);

Fs= double (fi), Q=0.40555555555556;

wQ= double (abs(fi-Q)), wG2= double (abs(fi-G2)),

wT= double (abs(fi-T))

运行后屏幕显示分别用两点高斯­-勒让德积分公式和步长为2的梯形求积公式计算的结果G2、T 、Q和精确值Fs及其分别与Fs的绝对误差w G2、wT和步长为1的辛普森与Fs的绝对误wQ依次如下

G2 =                  T =                    Fs =

0.40540540540541    0.41666666666667          0.40546510810816

wQ =                      wG2 =                 wT =

9.044744739561694e-005  5.970270275897657e-005   0.01120155855850

 

(二) n个节点的高斯-勒让德积分公式及其误差分析的两个MATLAB程序

用高斯-勒让德积分公式计算d的数值积分及其截断误差公式的MATLAB主程序

function [GL,Y, RGn]=GaussR1(fun,X,A)

n=length(X);n2=2*n;Y=feval(fun,X);GL=sum(A.*Y);

sun=1; su2n=1; su2n1=1; wome=1;

syms x

for k=1:n

wome=wome*(x-X(k));

end

wome2= wome^2;Fr=int(wome2,x,-1,1);

for k=1:n2

su2n=su2n*k;

end

syms M

RGn= Fr*M/su2n;

例9.6.4  用高斯–勒让德积分公式计算ed,取代数精度为3和5,再根据截断误差公式(9.62)写出误差公式,并将计算结果与精确值进行比较.

解  输入程序

>> X1=[-1/(3^(1/2)),1/(3^(1/2))]; A1=[1,1];

[GL1,Y1, Rn1]=GaussR1(@fun,X1,A1)

X2=[-(3/5)^(1/2),0,(3/5)^(1/2)]; A2=[5/9,8/9,5/9];

[GL2,Y2, Rn2]=GaussR1(@fun,X2,A2)

syms x

fi=int(exp( (-x.^2)./2)./(sqrt(2*pi)),x,-1,1);

Fs= double (fi), wGL1 = double (abs(fi-GL1)), wGL2= double (abs(fi-GL2))

运行后屏幕显示如下

Rn1 =          GL1 =             Y1 =

 1/135*M            1754/2597        877/2597     877/2597

Rn2 =          GL2 =             Y2 =

1/15750*M       237/347    451/1526  1056/2647  451/1526

Fs =           wGL1 =            wGL2 =

  2315/3391         107/14668       36/116971

用高斯-勒让德积分公式计算d的数值积分和误差估计的MATLAB主程序

function [GL,Y,Rn]=GaussR2 (fun,X,A,fun2n)

n=length(X);n2=2*n; Y=feval(fun,X);

GL=sum(A.*Y); GL=sum(A.*Y);

sun=1; su2n=1; su2n1=1; wome=1;

syms x

for k=1:n

wome=wome*(x-X(k));

end

wome2= wome^2;Fr=int(wome2,x,-1,1);

for k=1:n2

su2n=su2n*k;

end

mfun2n =max(fun2n); Rn = Fr*mfun2n/su2n;

 

例9.6.5  用高斯–勒让德积分公式计算d,取代数精度为15,再用截断误差公式(9.62)估计误差,并将计算结果与精确值进行比较.

解  输入程序

>> X=[-0.9602898565, -0.7966664774, -0.5255324099,  -0.1834346425, 0.9602898565, 0.7966664774, 0.5255324099, 0.1834346425];

A=[0.1012285363, 0.2223810345, 0.3137066459, 0.3626837834, 0.1012285363, 0.2223810345, 0.3137066459, 0.3626837834];

x=-1:0.00001:1; fun2n =20922789888000./(5+x).^17;

[GL,Y,Rn]=GaussR2 (@fun,X,A,fun2n)

syms t

fi=int(1/(5+t),t,-1,1); Fs= double (fi), wGL = double (abs(fi-GL))

运行后屏幕显示用代数精度为15的高斯-勒让德积分公式数值计算的结果GL和精确值Fs及其两者的绝对误差wGL依次如下

GL =                              Rn =

   0.4 0546510814876                  2.709468201849595e-015

Y =

  Columns 1 through 4

0.24754251282336  0.23790641276104  0.22349027674545  0.20761682356139

  Columns 5 through 8

0.16777707528929  0.17251294410310  0.18097803538503  0.19292227431611

Fs =                        wGL =

   0.40546510810816              4.059186608518054e-011

欢迎转载,转载请注明来自一手册:http://yishouce.com/book/3/3090602.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1