Memoria
Memoria
Memoria
PROBLEMAS DE CONTROL
Proyecto de fin de carrera
Este documento constituye el proyecto de fin de carrera llamado Aplicacin del MDF y del
MEF a problemas de control, realizado por Pablo Casanovas Espinar para la titulacin de
Ingeniera Industrial (plan 98). El proyecto depende del Departamento de Ingeniera de
Sistemas y Automtica de la Universidad de Sevilla. Este proyecto fue tutelado por D. Jos
ngel Acosta Rodrguez.
El documento fue redactado utilizando Microsoft Word, Microsoft Excel y el programa grfico
Graph.
Las fuentes utiliazadas son Calibri con tamao 11 para el texto, y Cambria Math con tamao 11
para las expresiones matemticas.
Agradecimientos
A Steffi.
Resumen
Este proyecto consiste en la aplicacin dos mtodos numricos diferentes para la
aproximacin de ecuaciones diferenciales en derivadas parciales.
En primer lugar se aplic un caso particular del mtodo de las diferencias finitas, que fue
implementado en Matlab, y en segundo lugar el mtodo de los elementos finitos a travs de la
aplicacin informtica Freefem.
Ambos mtodos fueron programados para su posterior aplicacin a un problema prctico de
control de un pndulo invertido.
Finalmente se utiliz el Simulink para la simulacin del sistema mecnico usando las
aproximaciones aportadas por los mtodos anteriores.
Captulo 1
Motivacin y objetivos
1.1 Introduccin
El objetivo de este proyecto de fin de carrera es continuar la lnea de estudio iniciada en (Lucas
Rodrguez, 2012). En el anterior proyecto se estudiaba la implementacin de un mtodo
matemtico numrico para la resolucin de una ecuacin diferencial determinada.
Concretamente mediante el mtodo de las diferencias finitas.
El inters de este proyecto reside en que ha sido abordado siguiendo vas alternativas para la
resolucin de la ecuacin mencionada. Para ello se estudian el mtodo de las diferencias
finitas (con una significativa variacin respecto al proyecto anterior) y el mtodo de los
elementos finitos usando el Freefem, detallando en ambos casos las ventajas y desventajas
que presentan, as como las dificultades y limitaciones que se han ido presentando a lo largo
del desarrollo de este proyecto.
La parte correspondiente a las diferencias finitas fue programada en lenguaje M en Matlab,
que es un lenguaje de alto nivel para el clculo numrico. Est disponible para las plataformas
Unix, Windows, Mac OS X y GNU/Linux .
En cambio, para la implementacin del mtodo de los elementos finitos se decidi explorar las
posibilidades que ofrece el Freefem, que es un lenguaje de programacin y software enfocado
en resolver ecuaciones diferenciales parciales usando el mtodo de elementos finitos.
FreeFem est escrito en C++ y desarrollado y mantenido por la Universidad Pierre y Marie
Curie y el Laboratorio Jacques-Louis Lions. Es compatible con GNU/Linux, Solaris, OS X y MS
Windows. Cabe destacar que un hecho decisivo en la seleccin de este software, fue que es
muy usado por el personal de investigacin del departamento de Ecuaciones Diferenciales y
Clculo Numrico de la Universidad de Sevilla.
Captulo 2
Ecuaciones diferenciales parciales y sistema
mecnico de pndulo invertido.
2.1 Introduccin a las EDP
2.1.1 Ecuaciones Diferenciales Ordinarias
Las Ecuaciones Diferenciales Ordinarias (EDO) y las Ecuaciones Diferenciales Parciales (EDP)
estn presentes en muchos de los modelos matemticos que modelan fenmenos presentes
en la naturaleza.
Las Ecuaciones Diferenciales Ordinarias son en realidad un caso particular de las Ecuaciones
Diferenciales Parciales en el que nicamente hay funciones con una sola variable
independiente.
Son del tipo:
, (), (), , () = 0,
siendo sta una ecuacin diferencial ordinaria de orden , para una funcin () desconocida.
La obtencin de las soluciones de las EDOs es mucho ms sencilla que las de las EDPs, aunque
tambin suponen una gran simplificacin del modelo matemtico que describe la realidad
fsica del sistema que se desea conocer. Esto se debe a que solo aparece una variable
independiente de la que dependen todas las dems.
A continuacin se exponen dos ejemplos de modelado de problemas mediante EDOs recogidos
en (Gallardo, 2012).
Ejemplo 1. Movimiento de un cuerpo en cada libre.
Se tiene un cuerpo de masa m que se deja caer desde una altura h nicamente bajo la
influencia de la gravedad tal y como se observa en la figura 2.1.1.1.
Figura 2.1.1.1
siendo la aceleracin y cada una de las fuerzas que actan sobre la masa. La posicin
del cuerpo en cada instante es (), y por tanto la aceleracin ser su segunda derivada
(). La nica fuerza que acta en el sistema es la de la gravedad que viene dada por
= , donde g es la constante de la gravedad.
Para que nuestro sistema quede completamente definido se requieren en este caso dos
condiciones iniciales, que sern, (0) = , ya que para el instante inicial el cuerpo se
encuentra a una altura h, y (0) = 0, ya que el cuerpo se deja caer y por tanto su
velocidad inicial es cero.
La EDO es de segundo orden y queda de la siguiente forma:
2
= ,
2
(0) = ,
(0) = 0.
Ejemplo 2. Vaciado de un tanque cilndrico.
Se tiene un tanque cilndrico como el de la figura 2.1.1.2 de radio y altura 0
completamente lleno de agua. En la base inferior del tanque hay un orificio de rea . La
constante depender de la forma del orificio.
3
Figura 2.1.1.2
Aplicando la Ley de Torriceli, segn la cual podemos determinar la velocidad de salida del
fluido. Esto se consigue igualando la energa cintica
Despejando , = 2.
y la energa potencial .
El caudal de agua que sale del tanque ser y por tanto podemos definir la siguiente
relacin.
= = 2 ,
=
= 2
,
= 2 .
Como el tanque est inicialmente lleno, nuestra condicin inicial ser (0) = 0 .
,,
,,
=0,
1 1 2 2
1
Figura 2.1.2.1.1
2
+
= 0 Es de segundo orden
2
(, )
= ()
(, ) 2 + (, ) + (, ) 2 + (, ) + (, ) = (, , ),
Figura 2.1.2.3.1
Se ha supuesto que:
1. La cuerda es homognea, es decir, que el cociente de la masa entre la
longitud es constante.
2. Fuerzas gravitacionales despreciables.
Con todo ello se tiene que:
2 2
=
2 2
0 ,
(, 0) = () (1)
>0
(, )
= 0 (2)
(0, ) = (, ) = 0 (3)
Figura 2.1.2.3.2
2 2
+
= 0,
2 2
Ecuaciones parablicas, si 2 4 = 0.
Sirven para modelar problemas que incluyen la conduccin o la transferencia
de calor. Como ejemplo, se muestra a continuacin la ecuacin del calor
recogida en (Caada Villar, 2006). Se tiene una varilla delgada de longitud .
Ambos extremos de la varilla se mantienen a 0 C. Se sabe que la distribucin
inicial de temperaturas es una funcin f(x). Se desea conocer la temperatura
en cualquier punto y en cualquier instante.
2
=
0 < < , 0 < <
2
(, 0) = () (1)
(0, ) = (, ) = 0
(2)
Las EDP con ms de dos variables independientes describen modelos con otras tantas variables
independientes. Para su resolucin numrica, es necesaria la aplicacin de mtodos numricos
en tres (o ms) dimensiones, lo cual se escapa de los contenidos de este proyecto. Tienen la
siguiente forma:
1 , , , ,
2
2
2
2
,,
,
,
,
,
,
,
=0,
1
1 2
2 1 2
1
un ejemplo podra ser la ecuacin de onda escalar en un espacio de dos dimensiones (tres
variables independientes, t, x e y).
2
2 2
2
=
+
=0
2
2 2
2.1.2.5 EDP de orden superior
Las Ecuaciones Diferenciales Parciales de orden superior (n>2), se caracterizan porque
aparecen trminos diferenciales de grado superior a dos. Tienen la siguiente forma:
1 , 2 , , , ,
,,
,,
=0,
1 1 2 2
1
un ejemplo podra ser la ecuacin que describe la flexin mecnica de una placa elstica:
4
4
4 (, )
+
2
+
=
.
4
2 2 4
Figura 2.2.1
Los grados de libertad son las variables y que son los ngulos que pueden girar la varilla y
el disco respectivamente. El objetivo del problema es hacer que el pndulo permanezca
vertical, lo cual se consigue mediante la adicin de un controlador que gobierna al disco. Se
activar un par motor que hace girar al disco en funcin de la posicin de la varilla. Se
explicar esto con ms detalle posteriormente.
Las ecuaciones que gobiernan a este sistema en coordenadas cartesianas son las de Lagrange,
y pueden ser descritas como:
1 + 2
2
2
()
0
+
=
2
1
0
(2.2.1),
10
2 2 =
Despejando las variables 1 y 2 nos queda el sistema:
()
+ 1 ,
= 1
2
1
0
y definiendo:
2
,
1
()
1 =
+ .
2
1
0
El controlador que se usar es el definido en la tesis Control no lineal de sistemas
subactuados (Acosta Rodrguez, 2004). Actuar sobre el disco, por tanto se controlaran las
variables anteriormente descritas y . La expresin de este controlador ha sido obtenida
usando un mtodo de control determinado y viene dado por la siguiente expresin:
donde
= ( ( )1 ) ( 1 ) ,
1
= = ,
1
1
1
= = 1 ,
2
2
= (1 ),
2
2
(1 ) (2 1 )
1
1
,
= 1
(2 1 )
1 = (1,1) + (1,2) ,
2 = (1,2) + (2,2) ,
11
Como se ha visto antes, el vector tiene en cada una de sus dos componentes, la derivada
del potencial. Dicho potencial depende de las variables 1 y 2 . Este potencial se puede
calcular mediante la siguiente ecuacin diferencial:
1
+ 2
= (1 ) (2.2.2),
1
2
12 (
1 ,2 )=(0,0)
= 1
2 2
2
12 22 1 2 (
1 ,2 )=(0,0)
1 > 0
= 2
(2.2.3),
2 > 0
cos(1 ) + 2 1
2
2
1
1 = 1 ,
2 = 4 ,
= 10 , = = 1 ,
+4
= 10 (1 ) (2.2.4),
2
1
1
(1 , 2 ) = 10 cos(1 ) + (2 + 41 )2 (2.2.5).
2
(1 , 2 )
= 10 (1 ) + 42 + 161
1
(1 , 2 )
= 2 + 41
2
Vase que sustituyendo estas derivadas en la ecuacin, se llega a la expresin 0 = 0, por tanto
la solucin dada es correcta.
13
Captulo 3
Mtodo de las diferencias finitas (MDF)
3.1 Fundamentos del mtodo de las diferencias finitas
Debido a que no siempre es posible hallar una expresin analtica de la solucin de una
ecuacin diferencial en derivadas parciales, o que su obtencin es en excesivo complicada, se
suele recurrir a mtodos numricos para el clculo de una aproximacin de la solucin.
En esta seccin se va a exponer el mtodo numrico de las diferencias finitas, que consiste en
usar derivadas para aproximar ecuaciones de diferencias.
() =
=0
() ()
( ) ,
!
()
() ()
(2) ()
( ) +
( ) ,
( )2 + +
1!
2!
!
2 () 2 3 () 3
()
+
+
+ ,
2 2!
3 3!
2 2!
3 3!
(3.1.1.1)
2 () 2 3 () 3
()
+
+ ,
2 2!
3 3!
14
2 2!
3 3!
(3.1.1.2)
Para ambas expresiones podemos despreciar las derivadas de orden dos y superiores, para
llegar a las frmulas que usaremos en nuestras aproximaciones.
() ( + ) ()
( + ) ()
=
+ ()
() () ( )
() ( )
=
+ ()
reagrupando trminos y despreciando las derivadas de orden tres y superiores nos queda:
() ( + ) ( )
( + ) ( )
=
+ (2 )
.
2
2
Si en vez de restar las ecuaciones (3.1.1.1) y (3.1.1.2) las hubiramos sumado, obtendramos la
aproximacin de las diferencias finitas de segundo grado. Que por supuesto se usarn en
aquellas ecuaciones en las que aparezcan estos trminos.
( + ) 2() + ( )
2 () 1
4 () 3
=2
+2
+ ,
2
2 2!
4 4!
despreciando trminos que contengan derivadas de cuarto orden y superiores, nos queda:
2 () ( + ) 2() + ( )
( + ) 2() + ( )
2)
=
+
(
.
2
2
2
2 (, ) 2 3 (, ) 3
(, )
+
+
+
2 2!
3 3!
(3.1.2.1),
15
(, ) =
(, ) ( + , ) (, )
( + , ) (, )
=
+ ()
.
(, ) =
(, ) (, + ) (, )
(, + ) (, )
=
+ ()
.
De idntica manera se obtienen las diferencias hacia adelante en caso que la variable
incrementada sea la y.
Para las frmulas de las diferencias regresivas partimos de:
( , ) = (, )
y fcilmente llegamos a:
(, ) =
(, ) =
2 (, ) 2 3 (, ) 3
(, )
+
2 2!
3 3!
(3.1.2.2),
(, ) (, ) ( , )
(, ) ( , )
=
+ ()
(, ) (, ) (, )
(, ) (, )
=
+ ()
.
De igual forma que hicimos para el caso de las ecuaciones con una sola variable independiente,
si restamos las expresiones (3.1.2.1) y (3.1.2.2), se llega a la frmula de las diferencias
centradas:
(, ) =
(, ) ( + , ) ( , )
( + , ) ( , )
=
+ (2 )
.
2
2
(, ) =
(, ) (, + ) (, )
(, + ) (, )
=
+ ( 2 )
.
2
2
Si en vez de restarse las expresiones (3.1.2.1) y (3.1.2.2) se hubiesen sumado se llega las
frmulas de diferencias de segundo orden:
(, ) =
2 (, ) ( + , ) 2(, ) + ( , )
=
+ (2 )
2
2
(, ) =
2 (, ) (, + ) 2(, ) + (, )
=
+ ( 2 )
2
2
( + , ) 2(, ) + ( , )
.
2
(, + ) 2(, ) + (, )
.
2
16
(, ) = 2 (, )
0 , 0 , = [0, ] [0,1] ,
2 = 0,1 ,
(0, ) = (, ) = 0,
= 1,
(, 0) = ().
Figura 3.1.3.1
17
(, + ) (, )
( + , ) 2(, ) + ( , )
2
(, + ) (, ) [( + , ) 2(, ) + ( , )] ,
donde se ha definido:
2
.
2
Por tanto la molcula sera la mostrada en la figura 3.1.3.2, cuya expresin matemtica viene
dada por la ecuacin (3.1.3.1).
,+1 +1, + (1 2), + 1, (3.1.3.1).
Figura 3.1.3.2
En la siguiente figura se muestran como lneas rojas las fronteras que inicialmente son
conocidas. Se iniciar por tanto la iteracin desde abajo e izquierda hacia la derecha y
subiendo una fila cuando se calcule un nodo de la ltima columna.
Figura 3.1.3.3
1, ,1 + (1 2)1,1 + 2,1
Teniendo en cuenta que la solucin analtica a la ecuacin planteada es conocida, y es:
(, ) =
2 2
2
,
19
u(x,t)
0.8
0.6
0.4
0.2
0
1
0.5
y
0.2
0.4
0.6
0.8
Figura 3.1.3.4
u(x,t)
0.8
0.6
0.4
0.2
0
1
0.5
t
0.2
0.4
0.6
0.8
Figura 3.1.3.5
20
-4
x 10
8
u(x,t)
6
4
2
0
1
0.5
y
0.2
0.4
0.6
0.8
Figura 3.1.3.6
El error mximo que se comete es de 6 104 que es una cifra bastante admisible teniendo en
cuenta que supone un 0,16% de error con respecto a la solucin real. Vase el previsible
comportamiento de esta curva representada en la figura 3.1.3.5, que crece a medida que nos
vamos alejando de las fronteras conocidas mediante las condiciones de contorno. De hecho el
error mximo se comete en el nodo ms alejado de las tres fronteras.
(, ) =
(3.1.4.1.1),
= ,
+1
.
Si el mdulo del coeficiente de amplificacin es mayor que uno, la solucin ser inestable ya
que este crecer con el tiempo, en cambio si es menor que uno, se estabilizar con el tiempo.
|| < 1
|| > 1
+1
+1 2 + 1 ,
+1 (+1) 2 + (1) ,
Recordemos que para que sea estable, tiene que ser menor que uno, es decir, que la
representacin grfica de la ltima expresin en el plano complejo este dentro de la
circunferencia unidad.
Para que esto ocurra, vemos que segn la expresin obtenida de A, debe cumplirse que:
0 < 0,5
22
Figura 3.1.4.1.1
23
Tomando un valor de < 0,5 podemos obtener una posible combinacin de subdivisiones
que garanticen estabilidad.
=
2 2
< 0,5
50 0,5
= 250
0,1
< 15,8
Figura 3.1.4.1.2
24
u(x,t)
0.8
0.6
0.4
0.2
0
1
0.5
0
0.2
0.6
0.4
0.8
Figura 3.1.4.1.3
u(x,t)
-1
1
0.5
t
0.2
0.4
0.6
0.8
Figura 3.1.4.1.4
25
Podemos por tanto terminar este apartado destacando la importancia de una apropiada
eleccin de los pasos para una correcta aproximacin.
Se ha de tener en cuenta que cuanto menor sea el parmetro y mayor el nmero de
subdivisiones, ms precisa ser la solucin pero tambin mayor el coste computacional. Por
consiguiente se debe conocer a priori el error admisible que podemos cometer para calcular a
posteriori los pasos de nuestro mallado.
10 , 2 = cos(10 ) + (2 10 )2
1 , 20 = cos(1 ) + (20 1 )2
1 , 2 = cos(1 ) + (2 1 )2
1 , 2 = cos(1 ) + (2 1 )2
(3.2.1.1)
26
Donde
=
2
1
Siendo cada una de las fronteras mencionadas, las representadas en la malla de la figura
3.2.1.1.
Figura 3.2.1.1
En la seccin anterior se defina el problema del pndulo, y tenamos que 1 < 0 y 2 0. Por
tanto obtenemos que < 0.
Las fronteras descritas tienen dos trminos, uno sinusoidal y otro parablico. En funcin de las
constantes que tomemos estos trminos se harn ms o menos significativos.
Operando con rdenes de magnitud para obtener una estimacin nos queda:
(2 1 )2 =
(| cos(1 )|)
(||)
(2 1 )2 =
() 1
(||)
() 1
(2 1 ) =
(||)
27
Se ve que es ms conveniente tomar valores de con rdenes de magnitud altos. Puesto que
los parmetros y son datos fijos del problema solo podemos modificar .
Para que las fronteras sean sinusoidales se debe cumplir:
|cos(1 )|
>1
|(2 1 )2 |
10 , 2 = (2 10 )2
1 , 20 = (20 1 )2
1 , 2 = (2 1 )2
1 , 2 = (2 1 )2
(1 , 2 )2
(1 , 2 ) (1 , 2 )
(1 , 2 ) (1 , 2 )
Las dos expresiones anteriores las sustituiremos en la ecuacin (2.2.4). Pero antes haremos el
anlisis de estabilidad para asegurarnos que la molcula que se generar a partir de las
frmulas de las diferencias finitas sea estable. Para ello implementamos el anlisis explicado
en la seccin 3.1.4.1.
28
llamando a:
+4
=0,
(1) + 1 = 0 ,
= 1 + = 1 + cos() ().
Figura 3.2.1.1.1.1
Llegamos por tanto a la conclusin que esta molcula ser estable si se cumple que
0<<1
4 1
60
=
=
= 0,25 < 1
4 16 2 4 60
Conocidos ya los valores entre los que puede moverse la relacin entre los pasos de la malla,
podemos proceder a la aproximacin de la solucin de nuestra ecuacin (2.2.4). Para ello
sustituimos en ella las frmulas de las diferencias regresivas y nos queda:
29
(1 , 2 ) (1 , 2 )
(1 , 2 ) (1 , 2 )
+4
= 10 (1 ),
+1, = (1 ), + ,1 +
10
(1 )
4
Usaremos esta recursin para calcular un nodo a partir de otros dos en cada una de las
iteraciones. Como bien se muestra en la malla de la figura 3.2.1.1.1.2, tendremos que empezar
iterando desde las fronteras uno y cuatro.
Figura 3.2.1.1.1.2
De hecho solo podremos utilizar dos de las cuatro condiciones de contorno que originalmente
tiene el problema, ya que la recursin calculada a partir de la molcula as lo requiere. Esto
podr dar lugar a inexactitudes.
Se calcularn los nodos desde arriba, de izquierda a derecha, y bajando una fila despus de
cada vez que se llegue a la frontera dos.
La solucin que nos queda es la representada en la figura 3.2.1.1.1.3:
30
Figura 3.2.1.1.1.3
Figura 3.2.1.1.1.4
Se pueden apreciar visibles diferencias entre ambas curvas. Podemos verlas de forma ms
evidente si representamos la diferencia de las matrices exacta y aproximada en la figura
3.2.1.1.1.5.
31
Figura 3.2.1.1.1.5
Estas inexactitudes pueden estar asociadas al hecho de que solo se han tomado dos de las
cuatro condiciones de contorno, y adems estas condiciones eran aproximadas (solo tenan
trmino parablico).
Con el mtodo de las diferencias finitas directo (calculando un nodo en cada iteracin) no
podremos nunca aspirar a utilizar las cuatro condiciones de contorno. Esto sera nicamente
posible si utilizramos el mtodo indirecto (plantear ecuaciones lineales y resolver al final el
sistema) pero este es un tema que se escapa del estudio en este texto (Lucas Rodrguez, 2012).
En lugar de conformarnos con la utilizacin de dos condiciones, podemos intentar utilizar tres,
y para ello tendremos que modificar nuestra molcula.
En vez de emplear las diferencias finitas regresivas como antes, podemos usar las diferencias
centradas segn la variable 1 y las diferencias progresivas segn la variable 2 . Recordemos
que eran de la forma:
(1 , 2 )1
(1 + , 2 ) (1 , 2 )
2
(1 , 2 )2
(1 , 2 + ) (1 , 2 )
2
(1 + , 2 ) (1 , 2 )
(1 , 2 + ) (1 , 2 )
+4
= 10 (1 ),
2
2
32
Figura 3.2.1.1.2.1
+1
+1 1 + 4
=0,
2
llamando a:
(+1) (1) + +1 = 0
33
= 1 +
Cuya representacin en el plano complejo est representada en la figura 3.2.1.1.2.2.
Figura 3.2.1.1.2.2
Como vemos, la curva representada en color verde queda fuera del crculo unidad, y no hay
valor alguno de que haga que sta quede dentro. Lo cual significa que la molcula en
cuestin es inestable.
+1
+1 1
+4
2
2
=0,
llamando a:
34
(+1) (1) + +1 1 = 0 ,
(+1) (1) +
=0,
2 1 = 0.
Tenemos una ecuacin de segundo grado, por tanto tenemos que determinar cada una de las
dos expresiones y representarlas en el plano complejo. La primera solucin est representada
en la figura 3.2.1.1.3.1 y viene dada por:
+ 2 ( )2 + 4
2
Figura 3.2.1.1.3.1
2 ( )2 + 4
2
35
Figura 3.2.1.1.3.2
Para que ambas curvas siempre queden encerradas en la circunferencia unidad, el parmetro
tiene que cumplir que 0 < < 1. Se propone que = 0,25
4
=
=
= 0,25
4 16 4 2
1 = 2
Sabiendo que se tendr estabilidad, podemos continuar con nuestro mtodo de aproximacin.
Las expresiones a utilizar son:
(1 , 2 )1
(1 , 2 )2
(1 + , 2 ) (1 , 2 )
2
(1 , 2 + ) (1 , 2 )
2
(1 + , 2 ) (1 , 2 )
(1 , 2 + ) (1 , 2 )
+4
= 10 (1 )
2
2
1, = +1, + ,+1 ,1 10 (1 )
Como se observa en la figura 3.2.1.1.3.3, tendramos dos formas distintas de proceder. En la
primera de ellas empezaramos la iteracin desde la frontera de abajo, de izquierda a derecha
y subiendo una fila cada vez que se llegara a la frontera derecha. La segunda opcin era hacer
el camino inverso, es decir, empezar desde abajo, de derecha a izquierda y subiendo una fila
cada vez que se llegara a la frontera izquierda.
36
Figura 3.2.1.1.3.3
Esta molcula es un tanto especial, si observamos bien, no se utiliza nodo alguno en la mitad
de la molcula, en cambio hay un nodo desplazado una unidad hacia abajo, lo cual nos obliga a
imponer una cuarta condicin de contorno para poder implementar nuestra iteracin.
La nueva condicin de contorno que debemos imponer es de tipo Neumann. Recordemos que
este tipo de condiciones son de la forma:
(1 , 2 )
= (1 )
2
Para utilizar este tipo de condiciones de contorno, es necesaria la adicin de una nueva
fila en nuestra malla tal y como se muestra en la figura 3.2.1.1.3.4
Figura 3.2.1.1.3.4
La idea es aplicar una frmula de las diferencias finitas entre los dos nodos marcados.
En nuestro caso podemos usar las diferencias progresivas o las regresivas, pero no las
37
centradas ya que el valor del nodo perteneciente a la penltima fila antes de realizar la
nueva adicin era desconocido.
En este caso tomaremos (1 ) = 1. Con lo cual, aplicando por ejemplo la frmula de
las diferencias finitas progresivas en esa frontera nueva tenemos que:
Y por lo tanto:
1 , 2 + 1 , 2
(1 , 2 )
= (1 ) =
=1
2
(1 , 2 + ) = (1 , 2 ) +
Es decir que las condiciones de contorno en las dos ltimas filas de la malla (la original y la
nueva) van a ser casi iguales.
Ejecutando el mtodo y haciendo que 1 = 2 = 60 (podramos haber tomado ms
valores, para conseguir una mayor precisin, pero tambin esto hara aumentar el coste
computacional). La solucin aproximada est representada en la figura 3.2.1.1.3.5
Figura 3.2.1.1.3.5
38
Figura 3.2.1.1.3.6
39
Figura 3.2.2.1.1
Cuyo error con respecto a la solucin exacta puede verse en la figura 3.2.2.1.2.
Figura 3.2.2.1.2
(1 , 2) = 10 cos(1 ) + 0,5(2 41 )2
Adems de la de Neumann:
(1 , 2 )
=0
2
Con ello, la solucin obtenida y su error frente a la solucin exacta pueden verse en las
figura 3.2.2.2.1 y 3.2.2.2.2 respectivamente.
Figura 3.2.2.2.1
Figura 3.2.2.2.2
41
Nota: El anlisis de todos los resultados calculados en esta seccin se pospone a la seccin
cinco.
42
Captulo 4
El mtodo de los elementos finitos (MEF)
mediante Freefem
4.1 Fundamentos del mtodo de los elementos finitos
En este proyecto se van a realizar las aproximaciones mediante los elementos finitos usando el
programa Freefem.
El freefem es un programa desarrollado por la universidad francesa Marie Curie que se usa
para resolver ecuaciones diferenciales en derivadas parciales utilizando el mtodo de los
elementos finitos. El programa tiene su propia interfaz y lenguaje de programacin. Es posible
abordar dominios tanto en 2D como en 3D (aunque en este texto nos limitaremos a dominios
2D).
43
dificultades con las nuevas geometras a estudiar, mucho ms complejas que las de las
estructuras.
En la dcada de 1980, con el surgimiento de los ordenadores personales, se produce un amplio
desarrollo de distintos software que aplican el mtodo de los elementos finitos,
especializndose muchos en especficos campos de la ingeniera.
Un campo relativamente nuevo en el que se aplica el mtodo de los elementos finitos es la
bioingeniera, en la que an hay grandes retos que superar como la modelacin de materiales
no lineales, geometras no lineales, etc.
Desde hace ya ms de cincuenta aos se estn realizando grandes avances en el estudio de los
elementos finitos, y sin lugar a dudas, matemticos, ingenieros y otros cientficos seguirn
implementando mejoras en la aplicacin de este mtodo en diferentes reas.
Figura 4.1.2.1
en principios variacionales y los que se basan en los residuos ponderados, en este texto nos
centraremos en los primeros.
En general, las partes principales de un algoritmo del mtodo de los elementos finitos basado
en los principios variacionales son cuatro y estn bien diferenciadas:
1. Reformulacin del problema en forma variacional.
Imaginemos una ecuacin diferencial parcial de dos incgnitas que se desea resolver.
La idea es aproximar las incgnitas y que hacen estacionario un funcional
mediante una suma ponderada de funciones.
= (, )
=1
= (, )
=+1
(4.1.2.1)
= (, , , , , , , ) (4.1.2.2)
(, )
=1
(, )
=+1
(, )
=
=1
(, )
=
=+1
Sustituyendo las expresiones de aproximacin y sus derivadas en la ecuacin integrodiferencial (4.1.2.2), se obtendr el funcional que ser funcin de las coordenadas
generalizadas por ahora desconocidas.
= ( )
= 1, ,
=
=1
= 0
45
= 0 = 1, ,
= (1 1 + 2 2 + + ) = 0
= 1,2, , ,
Donde son funciones que acompaan a cada una de las coordenadas generalizadas
.
Agrupando en trminos matriciales:
11
21
12
22
1
1 1
2 2
= 2
Figura 4.1.2.2
pretende realizar. En nuestro caso cada uno de los elementos definidos en el crculo
ser como el representado en la figura 4.1.2.3.
Figura 4.1.2.3
El rea del elemento finito representado en la figura 4.1.2.3 vendr dado por:
=,
2
,
2
2
sin
= 2 sin cos =
2
Una vez calculadas las ecuaciones en cada elemento (en este caso la expresin de la
superficie del mismo), nos falta ensamblar el conjunto y resolverlo. En nuestro
problema el valor final buscado se obtiene sumando todas las reas de los tringulos.
Se obtiene:
= =
=1
2
2
sin
2
0
0
2
1
En este caso, la ecuacin que tenamos en cada elemento era exacta, y por tanto el
error era debido nicamente al proceso de discretizacin. No siempre vamos a estar
en esta situacin. Habr veces en las que es conveniente definir una ecuacin en cada
47
Figura 4.1.2.4
Para reas y superficies tendrn dos dimensiones, y los elementos a usar sern como
los mostrados en la figura 4.1.2.5.
Figura 4.1.2.5
Figura 4.1.2.6
Figura 4.1.2.1.1
Editor de cdigo: En esta ventana es donde se escribe el cdigo del programa que
se desea realizar. La definicin de la ecuacin diferencial en cuestin, las
condiciones de contorno o el tipo de mallado deben se especifican aqu.
Ventana de procesos: En esta ventana se pueden observar los posibles errores que
hayan surgido durante la compilacin del programa para su posterior correccin.
Una vez el cdigo sea correcto, se mostraran aqu las variables que se deseen
mostrar en pantalla despus de la ejecucin.
49
Una vez tengamos el cdigo correcto, procedemos a la ejecucin del programa presionando
sobre el botn ejecutar situado en el cuadro verde en la parte superior izquierda de la figura
4.1.2.1.1. Si insertamos uno de los cdigos explicados en los anexos al final de este texto, el
entorno de trabajo quedara como el mostrado en la figura 4.1.2.1.2.
Figura 4.1.2.1.2
Cabe destacar que si se desea trabajar con la solucin proporcionada por Freefem en otro
software como por ejemplo el Matlab, lo que se puede hacer es exportar la matriz solucin en
un archivo de texto para ser posteriormente leda con Matlab. El Freefem es una buena
herramienta para solucionar ecuaciones diferenciales en derivadas parciales, pero no para
trabajar con las soluciones que proporciona.
4.1.2.2 Ejemplo
Como ejemplo a la teora anteriormente descrita podemos proponer la siguiente ecuacin
diferencial.
(, ) + (, ) + (, ) + (, ) = (, )
Con las condiciones de contorno:
(0, ) =
(2, ) =
(, 0) = cos()
(, 0,5) = cos() 2
(, ) = (cos() sin())
50
2
(, ) + 2 (, ) +
(, )
2 (, ) +
= (, ) (, )
(4.1.2.2.1)
Tenemos que buscar una funcin que aproxime usando las expresiones a continuacin.
= (, )
=1
(, )
=1
2 (, )
2
=
2
2
=1
(, )
=
=1
2
2 (, )
=
2
2
=1
=1
=1
2 (, )
(, )
2 (, )
+
(,
)
+
2
2
=1
+
=1
(, )
(, ) (, ) (, )
(4.1.2.2.2)
= + (, ) ( + + )
Se busca que:
=1
51
= 0 = 1, , ,
entonces tenemos:
= (1 1 + 2 2 + + ) = 0
= 1,2, , ,
+ (, ) + + = 0 = 1,2, , .
=1
+ +
12
22
1
1 1
2 2
2
=
Que es un sistema de ecuaciones con incognitas. Una ecuacin por cada nodo que
tenemos en la malla.
La discretizacin del dominio se ha realizado mediante tringulos en un mallado regular (Vase
la figura 4.1.2.2.1), esto podra no haber sido as, pero la necesidad de exportar la solucin a
Matlab (en nuestro proyecto tenemos que exportar la solucin a Matlab para la realizacin de
la simulacin en Simulink) hace ms cmodo trabajar con este tipo de mallados.
Figura 4.1.2.2.1
52
Ntese en la figura 4.1.2.2.1 que el orden de las fronteras en sentido inverso a las agujas del
reloj, este orden se define por defecto en Freefem.
Vemos adems que a diferencia de en el mtodo de las diferencias finitas implementado en
temas anteriores, aqu podemos utilizar cuatro condiciones de contorno, lo cual har la
solucin encontrada ms precisa.
Tomando uno de los elementos aleatoriamente como el representado en la figura 4.1.2.2.2.
Figura 4.1.2.2.2
Se tendr en cada uno de los vrtices del elemento anterior, la ecuacin (4.1.2.2.2) adaptada
con los correspondientes subndices.
La funcin (, ) arbitraria la podemos elegir de tres formas distintas, tal y como se comenta
en (Hecht, 2012):
Elemento 0
Para cada tringulo (o tetraedro en caso de que tuviramos elementos finitos en 3D)
, nuestra funcin (, ) viene dada por:
(, ) = 1
(, ) = 0
Elemento 1
Para cada vrtice , la funcin (, ) viene dada por:
(, ) = + + (, )
= 1, = 0
Elemento 2
Para cada vrtice , la funcin (, ) viene dada por:
(, ) = + + + 2 + + 2 (, )
= 1, = 0
53
Figura 4.1.2.2.3
Figura 4.1.2.2.4
54
Figura 4.1.2.2.5
55
1 , 20 = (20 1 )2
1 , 2 = (2 1 )2
1 , 2 = (2 1 )2
Para
=
= 0,5
2
2
=4
1
= (1 , 2 )
=1
(1 , 2 )
=
1
1
=1
(1 , 2 )
=
2
2
=1
Tenemos ahora que obtener una expresin variacional de nuestra ecuacin diferencial:
(1 , 2 ) + 4
(1 , 2 ) = (1 , 2 ) (1 , 2 ),
2
1
56
sustituyendo las anteriores expresiones de aproximacin ene esta ecuacin nos queda:
=1
=1
(1 , 2 )
(1 , 2 )
(1 , 2 ) + 4
(1 , 2 ) = (1 , 2 ) (1 , 2 )
1
2
Planteadas ya las ecuaciones que tendremos en cada uno de nuestros nodos, procedemos
ahora a discretizar nuestro dominio. Vase en la figura 4.2.1.1 que debido al tipo de ecuacin,
solamente podemos aplicar dos condiciones de contorno.
Figura 4.2.1.1
= 0 0 + = ,
por tanto:
=1 1+ =,
57
= 2
= ,
= 2 = (2 1).
Este cambio de coordenadas tenemos que definirlo en el cdigo del programa. Al final de este
texto se muestran los cdigos de las funciones programadas para este proyecto.
Tambin cabe mencionar que para esta aproximacin han sido usadas las funciones de prueba
del tipo 1 , es decir:
(, ) = + +
(, )
= 1, = 0
Con todo ello nos queda la siguiente solucin representada en la figura 4.2.1.2.
Figura 4.2.1.2
Como se puede apreciar a simple vista, sta no es una buena solucin, estas inexactitudes
vienen originadas por la aplicacin nicamente de dos condiciones de contorno, que adems
son aproximaciones de las originales.
58
2
2
+4
= 10 (1 )
1
2
1 2
2 2
En este caso podemos aplicar las cuatro condiciones de contorno en las fronteras de la malla
de la figura 4.2.1.1.1, por lo que es de esperar que esta solucin sea satisfactoria.
Figura 4.2.1.1.1
2
2
+4
(1 , 2 ) = (1 , 2 ) (1 , 2 )
1
2
1 2
2 2
(4.2.1.1.1)
(1 , 2 )
=1
(1 , 2 ) 1
(1 , 2 )
(1 , 2 )
(1 , 2 ) + 4
(1 , 2 )
1
2
2
1
1
2
= (1 , 2 ) (1 , 2 )
59
Reordenando trminos:
(1 , 2 )
(1 , 2 )
(1 , 2 )
1
1
=1
(1 , 2 )
(1 , 2 )
+
+ 4(1 , 2 )
= (1 , 2 ) (1 , 2 )
2
2
=1
Una vez planteado el sistema de ecuaciones, podemos proceder a mostrar los resultados que
ofrecen la resolucin del mismo. La solucin aproximada para un valor = 103 es la
mostrada en la figura 4.2.1.1.2.
Figura 4.2.1.1.2
Figura 4.2.1.1.3
60
Como vemos es un error considerablemente alto, aunque tenemos que tener en cuenta que
las condiciones de contorno aportadas eran nicamente parablicas.
1 , 20 = cos(1 ) + (20 1 )2
1 , 2 = cos(1 ) + (2 1 )2
1 , 2 = cos(1 ) + (2 1 )2
=
= 10
1
= 0,5
2
2
3
2
=4
1
= 0 0 + = 2 ,
por tanto:
= 1 1 + = 2 ,
= 4
= 2 ,
= 4 2 = 2(2 1).
Este cambio de coordenadas hay que hacerlo en el cdigo del programa, se mostrar al final
del texto un anexo con las distintas funciones implementadas.
En el apartado 4.2.1 solamente fue satisfactorio uno de los casos, el de adicin de trminos de
orden dos. Por tanto en el presente apartado solo implementaremos la aproximacin de la
ecuacin (2.2.4) con condiciones de contorno exactas.
61
Figura 4.2.2.1
Figura 4.2.2.2
62
Como se aprecia, estos resultados son mucho mejores. Podran incluso mejorarse si
utilizramos funciones de prueba 2 en vez de 1 , o bien disminuyramos el coeficiente o
bien utilizramos un mallado ms fino. Aunque tambin hay que tener en cuenta que se han
utilizado condiciones de contorno exactas (son como la solucin real), que en la prctica rara
vez podr disponerse de ellas.
En efecto si en vez de hacer 100 subdivisiones en la direccin de cada variable, hacemos 150,
tendremos un total de 22.801 nodos y 45.000 tringulos. Con esta medida ganaremos
precisin, aunque tambin coste computacional.
El error para el caso en que = 150 sera de 0,1583 y su representacin se ve en la figura
4.2.2.3.
Figura 4.2.2.3
Nota: Tanto los resultados de esta seccin como los de la seccin tres, se analizan y comparan
en la seccin cinco.
63
Captulo 5
Simulacin y comparacin de resultados
Recordemos que el sistema mecnico que queremos simular es el representado en la figura
2.2.1. Y que el sistema de ecuaciones obtenido era el (2.2.1).
El diagrama del cual nos valemos en Simulink para implementar dicho algoritmo es el 5.1.1.
Diagrama 5.1.1
64
Diagrama 5.1.2
Donde los bloques Fcn2 y Fcn1 representan a las ecuaciones diferenciales del sistema
(2.2.1) que gobiernan el sistema mecnico.
Ntese que despus de cada integrador en ambos bloques se obtienen las variables () y
() respectivamente.
65
Ntese que no se han aadido valores en la columna del tiempo de simulacin para las
diferencias regresivas, esto es debido a que para estos casos las seales de salida se iban fuera
del dominio durante la simulacin.
Diferencias Regresivas
Diferencias centradas
Elementos finitos
n
emax
t (s)
t sim (s) n
emax
t (s)
t sim (s) n
emax
t (s)
t sim (s)
50 39,5043 0,013
50 9,6598 0,0154
5
50 0,5831
0,64
5
100 39,5899 0,0285
100 4,9148 0,0372
15
75 0,3019 1,544
11
150 39,6877 0,0604
150 3,3172 0,061
33
125 0,0789 3,681
24
200
250
300
350
400
450
500
39,7507
39,7933
39,8236
39,8463
39,8638
39,8778
39,8892
0,1206
0,2204
0,2829
0,4233
0,6029
0,8248
0,9126
200
250
300
350
400
450
500
2,5034
2,0143
1,6861
1,4512
1,2737
1,1349
1,0234
0,1557
0,2377
0,3717
0,632
0,9699
1,1919
1,4996
64
118
440
900
1400
2050
3100
150
175
200
225
250
275
300
0,0317
0,0249
0,0179
0,0121
0,0066
0,0017
0,0001
5,491
7,582
9,266
12,168
14,929
18,318
22,639
33
49
64
92
118
274
440
Tabla 5.2.1
Los tiempos medidos, son algo relativos, ya que han sido medidos para un ordenador personal,
concretamente un ordenador dotado de un microprocesador de 2 GHz y una memoria RAM de
4 Gb. Si se buscara una precisin en los clculos muy alta, se requeriran matrices ms grandes
y por tanto la mejor opcin podra ser realizar las simulaciones en un equipo ms potente.
66
Figura 5.2.1.1
[1 , 1 , 2 , 2 ] = , 0, , 0.
Figura 5.2.2.1
67
Aparentemente se trata de una solucin bastante aceptable con unos tiempos tambin
aceptables, aunque si se desea satisfacer un error mximo determinado, podemos interpolar
en la figura 5.2.2.2 el error mximo en cuestin usando la lnea de tendencia introducida.
Figura 5.2.2.2
Ponemos el ejemplo de que se busque una aproximacin de la ecuacin (2.2.4) cuyo error
mximo no exceda de siete. Es decir:
= 7
Figura 5.2.2.3
68
Se aprecia en la figura 5.2.2.3 que el error mximo absoluto no excede de siete. El error
mximo calculado en Matlab es de 6,94.
Figura 5.2.2.4
Figura 5.2.2.5
69
Tambin representamos los tiempos estimados de clculo y de simulacin en las figuras 5.2.2.6
y 5.2.2.7 respectivamente.
Figura 5.2.2.6
Figura 5.2.2.7
Como se observa en las dos grficas superiores, los tiempos de clculo y de simulacin no
tienen la misma relevancia, ya que el primero es en todos los casos relativamente pequeo, y
el segundo crece de manera muy rpida a medida que aumentamos el nmero de
subdivisiones.
Figura 5.2.3.1
Figura 5.2.3.2
Al igual que se hizo en el caso de las diferencias centradas, se ha aadido una curva de mejor
ajuste para poder predecir la necesaria que satisfaga un error mximo determinado.
Si por ejemplo se desea que el error no exceda de 0,2:
= 52,324()0,303 = 85,2
Figura 5.2.3.3
Para las mismas condiciones iniciales que antes y para una simulacin del sistema con = 86,
se ve que a pesar que no haber tomado un nmero excesivamente alto, se obtiene una
solucin admisible. Vase la figura 5.2.3.4.
Figura 5.2.3.4
Tambin representamos en la figura 5.2.3.5 el tiempo estimado de clculo. Que como puede
verse es muy superior al tiempo requerido cuando usamos las diferencias finitas centradas.
72
Figura 5.2.3.5
Por ltimo se realiza una comparacin general entre las simulaciones del sistema con unas
Figura 5.2.3.6
73
Concluimos indicando que como observamos en la figura 5.2.3.6 para la simulacin con =
50, el mtodo de los elementos finitos ofrece una solucin ms exacta, pero a su vez tambin
es mayor el tiempo que se requiere para calcularlas.
Por otra parte, si aplicamos el mtodo de las diferencias finitas centradas obtendremos un
error mayor, aunque su simplicidad y rapidez, lo hacen bastante efectivo.
74
Anexo
Se exponen a continuacin los cdigos de los programas principales que se han llevado a cabo
en Matlab y Freefem para este proyecto.
un=zeros(ny+1,nx+1);
x=2*pi:-4*pi/nx:-2*pi;
y=-2*pi:4*pi/ny:2*pi;
Debemos definir las dimensiones de la matriz solucin y reservar dicho espacio en memoria.
Esto lo hacemos as ya que es ms cmodo que modificar estas dimensiones en el bucle
posterior.
Tambin se define el dominio de ambas variables independientes.
un(:,1)=-10.*cos(-2*pi)+0.5.*(y-4*(-2*pi)).^2; %Frontera 1
un(1,:)=-10.*cos(x)+0.5.*(2*pi-4.*x).^2; %Frontera 4
Estas son las condiciones de contorno. Recordemos que en las diferencias regresivas
solamente utilizbamos dos.
75
10
(1 )
4
Figura A.1.1
for i=2:ny+1
for j=2:nx+1
un(i,j)=un(i-1,j)*(1-lambda)+un(i-1,j-1)*lambda+k*2.5*sin(x(j));
end
end
end
Empezaremos calculando el valor de cada nodo desde arriba a la izquierda (elemento (2,2) de
la matriz) de la malla hacia la derecha y cada vez que lleguemos a la frontera derecha, bajamos
una fila para proseguir con la iteracin.
76
Esta primera parte del cdigo es igual que la de la funcin anterior salvo por un detalle. Dado
que en esta ocasin se va a utilizar una condicin de Neumann. Para ello debemos agrandar la
malla una fila ms, de ah que la variable 2 (representada en el cdigo como ), parta desde
= 2
4
.
un(:,1)=-10*cos(-2*pi)+0.5.*(y-4*(-2*pi)).^2; %Frontera 1
un(:,nx+1)=-10*cos(2*pi)+0.5.*(y-4*(2*pi)).^2; %Frontera 2
un(ny+2,:)=k-10.*cos(x)+0.5.*(2*pi-4.*x).^2; %Frontera 3 (Neumann)
un(ny+1,:)=-10.*cos(x)+0.5.*(2*pi-4.*x).^2; %Frontera 3
(1 , 2 + ) = (1 , 2 ) +
Figura A.2.1
for i=ny:-1:1
for j=2:nx
un(i,j)=un(i+2,j)+lambda*(un(i+1,j+1)-un(i+1,j-1))-5*k*sin(x(j));
end
end
77
u=[ny+1,nx+1];
for i=1:ny+1
for j=1:nx+1
u(i,j)=un(i,j);
end
end
end
Recordemos que tenemos que eliminar la fila adicional que creamos para la aplicacin de la
condicin de Neumann, para ello creamos la matriz (esta vez con las dimensiones correctas)
que ser la matriz que la funcin devuelva.
El bucle es simplemente para copiar todas las filas de la matriz (salvo la ltima) en la matriz
(argumento de salida).
Iniciamos el cdigo declarando una malla cuadrada con cien subdivisiones en cada direccin.
El Freefem tiene por defectos mallas cuyos dominios son [0,1][0,1]. En nuestro caso
queremos que sea [2, 2][2, 2]. Para ello tenemos que hacer un cambio de
coordenadas:
= [0,1] = [2, 2]
Con
= 0 0 + = 2 ,
= 1 1 + = 2 ,
= 4
= 2 ,
= 4 2.
Tambin declaramos el tipo de elemento que vamos a utilizar en nuestra aproximacin, en
este caso 1 .
func f=-10*sin(x);
func g4=-10*cos(-1.)+0.5*(y-4)^2;
func g2=-10*cos(1.)+0.5*(y+4)^2;
Con estas rdenes declaramos el trmino independiente que tiene nuestra ecuacin
diferencial y las dos condiciones de contorno que vamos a aplicar. En este caso sobre las
fronteras dos y cuatro, que son las de la derecha y la izquierda (la numeracin es distinta a la
que tomamos en el mtodo de las diferencias finitas).
Vh u,v;
solve problema(u,v)=int2d(Th)((-1.)*dx(u)*v+4*dy(u)*v)int2d(Th)(f*v)+on(4,u=g4)+on(2,u=g2);
plot(u,wait=1);
En esta parte del cdigo se da la orden de resolver en 2D el problema en que tiene como
variables y , donde es la incgnita buscada y las funciones de prueba 1 . Adems se
especifica sobre que fronteras han de ser aplicadas las funciones de las condiciones de
contorno antes definidas. Por ltimo aparecer por pantalla la representacin de la solucin
obtenida.
79
mesh Th=square(100,100,[2*pi*x-pi,2*pi*y-pi]);
plot(Th,wait=1);
fespace Vh(Th,P1);
func f=-10*sin(x);
func fex=-10*cos(x)+0.5*(y+4*x)^2;
Vh u,v;
real eps=1.e-3;
solve problema(u,v)=int2d(Th)((1.)*dx(u)*v+4*dy(u)*v+eps*dx(u)*dx(v)+eps*dy(u)*dy(v))
-int2d(Th)(f*v)+on(1,2,3,4, u=fex);
plot(u,value=1,wait=1);
Vh err=ex-u;
plot(err,wait=1);
{
ofstream file("u.txt");
file<<u[]<<endl;
}
Esta vez tenemos cuatro condiciones de contorno de Dirichlet aplicadas sobre cada una de las
fronteras.
Al final del cdigo se ordena que se registre la solucin calculada en un archivo de texto
llamado . que despus leeremos con Matlab.
80
Los argumentos de salida sern los gradientes segn cada una de las variables, y los de entrada
sern la malla a estudiar ( e ), la matriz solucin de la ecuacin diferencial () y el nmero
de subdivisiones (). Tambin se definen los parmetros y que se utilizarn para clculos
posteriores.
for i=2:n
for j=2:n
dzdx(i,j)=(v(i,j+1)-v(i,j-1))/(2*h);
dzdy(i,j)=(v(i-1,j)-v(i+1,j))/(2*k);
end
end
En este bucle se calcula mediante diferencias centradas los gradientes de ambas variables en
los nodos interiores de la malla, es decir todos salvo los nodos pertenecientes a los contornos
del dominio.
81
En estos dos bucles se calculan los gradientes en los nodos pertenecientes las fronteras,
excepto los nodos que pertenezcan a dos fronteras a la vez, es decir, los vrtices de la malla.
Siempre que sea posible se realiza el clculo mediante las diferencias finitas centradas, en los
casos en los que no se puedan usar, recurrimos a las diferencias finitas progresivas o
regresivas.
En esta parte del cdigo se calculan los gradientes en los nodos restantes, es decir en los
vrtices. En los vrtices no se podrn utilizar diferencias finitas centradas, por tanto se utilizan
las regresivas y progresivas.
Como vemos la funcin tiene como argumentos de entrada las coordenadas , donde se
desea conocer el valor del gradiente, la distribucin de los nodos , y las matrices gradientes
y . Como argumentos de salida se tienen los valores en los puntos deseados.
x0
xf
y0
yf
=
=
=
=
x(1);
x(length(x));
y(1);
y(length(y));
82
Se definen 0 y como el primer y ltimo valor del vector (referido a la variable 1 ). dem
con 0 y .
if xi >= x0 && xi <= xf
if yi >= yf && yi <= y0
dzdxi = interp2(x,y,dzdx,xi,yi,'linear');
dzdyi = interp2(x,y,dzdy,xi,yi,'linear');
else
error('El nodo no se encuentra en el dominio')
end
else
error('El nodo no se encuentra en el dominio')
end
end
En estos bucles lo primero que se tiene en cuenta es si el punto que se desea interpolar est
dentro de nuestro dominio, es decir si pertenece a la malla. Si no es as, aparecer un mensaje
de error y se detendr la simulacin. En el caso de que el nodo en cuestin pertenezca al
dominio, se procede a su interpolacin mediante la funcin de Matlab interp2 que interpola
de forma lineal a partir de los argumentos anteriormente descritos.
83
Bibliografa
Acosta Rodrguez, J. A. (2004). Control no lineal de sistemas subactuados. PhD tesis.
Universidad de Sevilla. Sevilla.
Caada Villar, Antonio. (2006). Apuntes de ecuaciones en derivadas parciales. Universidad de
Granada. Granada.
Celigeta Lizarza, J. T. (2000). Mtodo de los elementos finitos para anlisis estructural.
Gallardo, Jos M. (2012). Ecuaciones diferenciales ordinarias. Una introduccin con SAGE.
Hecht, Freefem++ Manual. Laboratoire Jacques-Louis Lions. Universit Pierre et Marie Curie.
Paris.
Lucas Rodrguez, Carlos. (2012). Resolucin numrica de EDPs asociadas a problemas de
control. Universidad de Sevilla. Sevilla.
Menndez, ngel N, (1987). Errores en la solucin numrica de ecuaciones diferenciales.
Miersemann, Erich. (2012). Partial differential equations. Lecture notes. Leipzig University.
Leipzig.
Paris, Federico. (1996). Teora de la elasticidad.
Periago Esparza, Francisco. Fundamentos matemticos del mtodo de los elementos finitos.
Universidad Politcnica de Cartagena.
Romero, Sixto. Moreno, Francisco J. Rodrguez, Isabel M (2001). Introduccin a las Ecuaciones
en Derivadas Parciales (EDPs).
Zienkiewicz, O. C. (1981).El mtodo de los elementos finitos.
84