Sunteți pe pagina 1din 12

El mtodo de Galerkin con funciones

base de soporte local


Basado en el trabajo de John H. Mathews
http://math.fullerton.edu/mathews/n2003/GalerkinMod.html
tambin en la seccin 11.5 El mtodo de Rayleigh-Ritz del libro de Richard L. Burden y J. Douglas
Faires, Anlisis numrico 9a. edicin, editorial Cengage, pgs 696-711
y finalmente tambin en la seccin 6.2 Galerkins method with piecewise polynomials del libro de
Kenneth Eriksson, D. Estep, P. Hansbo & C. Johnson, Computational Differential Equations Volumen
1, Cambridge University Press, 1997.
Adaptado por Jos Luis Gmez Muoz
http://homepage.cem.itesm.mx/jose.luis.gomez

Se va a calcular una solucin aproximada a una ecuacin diferencial ordinaria, lineal


d
d
e inhomognea, - dx
IpHxL dx
yHxLM + qHxL yHxL = f HxL, con las condiciones de frontera
yHaL = ya , yHbL = yb , como se muestra a continuacin:
In[1]:=

Clear@x, y, p, q, f, a, bD;
p@x_D := x2 ;
q@x_D := 30;
f@x_D := 14 x;
a = 0.0;
b = 1.0;
ya = 0.0;
yb = 0.5;
Print@TraditionalForm@ x Hp@xD x y@xDL + q@xD y@xD == f@xDDD;
Print@TraditionalForm@y@aD == ya DD;
Print@TraditionalForm@y@bD == yb DD;
x2 H y  HxLL 2 x y  HxL + 30 yHxL  14 x
yH0.L  0.

yH1.L  0.5

MEF00200SoporteLocal.nb

Lista de nodos (particin del dominio axb)


In[12]:=

Clear@n, j, coordsD;
n = 7;
coords = TableBa + Hb aL

Out[14]=

Log@jD
Log@nD

, 8j, 1, n<F

80., 0.356207, 0.564575, 0.712414, 0.827087, 0.920782, 1.<

Representacin geomtrica de la particin (mallado) del dominio axb


In[15]:=

distancia = Hb aL H6 nL;
gnodos = 8PointSize@LargeD, Thick,
Table@8RGBColor@0, 0.6, j nD, Line@88coords@@jDD, 2 distancia<,
8coords@@j + 1DD, 2 distancia<<D<, 8j, 1, n 1<D,
Table@8Hue@j nD, Point@8coords@@jDD, 2 distancia<D<, 8j, 1, n<D
<;
Graphics@gnodos, Axes TrueD

Out[17]=

-0.04
-0.06
-0.08
-0.10

0.2

0.4

0.6

0.8

1.0

MEF00200SoporteLocal.nb

La solucin aproximada FHxL ser una combinacin lineal de ciertas funciones


linealmente independientes, llamadas funciones base: FHxL = nj=1 c j f j HxL. Las
funciones base f j HxL usadas en el mtodo de Elemento Finito tienen soporte local,
lo que quiere decir que cada una es distinta de cero slo en una pequea parte del
dominio, entre tres nodos consecutivos de la particin:
In[18]:=

Clear@, xD;
1 @x_D :=
n @x_D :=

coords@@2DDx
coords@@2DDa

a < x coords@@2DD

True

xcoords@@n1DD
bcoords@@n1DD

coords@@n 1DD < x b

True
xcoords@@j1DD

j_ @x_D :=

coords@@jDDcoords@@j1DD
coords@@j+1DDx
coords@@j+1DDcoords@@jDD

coords@@j 1DD < x coords@@jDD


coords@@jDD < x coords@@j + 1DD;
True

funciones = TableAj @xD, 8j, 1, n<E;

Table@Plot@funciones@@jDD, 8x, a, b<,


PlotRange 8 4 distancia, 1<, PlotStyle 8Red, Thick<,
Epilog gnodos, AxesOrigin 80, distancia<D, 8j, 1, n<D

Out[23]=

1.0

1.0

0.8

0.8

0.6

0.6

0.4
0.2

0.4
0.2

0.2

0.4

0.6

0.8

1.0

0.2

1.0

1.0

0.8

0.8

0.6

0.4

0.6

0.8

1.0

0.6

0.4
0.2

0.4
0.2

0.2

0.4

0.6

0.8

1.0

0.2

0.4

0.6

0.8

1.0

1.0

1.0

1.0

0.8

0.8

0.8

0.6

0.6

0.4
0.2

0.6

0.4
0.2

0.2

0.4

0.6

0.8

1.0

>

0.4
0.2

0.2

0.4

0.6

0.8

1.0

0.2

0.4

0.6

0.8

1.0

MEF00200SoporteLocal.nb

Abajo se muestran todas las funciones base, junto con los nodos (mallado):
In[24]:=

Plot@funciones, 8x, a, b<, PlotRange 8 0.2, 1<, Epilog gnodosD


1.0

0.8

0.6
Out[24]=

0.4

0.2

0.2

0.4

0.6

0.8

1.0

-0.2

La solucin aproximada tendr la forma FHxL = nj=1 c j f j HxL. El objetivo ser


encontrar los coeficientes c j que den la mejor aproximacin a la solucin de la
ecuacin diferencial:
In[25]:=

Clear@, cD;
n

@x_D := cj j @xD;
j=1

Print@"Forma de la aproximacin a la solucin:"D


Print@"@xD=", TraditionalForm@@xDDD
Forma de la aproximacin a la solucin:
@xD=c1
c2

c3

c4

c5

c6

c7

2.80735 H0.356207 xL 0. < x 0.356207


0
True

2.80735 Hx + 0.L
0. < x 0.356207
4.7992 H0.564575 xL 0.356207 < x 0.564575

4.7992 Hx 0.356207L 0.356207 < x 0.564575


6.7641 H0.712414 xL 0.564575 < x 0.712414

6.7641 Hx 0.564575L
0.564575 < x 0.712414
8.72044 H0.827087 xL 0.712414 < x 0.827087

8.72044 Hx 0.712414L 0.712414 < x 0.827087


10.673 H0.920782 xL 0.827087 < x 0.920782

10.673 Hx 0.827087L 0.827087 < x 0.920782


12.6234 H1. xL
0.920782 < x 1.
12.6234 Hx 0.920782L 0.920782 < x 1.
0
True

La ecuacin diferencial puede escribirse de la

+
+
+
+
+

MEF00200SoporteLocal.nb

forma:
d
IpHxL
- dx

d
dx

yHxLM + qHxL yHxL - f HxL = 0

Si reemplazamos la solucin aproximada FHxL en lugar de la solucin exacta yHxL en


el lado izquierdo de la ecuacin anterior, el resultado ya no ser exactamente
cero. En su lugar obtendremos una funcin conocida como residuo, rHxL. En otras
palabras, si el residuo rHxL, mostrado abajo, fuera cero, en ese caso la solucin
aproximada sera la solucin exacta:
d
d
- dx
IpHxL dx
FHxLM + qHxL FHxL - f HxL = rHxL
El mtodo de Galerkin consiste en encontrar la combinacin lineal
FHxL = nj=1 c j f j HxL cuyo residuo rHxL tenga componente igual a cero en el
n-1

subespacio generado por las funciones base 9f j = j=2 (sin incluir f1 ni fn , porqu
sern usadas para cumplir las condiciones de frontera). Esto significa que el
producto punto del residuo por cada funcin base debe ser cero:
b

a f j HxL rHxL x = 0
es decir
b

- a f j HxL

d
dx

IpHxL

d
dx

para j = 2 ... n - 1
b

FHxLM x + a f j HxL HqHxL FHxL - f HxLL x = 0 para j = 2 ... n - 1

Sin embargo la aproximacin FHxL que estamos utilizando en este ejemplo no tiene
segunda derivada. Usando integracin por partes se obtiene una expresin que
slo involucra primeras derivadas:
-Af j HxL pHxL

b
dF HxL b
dF HxL d f j HxL
E
+
pHxL

a
dx a
dx
dx

x + a f j HxL HqHxL FHxL - f HxLL x = 0

para

j = 2 ... n - 1 ,
pero recordemos que debido a su soporte local, f j HbL = f j HaL = 0 para j = 2 ... n - 1,
entonces cada producto punto igualado a cero queda:
b
b
d HxL d j HxL

x
+
HxL Hq HxL HxL f HxLL x = 0
a p HxL d x

dx
a j

para

j = 2 ... n - 1 ,
que, junto con las condiciones de frontera c1 = ya, cn = yb, forman un sistema de n
ecuaciones para los n parmetros c j , como se muestra abajo.
Nota: Las integraciones deberan ser integraciones numricas, con el comando
NIntegrate[], pero se usan las integrales simblicas, que son ms lentas, para
efectos de claridad en este documento didctico:

MEF00200SoporteLocal.nb

In[29]:=

ecuaciones =
b

TableB p@xD '@xD j '@xD x + j @xD Hq@xD @xD f@xDL x == 0,


a

8j, 2, n 1<F;

ecuaciones = Join@8c1 ya <, Expand@N@ecuacionesDD, 8cn yb <D;


TraditionalForm@TableForm@ecuacionesDD
Out[31]//TraditionalForm=

c1  0.
1.6623 c1 + 6.79909 c2 + 0.00723589 c3 + 1.21298  0.
0.00723589 c2 + 7.36655 c3 - 2.03068 c4 + 1.35743  0.
-2.03068 c3 + 10.5716 c4 - 4.6032 c5 + 1.28881  0.
-4.6032 c4 + 15.4196 c5 - 7.69093 c6 + 1.19617  0.
-7.69093 c5 + 21.5384 c6 - 11.2537 c7 + 1.10866  0.
c7  0.5

A continuacin se muestra el sistema de ecuaciones en forma matricial:


In[32]:=

parametros = TableAcj , 8j, 1, n<E;


8v, m< = N@ CoefficientArrays@ecuaciones, parametrosD D;
Print@MatrixForm@mD, ".",
MatrixForm@parametrosD, "==",
MatrixForm@ vD
D
1.
0.
0.
0.
0.
0.
0.
0.
c1
1.6623
6.79909
0.00723589
0.
0.
0.
0.
1.21298
c2
0.
0.00723589
7.36655
2.03068
0.
0.
0.
1.35743
c3
. c4 == 1.28881
0.
0.
2.03068
10.5716 4.6032
0.
0.
c5
0.
0.
0.
4.6032 15.4196 7.69093
0.
1.19617
c6
0.
0.
0.
0.
7.69093 21.5384 11.2537
1.10866
c7
0.
0.
0.
0.
0.
0.
1.
0.5

Como ya tenemos la matriz y el vector del sistema lineal, podemos obtener la


solucin usando el comando LinearSolve[] de Mathematica:
In[35]:=

Out[35]=

LinearSolve@m, vD
80., 0.178155, 0.234043, 0.181193, 0.0328933, 0.198029, 0.5<

Sin embargo el comando NSolve proporciona la misma respuesta en un formato


ms til para ser usado despus en este documento:

MEF00200SoporteLocal.nb

In[36]:=

Out[36]=

soluciones = NSolve@ecuaciones, parametrosD


99c1 1.33332 1016 , c2 0.178155, c3 0.234043,
c4 0.181193, c5 0.0328933, c6 0.198029, c7 0.5==

La solucin aproximada se obtiene reemplazando los coeficientes c j en la


expresin FHxL = nj=1 c j f j HxL. Abajo se le llama gHxL a la solucin aproximada que
se obtiene por este procedimiento:
In[37]:=

g@x_D := ReplaceAll@@xD, soluciones@@1DD D;


Print@"Solucin aproximada por el mtodo de Galerkin: "D;
Print@"g@xD=", TraditionalForm@g@xDDD
Solucin aproximada por el mtodo de Galerkin:
g@xD=1.33332 1016
0.198029
0.0328933

0.234043

0.178155

0.5

2.80735 H0.356207 xL 0. < x 0.356207


0
True

10.673 Hx 0.827087L 0.827087 < x 0.920782


12.6234 H1. xL
0.920782 < x 1.

0.181193

8.72044 Hx 0.712414L 0.712414 < x 0.827087


10.673 H0.920782 xL 0.827087 < x 0.920782

6.7641 Hx 0.564575L
0.564575 < x 0.712414
8.72044 H0.827087 xL 0.712414 < x 0.827087

4.7992 Hx 0.356207L 0.356207 < x 0.564575


6.7641 H0.712414 xL 0.564575 < x 0.712414
2.80735 Hx + 0.L
0. < x 0.356207
4.7992 H0.564575 xL 0.356207 < x 0.564575

12.6234 Hx 0.920782L 0.920782 < x 1.


0
True

MEF00200SoporteLocal.nb

sta es la grfica de la solucin aproximada con el mtodo de Bubnov-Galerkin:


In[40]:=

Plot@g@xD, 8x, a, b<, PlotLabel "Solucin aproximada"D


Solucin aproximada
0.5
0.4
0.3

Out[40]=

0.2
0.1

0.2

0.4

0.6

0.8

1.0

-0.1
-0.2

A continuacin se muestra la grfica de la solucin analtica exacta, obtenida con el


comando DSolve:
In[41]:=

solexacta =
DSolve@8 x Hp@xD x y@xDL + q@xD y@xD f@xD, y@aD ya , y@bD yb <, y@xD, xD;
exacta@x_D := Evaluate@Expand@ReplaceAll@y@xD, solexacta@@1DD DD D;
Plot@exacta@xD, 8x, a, b<, PlotLabel exacta@xDD
1. x5 - 0.5 x
0.3

0.2

Out[43]=

0.1

0.2
-0.1

-0.2

0.4

0.6

0.8

1.0

MEF00200SoporteLocal.nb

Podemos graficar juntas la solucin analtica y la aproximacin con el mtodo de


Galerkin:
In[44]:=

Plot@exacta@xD g@xD, 8x, a, b<, PlotLabel "Error = AnalticaGalerkin"D


Error = Analtica-Galerkin

0.005

Out[44]=

0.2

0.4

0.6

0.8

1.0

-0.005

-0.010

Ejercicios
1. Modifica ste documento para obtener una solucin aproximada al mismo
problema, pero que los nodos del mallado estn igualmente espaciados, debes
obtener las grficas que se muestran abajo para las funciones base, la solucin
aproximada y el error:
-0.04
-0.06
-0.08
-0.10

0.2

0.4

0.6

0.8

1.0

0.6

0.8

1.0

1.0

0.8

0.6

0.4

0.2

0.2

0.4

-0.2

Solucin
0.5
0.4
0
0

10

MEF00200SoporteLocal.nb

Solucin aproximada
0.5
0.4
0.3
0.2
0.1

0.2

0.4

0.6

0.8

1.0

0.8

1.0

-0.1
-0.2

Error = Analtica-Galerkin

0.01

0.2

0.4

0.6

-0.01

-0.02

-0.03

2. Modifica ste documento para obtener una solucin aproximada a este otro
problema:
d
d
- dx
IpHxL dx
yHxLM + qHxL yHxL = f HxL,
con pHxL = 1 + x, qHxL = 0, f HxL = x,
yH0L = -1
yH5L = +1
debes obtener las grficas que se muestran abajo para las funciones base, la
solucin aproximada y el error:
-0.04
-0.06
-0.08
-0.10

0.2

0.4

0.6

0.8

1.0

MEF00200SoporteLocal.nb

1.0

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1.0

-0.2

Solucin aproximada
2.5
2.0
1.5
1.0
0.5

-0.5
-1.0

Error = Analtica-Galerkin
0.20

0.15

0.10

0.05

Referencias
Adaptado por Jos Luis Gmez Muoz
http://homepage.cem.itesm.mx/jose.luis.gomez
Basado en el trabajo de John H. Mathews

11

12

MEF00200SoporteLocal.nb

http://math.fullerton.edu/mathews/n2003/GalerkinMod.html
Tambin revisar el captulo 2 del libro:
J.N. Reddy
An Introduction to the Finite Element Method, 3rd Edition
McGraw-Hill

Autor Jos Luis Gmez Muoz


http://homepage.cem.itesm.mx/jose.luis.gomez
In[45]:=

Out[45]=

In[46]:=

Out[46]=

$Version
9.0 for Microsoft Windows H64bitL HJanuary 25, 2013L
DateString@D
Wed 2 Apr 2014 16:08:49

S-ar putea să vă placă și