You are on page 1of 3

Para una regla de cuadratura unidimensional de Gauss-Legendre.

a) En primer lugar vamos a estudiar como calcular la siguiente integral

De manera anloga a como trabajamos en el modo numrico de la cuadratura hacemos un cambio


de variable para poder llevarlo a
. El cambio de variable es el siguiente:

Con el cual

) (

Ahora si definimos

) (

Entonces

Donde los , son los valores que corresponden al polinomio de Legendre de grado n. ahora bien
para el intervalo
procedemos como siempre de manera que en realidad nos quedara la
siguiente integral

(

Con lo cual solamente nos restara a lo obtenido volver a aplicar la cuadratura, implementamos y
obtenemos
function [Ai,xi,z]=GLM(F,ls,li,b,a,n)
syms x;
Fx=inline(F);

[xi,Ai]=CuadDat(n);
G=0.5*(ls-li)*(dot(Ai,Fx(x,0.5*((ls-li)*xi(1:n)+ls+li))));
Gx=inline(G);
z=0.5*(b-a)*(dot(Ai,Gx(0.5*(((b-a)*xi(1:n))+b+a))));
return
function [x,w]=CuadDat(n)
if n<=1, error('n debe ser mayor a 1');end
[a,b]=coeflege(n);
JacM=diag(a)+diag(sqrt(b(2:n)),1)+diag(sqrt(b(2:n)),-1);
[w,x]=eig(JacM);x=diag(x);scal=2;w=w(1,:)'.^2*scal;
[x,ind]=sort(x);w=w(ind);
return
function[a,b]=coeflege(n)
if n<=1, error('n debe ser mayor a 1');end
a=zeros(n,1);b=a;b(1)=2;
k=[2:n];b(k)=1./(4-1./(k-1).^2);
return

La funcin CuadDat(n) es la que nos genera los pesos y los puntos de evaluacin de la funcin para
la cuadratura de Gauss-Legendre; la sintaxis del programa es la siguiente
Donde n es el grado del polinomio de Legendre y GLM(F,ls,li,b,a,n)corresponde a

De manera que corriendo las siguientes lneas obtenemos las integrales para diversos grados del
polinomio y tomamos el error
symsx;syms y;
for n=2:2:52
[A,xi,z(n/2)]=GLM(sqrt(x*x+y*y),sqrt(1-x*x),-sqrt(1-x*x),1,-1,n);
error(n/2)=abs(z(n/2)-2*pi/3);
end
Esta es la tabla obtenida de las lneas de cdigo anteriores
Grado del polinomio
2
4
6
8
10
12
14
16
18
20

Valor aproximado (programa)


2,43432247780074
2,13902964084140
2,10851498719497
2,10060229692440
2,09766159672900
2,09632257186169
2,09562660162605
2,09522938531030
2,09498627708769
2,09482919744924

Error (respecto valor real)


0,339927375407543
0,0446345384482014
0,0141198848017772
0,00620719453120300
0,00326649433580384
0,00192746946849676
0,00123149923285837
0,000834282917103302
0,000591174694492214
0,000434095056046413

22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52

2,09472320730912
2,09464910805060
2,09459574962500
2,09455635256073
2,09452663249255
2,09450379105419
2,09448594759181
2,09447180632655
2,09446045464981
2,09445123716871
2,09444367493865
2,09443741243110
2,09443218196464
2,09442777938661
2,09442404715464
2,09442086237809

0,000328104915920058
0,000254005657404299
0,000200647231807682
0,000161250167537208
0,000131530099356514
0,000108688660989564
9,08451986192382e-05
7,67039333555708e-05
6,53522566151921e-05
5,61347755181352e-05
4,85725454590913e-05
4,23100379070007e-05
3,70795714452754e-05
3,26769934115845e-05
2,89447614436611e-05
2,57599848985102e-05

Como podemos ver a medida que aumentamos el grado del polinomio la aproximacin se mejora
teniendo en cuenta que en realidad el algoritmo son solo dos lneas lo dems es implementacin
de MATLAB y las dems lneas son solo para el clculo de los y los si los tuviramos en base de
datos no seran necesarias esas lneas para clculos posteriores. Este algoritmo implementado usa
el mismo grado del polinomio para el clculo de ambas integrales no se hace grados mixtos. Otro
respecto a tener en cuenta es que debido al comando inline usado en la programacin se debe
tener mucho cuidado con las funciones ingresadas ya que estas son evaluadas en orden de
aparicin de las variables simblicas por lo tanto este programa no es muy general pero el
algoritmo la idea si lo es.

You might also like