Está en la página 1de 250

Dr.

Sergio Blanes Zamora

Introduccin a los
Es Titular de Universidad del Departamento de
Matemtica Aplicada de la Universitat Politcnica
UPV de Valncia. En la actualidad desarrolla su

mtodos numricos para


labor docente en la Escuela Tcnica Superior de
Ingeniera del Diseo y su labor investigadora
en el Instituto Universitario de Matemtica

Introduccin a los mtodos numricos para ecuaciones diferenciales


ISBN 978-84-9048-023-6 Multidisciplinar.

ecuaciones diferenciales Dr. Damin Ginestar Peir


Es Catedrtico de Universidad del Departamento
de Matemtica Aplicada de la Universitat

2 edicin Politcnica de Valncia. En la actualidad desarrolla


su labor docente en la Escuela Tcnica Superior
Introduccin a los mtodos numricos Sergio Blanes Zamora de Ingeniera del Diseo y su labor investigadora
en el Instituto Universitario de Matemtica
para ecuaciones diferenciales Damin Ginestar Peir Multidisciplinar.

2 edicin Mara Dolores Rosell Ferragud Dra. Mara Dolores Rosell Ferragud
Es Titular de Universidad del Departamento de
Sergio Blanes Zamora Matemtica Aplicada de la Universitat Politcnica
Damin Ginestar Peir de Valncia. En la actualidad desarrolla su
Mara Dolores Rosell Ferragud labor docente en la Escuela Tcnica Superior de
Ingeniera del Diseo y su labor investigadora
En el libro se presenta una introduccin a los diferentes temas relacionados con la en el Instituto Universitario de Matemtica
resolucin numrica de ecuaciones diferenciales ordinarias y en derivadas parciales. Multidisciplinar.
Se comienza introduciendo distintos modelos matemticos basados en ecuaciones
diferenciales, se estudian algunas materias de apoyo como son la interpolacin
y la resolucin de sistemas de ecuaciones lineales y posteriormente se explican
algunas tcnicas para la resolucin numrica de problemas de valores iniciales y de
problemas de contorno. En el libro se presentan contenidos tericos, ejemplos de
aplicacin y algunas secciones dedicadas a la utilizacin de Matlab para la resolucin
de problemas relacionados con la materia presentada. En la presentacin de los
temas se ha evitado exponer desarrollos abstractos buscando con ello que el libro
sea de fcil lectura para los estudiantes de ingeniera.

EDITORIAL
EDITORIAL
UNIVERSITAT POLITCNICA DE VALNCIA
Sergio Blanes Zamora
Damin Ginestar Peir
Mara Dolores Rosell Ferragud

Introduccin a los mtodos numricos


para ecuaciones diferenciales
2 edicin

EDITORIAL
UNIVERSITAT POLITCNICA DE VALNCIA
Los contenidos de esta publicacin han sido revisados por el departamento de
Matemtica Aplicada de la UPV

Coleccin Acadmica

Para referenciar esta publicacin utilice la siguiente cita: ROSELL FERRAGUD, MARA
DOLORES [et al] 2 ed (2014) Introduccin a los mtodos numricos para ecuaciones
diferenciales. Valencia: Universitat Politcnica

Segunda edicin, 2014 (versin impresa)


Segunda edicin, 2014 (versin electrnica)

Sergio Blanes Zamora


Damin Ginestar Peir
Mara Dolores Rosell Ferragud

de la presente edicin: Editorial Universitat Politcnica de Valncia


Telf.: 963 877 012 / www.lalibreria.upv.es / Ref. 6100_01_02_01

ISBN: 978-84-9048-190-5 (versin impresa)


ISBN: 978-84-9048-206-3 (versin electrnica)

Queda prohibida la reproduccin, la distribucin, la comercializacin, la transformacin


y, en general, cualquier otra forma de explotacin, por cualquier procedimiento, de la
totalidad o de cualquier parte de esta obra sin autorizacin expresa y por escrito de los
autores.
ndice general

ndice general 5

I Contenidos tericos 9

1 Introduccin a la modelizacin matemtica en la Ingeniera 11


1.1 Modelizacin matemtica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Algunos modelos diferenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3 Ecuaciones adimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Ejercicios resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.5 Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2 Resolucin de sistemas de ecuaciones lineales 29


2.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Mtodos directos para la resolucin de sistemas lineales . . . . . . . . . . . . . 30
2.2.1 Algoritmo de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.2 Factorizacin LU de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.3 Pivotacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2.4 Errores y nmero de condicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.2.5 Matrices especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

2.3 Mtodos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40


2.3.1 Algoritmo de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.3.2 Algoritmo de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.3 Algoritmos SOR y SSOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5
ndice general

2.4 Ejercicios resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44


2.5 Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

3 Interpolacin y aproximacin de funciones 55


3.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.2 Interpolacin polinmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2.1 Polinomios de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2.2 Algoritmo de Neville . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.2.3 Frmula de interpolacin de Newton. Diferencias divididas . . . . . . . . . . 66
3.2.4 Error en la interpolacin polinmica . . . . . . . . . . . . . . . . . . . . . . . . 70
3.2.5 Problemas con la interpolacin polinmica . . . . . . . . . . . . . . . . . . . . 70

3.3 Interpolacin por splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72


3.4 Derivacin e integracin numrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.4.1 Derivacin numrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.4.2 Integracin numrica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

3.5 Ejercicios resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85


3.6 Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

4 Mtodos numricos para problemas de valor inicial 99


4.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.2 Mtodo de Euler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.3 Mtodo del desarrollo en serie de Taylor . . . . . . . . . . . . . . . . . . . . . . . . 105
4.4 Mtodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.4.1 Mtodos RK explcitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.4.2 Mtodos RK implcitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

4.5 Mtodos multipaso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113


4.6 Ecuaciones rgidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.6.1 Estabilidad lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.6.2 Mtodos implcitos hacia atrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

4.7 Ejercicios resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121


4.8 Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

5 Mtodos numricos para problemas de contorno 135


5.1 Diferencias nitas para EDOs con condiciones de frontera . . . . . . . . . . . . 136

6
ndice general

5.2 Diferencias nitas para problemas parablicos . . . . . . . . . . . . . . . . . . . . 138


5.3 Diferencias nitas para problemas hiperblicos . . . . . . . . . . . . . . . . . . . 144
5.4 Diferencias nitas para problemas elpticos . . . . . . . . . . . . . . . . . . . . . . 147
5.5 Ejercicios resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
5.6 Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

6 Introduccin a los elementos nitos 159


6.1 Tcnicas variacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.2 Condiciones de contorno no nulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
6.3 Introduccin a los elementos nitos bidimensionales . . . . . . . . . . . . . . . . 165
6.4 Ejercicios resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
6.5 Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

II Ejercicios con Matlab 175

7 Resolucin de sistemas de ecuaciones lineales con Matlab 177


7.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.2 Mtodos directos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
7.2.1 Errores y nmero de condicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
7.2.2 Factorizacin LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
7.2.3 Factorizacin de Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

7.3 Mtodos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186


7.3.1 Mtodo de Jacobi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
7.3.2 Mtodo de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.3.3 Mtodo SOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

7.4 Ejercicios con Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

8 Interpolacin y aproximacin de funciones con Matlab 193


8.1 Polinomios en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.2 Interpolacin polinmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3 Interpolacin mediante splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
8.4 Diferencias divididas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
8.5 Ejercicios con Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

7
ndice general

9 Derivacin e integracin con Matlab 211


9.1 Derivacin con Matlab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
9.2 Integracin con Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
9.3 Ejercicios con Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

10 Resolucin de problemas de valor inicial con Matlab 223


10.1 Introduccin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
10.2 Mtodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
10.3 Mtodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
10.4 Mtodos multipaso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
10.5 Ejercicios con Matlab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

11 Resolucin de problemas de contorno con Matlab 235


11.1 ODEs lineales con condiciones en la frontera . . . . . . . . . . . . . . . . . . . . 235
11.2 Diferencias nitas para EDPs de evolucin . . . . . . . . . . . . . . . . . . . . . 237
11.2.1 Diferencias nitas para problemas parablicos . . . . . . . . . . . . . . . . . 237
11.2.2 Diferencias nitas para problemas hiperblicos . . . . . . . . . . . . . . . . . 242

11.3 Ejercicios con Matlab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

Bibliografa 247

8
Parte I

Contenidos tericos
Captulo 1

Introduccin a la modelizacin
matemtica en la Ingeniera

Uno de los principales logros de la Matemtica es su aplicabilidad a la solucin


de problemas reales. Algunos de estos problemas aparecen en fenmenos de la
naturaleza como, por ejemplo, la propagacin de ondas, la prediccin del tiempo,
y otros muchos aparecen en aplicaciones o procesos industriales y tcnicos como,
por ejemplo, el control de temperaturas, el diseo de una cadena de montaje, el
control de vuelo en un avin, el diseo de una aeronave, etc. Frecuentemente, a
la resolucin del problema se aaden otro tipo de factores, como pueden ser, la
inaccesibilidad de la maquinaria o procesos de corrosin qumica, que incrementan
la dicultad de obtener los resultados deseados y detectar averas. Las matemticas
juegan un papel fundamental en estos casos ya que permiten disear modelos que
se ajusten al comportamiento del problema, complementando el estudio terico del
modelo con un proceso de simulacin que permita optimizar los diseos y mejorar
los resultados obtenidos.

1.1 Modelizacin matemtica

En esta parte pretendemos dar respuesta, de forma introductoria, a las siguientes


preguntas:

Qu signica el trmino modelo?, cmo se construye un modelo? y qu es lo


que podemos conseguir con l?

A grandes rasgos, un modelo matemtico es aquel que utiliza las tcnicas ma-
temticas como, por ejemplo, ecuaciones, funciones, probabilidades, etc., para la

11
Captulo 1. Introduccin a la modelizacin matemtica en la Ingeniera

representacin de un determinado proceso o fenmeno del mundo real. Los modelos


matemticos pueden ser de diferentes tipos, como por ejemplo:

Estticos: Son modelos invariables en el tiempo. El modelo de una cons-


truccin, pieza o dispositivo en los que se relacionen sus variables de estado
principales con otras primarias puede considerarse como un modelo esttico.

Dinmicos: Son aquellos modelos que evolucionan con el tiempo. La mayora


de modelos tienen un comportamiento dinmico.

Continuos: Son los modelos que consideran las variables de estado del sistema
como continuas.
Discretos: Son aquellos que consideran las variables discretas. Los modelos
discretos son de gran utilidad en procesos intrnsecamente discretos como los
que aparecen en procesos econmicos o en diseo de procesos informticos.
Deterministas: Son modelos donde no hay incertidumbre y se puede conocer
de manera puntual la forma del resultado. Los principales modelos deter-
ministas de procesos continuos suelen estar representados por ecuaciones o
sistemas de ecuaciones diferenciales ordinarias o en derivadas parciales. Los
principales modelos deterministas de procesos discretos suelen estar repre-
sentados por ecuaciones o sistemas de ecuaciones en diferencias.

Estocsticos: Son modelos en los que no se conoce el resultado esperado, sino


su probabilidad y existe, por tanto, incertidumbre. Los modelos estocsticos
permiten extraer informacin acerca de una causa-efecto o hacer predicciones
sobre algn proceso. Estos modelos vienen representados por ecuaciones que
involucran probabilidades. Cuando un parmetro o variable involucra alea-
toriedad se le suele llamar variable aleatoria y, si se trata de una funcin,
proceso estocstico.

La solucin de los modelos matemticos se puede obtener por mtodos analticos


o por mtodos numricos. La resolucin analtica consiste en la obtencin de una
expresin que nos proporcione toda la informacin necesaria sobre dicha solucin.
La resolucin numrica consiste en encontrar una aproximacin de la solucin
buscada dentro de un orden de tolerancia.

Uno de los propsitos de un modelo es que permita predecir la respuesta de un


sistema dadas unas condiciones. Por una parte, el modelo debe ser una buena
aproximacin al sistema real e incorporar la mayor parte de sus caractersticas. Por
otra parte, no debe ser tan complejo que sea imposible de entender o experimentar
con l. Tambin hay que tener en cuenta el coste de la construccin y resolucin del
modelo, ya que en muchas ocasiones necesitaremos una respuesta rpida. Adems,
el modelo debe ser exible, esto es, deber ser capaz de responder adecuadamente
a cambios en el sistema.
12
1.1 Modelizacin matemtica

Resumiendo, para elaborar un modelo matemtico hay que tener en cuenta las
siguientes propiedades:

Fidelidad.
Complejidad.
Coste.
Flexibilidad.

Un buen modelo debe mantener el equilibrio entre realidad y simplicidad. Es con-


veniente empezar con un modelo sencillo e ir completndolo de forma gradual.

El proceso para elaborar un modelo matemtico es el siguiente:

Paso 1. Identicacin del problema: Identicar el problema real que hay que
resolver y determinar qu se quiere hacer o encontrar.
Paso 2. Formulacin del modelo matemtico: Determinar la informacin re-
levante y los datos que son de utilidad y hacer hiptesis. Bsicamente se
realizarn dos tareas:
a. Determinacin de variables: Identicar las variables involucradas en
el proceso, estableciendo si son parmetros, variables dependientes o
independientes, especicar las restricciones, etc.
b. Formulacin matemtica: Realizar hiptesis lo sucientemente sim-
ples para tratarse de manera matemtica. Formular el tipo de ecuacin
o procedimiento que mejor describe y se ajusta a la idealizacin del pro-
blema, teniendo en cuenta si existen diferentes alternativas al modelo.
Paso 3. Resolucin o interpretacin: Aplicar los conocimientos matemticos
para resolver o interpretar el modelo.
Paso 4. Vericacin y validacin: Comparar los datos obtenidos con datos
reales. Esto puede dar lugar a incorporar nuevas necesidades en el mode-
lo para mejorar los resultados. Si los resultados se alejan de los objetivos,
reajustar los parmetros y/o el modelo e iniciar el proceso.

En la Figura 1.1 podemos ver de forma esquemtica el procedimiento anterior.


Se empieza examinando el sistema e identicando el comportamiento particular
que deseamos predecir o explicar. Despus se identican las variables y se realizan
hiptesis lo sucientemente sencillas para poderlas formular matemticamente y
generar el modelo. Entonces se valida el modelo con las pruebas o ensayos necesa-
rios. Si los resultados son satisfactorios se puede usar el modelo para la nalidad
prevista. Si los resultados no son satisfactorios hay varias posibilidades. Se puede
decidir que el modelo necesita ser renado bien incorporando nuevas variables o
13
Captulo 1. Introduccin a la modelizacin matemtica en la Ingeniera

reestructurando parte del modelo. En algunos casos los resultados pueden ser tan
insatisfactorios que el problema original debe ser redenido porque era demasiado
ambicioso.

Resultados no aceptables
No, simplica No, simplica

Identica el Puedes S Puedes


Examina el comportamiento formular un resolver el
sistema y haz hiptesis modelo? modelo?

Valida el modelo

Aplica los Realiza S Son los No,


resultados al predicciones y/o resultados
sistema explicaciones precisos? rena

Figura 1.1: La naturaleza iterativa de la construccin de un modelo.

El proceso que se presenta en la Figura 1.1 no slo hace hincapi en la naturaleza


iterativa de la construccin del modelo, sino tambin introduce el equilibrio entre
la simplicacin y el renamiento del modelo. Generalmente se empieza con un
modelo simple y se evoluciona en el proceso de modelado, renndolo segn los
resultados obtenidos en el proceso de validacin. Si no se puede llegar a un mo-
delo adecuado o no puede resolverse, se debe simplicar. Si los resultados no son
sucientemente precisos se debe renar el modelo.

Debido generalmente a los altos costes en la fabricacin de prototipos, en los l-


timos aos se ha incrementado considerablemente el uso de la simulacin. El uso
de la simulacin antes de cambiar o elaborar un nuevo producto permite redu-
cir las posibilidades de que no se cumplan las especicaciones deseadas, eliminar
obstculos imprevistos, prevenir el hecho de utilizar excesivos o escasos recursos y
optimizar su rendimiento.

En particular, dentro del campo de la aeronutica, debido al alto coste de la cons-


truccin y las pruebas de vuelo en aviones reales, los modelos matemticos juegan
un papel fundamental. Estos modelos se usan conjuntamente con la simulacin
por ordenador, entre otras cosas, para evaluar las posibilidades de un prototipo
de avin y de aqu mejorar el diseo del mismo. Adems, una vez obtenido y vali-
dado el modelo, se puede utilizar para realizar simulaciones de vuelo, reconstruir
las condiciones de vuelo tras un accidente, estudiar efectos en la modicacin del
diseo, predecir la fatiga producida en cierta parte del fuselaje del avin, etc.

14
1.2 Algunos modelos diferenciales

1.2 Algunos modelos diferenciales

En este apartado veremos algunos ejemplos de modelos matemticos sencillos que


se basan en ecuaciones diferenciales ordinarias y en ecuaciones diferenciales en
derivadas parciales.

El primer ejemplo describe las oscilaciones de una masa sujeta por un muelle
obligada a moverse en lnea recta.

Ejemplo 1.1 (Sistema masa-muelle) Considerar un sistema mecnico consti-


tuido por una masa m que se puede trasladar a lo largo de una lnea horizontal,
por ejemplo, el eje x (ver Figura 1.2). La posicin de la masa se identica por la
coordenada de su centro de masas, P , que est atado a un muelle elstico, cuyos
extremos son A y P . Escribir las ecuaciones del movimiento del sistema mecnico
considerando los siguientes casos de dicultad creciente:

a) No hay rozamiento ni fuerzas externas y las oscilaciones son pequeas.


b) No hay rozamiento ni fuerzas externas pero las oscilaciones no son peque-
as, esto es, la ley de Hook no es vlida y hay que tener en cuenta fuerzas
proporcionales al cuadrado o al cubo del valor del desplazamiento.
c) Caso b) donde adems hay rozamiento y se aplican fuerzas externas depen-
dientes del tiempo.

k
A P

Figura 1.2: Sistema masa-muelle.

Solucin:
a) Las hiptesis que denen el sistema mecnico son las siguientes:
El sistema se comporta como una masa puntual cuya posicin se iden-
tica por la variable x.
La accin del muelle es una fuerza de la forma T = kx.
Las fuerzas de rozamiento son despreciables con respecto a la accin del
muelle.
15
Captulo 1. Introduccin a la modelizacin matemtica en la Ingeniera

Aplicando la Segunda ley de Newton de la mecnica clsica tenemos


d2 x
m = kx. (1.1)
d t2
El modelo matemtico es una ecuacin de evolucin para el siguiente vector
de variables:  
x
u= dx .
dt
k
Utilizando las variables anteriores y llamando v = dxdt , = m , la ecuacin
diferencial ordinaria de segundo orden (1.1) queda

dx
= v,
dt (1.2)

dv = x,
dt
que es un sistema de ecuaciones diferenciales lineales de primer orden. El
sistema (1.2) lo escribiremos habitualmente en la forma vectorial,
   
d x v
= .
dt v x

b) Si consideramos un orden superior en el desarrollo de Taylor de la fuerza de


restitucin, esto es,
F (x) = kx + x2
( suele ser un parmetro pequeo y, por tanto, la contribucin del trmino
x2 slo es relevante cuando x toma valores grandes, esto es, con oscilaciones

de gran amplitud). En este caso, considerando = m el sistema a resolver
ser    
d x v
= ,
dt v x + x2
cuya solucin analtica puede adquirir una complejidad considerable.
c) Si consideramos una fuerza de rozamiento en sentido opuesto al movimiento
proporcional a la velocidad, con coeciente de rozamiento , y una fuerza
externa, f (t), la fuerza total ser:
dx
F (x, t) = k x +  x2 + f (t),
dt
y denotando =
m y f(t) = fm
(t)
, el sistema a resolver ser
   
d x v
= ,
dt v x + x2 v + f(t)
que no tiene solucin analtica.


16
1.2 Algunos modelos diferenciales

En el siguiente ejemplo deducimos las ecuaciones que describen el movimiento de


un pndulo, particularizando posteriormente para el caso en que las oscilaciones
sean pequeas.

Ejemplo 1.2 (Movimiento de un pndulo) Escribir la ecuacin que describe


el movimiento de un pndulo de longitud l en el que cuelga una bola de masa
m y que oscila sin rozamiento bajo la accin de la gravedad como un sistema de
ecuaciones diferenciales de primer orden. Escribir tambin la ecuacin aproximada
para oscilaciones pequeas.

Solucin:


Figura 1.3: Pndulo.

El movimiento de un pndulo viene descrito por la Segunda ley de Newton. A


partir de la Figura 1.3, podemos plantear las ecuaciones

d2 (l)
m = mg sen(), (0) = 0 ,  (0) = 0 ,
dt2
donde g es la constante gravitatoria y es el ngulo que forma con la vertical.
Simplicando y agrupando trminos se tiene

d2 g
2
= k sen(),
2
k= .
dt l

Si las oscilaciones son pequeas, podemos tomar sen()  y, llamando =  ,


los sistemas de ecuaciones de primer orden son
       
d d
= , = .
dt k 2 sen() dt k 2

17
Captulo 1. Introduccin a la modelizacin matemtica en la Ingeniera

El problema linealizado se corresponde con un oscilador armnico, cuya solucin


es fcil de obtener y viene dada por
0
(t) = 0 cos(kt) + sen(kt).
k

En cambio, la solucin del problema no lineal es bastante complicada y viene dada


en trminos de integrales elpticas de primera especie (cuyo valor hay que calcular
numricamente), por lo que lo ms sencillo y rpido suele ser resolver el sistema
de ecuaciones numricamente. 

Ejemplo 1.3 (Vibraciones) Bajo condiciones generales, las oscilaciones de una


cuerda de masa despreciable vienen descritas por la ecuacin de ondas,
 2 
2u 2 u
2
= .
t x2

Si en vez de una cuerda se tiene una membrana bidimensional, la ecuacin de


ondas se puede expresar como
 2 
2u u 2u
= 2
+ = 2 2 u .
t2 x2 y 2

Para placas rectangulares, las ondas transversales de pequea amplitud se pueden


describir mediante la ecuacin
 4 
2u u 4u 4u
= 2
+ 2 2 2 + 4 = 2 4 u .
t2 x4 x y y

Ejemplo 1.4 (Ecuaciones de los uidos) La ecuacin de continuidad para un


uido se escribe, para el campo de velocidades v, como
v = 0 .

La ecuacin de conservacin del momento para un uido Newtoniano se expresa


como
v
= g p + 2 v ,
t
donde es la densidad del uido, g la aceleracin de la gravedad, p la presin y
el coeciente de viscosidad.

La ecuacin de la conservacin de la energa es de la forma


dT
cp = 2 T + ,
dt
donde T es la temperatura, cp es el calor especco, el coeciente de conductividad
trmica y la funcin de disipacin viscosa.
18
1.3 Ecuaciones adimensionales

1.3 Ecuaciones adimensionales

En ocasiones, es interesante expresar los modelos en trminos de variables adi-


mensionales, con ello, se obtienen modelos que no dependen de las caractersticas
concretas del problema particular que se estudia.

Los ejemplos anteriores se pueden reescribir usando variables adimensionales. Este


procedimiento siempre se puede aplicar y es til. En algunos casos es necesario
escribir modelos en los que todas las variables, dependientes e independientes, estn
escritas en forma adimensional referidas a unas variables de referencia adecuadas.
stas se pueden elegir de forma que las nuevas variables tomen valores en los
dominios [0, 1] o [1, 1].

Las variables de referencia se pueden elegir considerando razones fsicas y/o geom-
tricas relacionadas con el sistema particular que se est modelizando. Tcnicamen-
te, si consideramos w cierta variable (dependiente o independiente), y suponemos
que los valores menor y mayor de w son, respectivamente, wm y wM , determi-
nados por medidas fsicas o geomtricas, podemos obtener la siguiente variable
adimensional:
w wm
w = , w [0, 1].
wM wm

Por ejemplo, si w representa la temperatura de un material slido, podemos supo-


ner wm = 0 y wM = wc , siendo wc la temperatura de fusin del slido.

En principio, la descripcin del modelo debera denir la evolucin dentro del


dominio [0, 1]. Si esto no ocurriera, el modelo tendra que ser analizado de forma
crtica.

Si w es una de las variables espaciales independientes, por ejemplo, x, y y z para


un sistema de dimensin nita, entonces podemos adimensionalizar tomando co-
mo variables de referencia el menor y mayor valor que toman cada una de ellas,
respectivamente, xm , ym , zm , y xM , yM , zM .

En algunos casos, puede ser til referenciar todas las variables con respecto a una
nica variable espacial, generalmente la que alcanza un valor mayor. Por ejemplo,
supongamos que xm = ym = zm = 0, y que yM = axM , y zM = bxM , con a, b < 1,
entonces,
xv yv zv
x = , y = , z = ,
xM xM xM
con x [0, 1], y [0, a], z [0, b].

Una cuestin ms delicada es la eleccin del tiempo de referencia. Tcnicamente,


si el tiempo inicial es t0 y t es el tiempo real, podemos tomar:
t t0
t = , t 0.
T c t0
19
Captulo 1. Introduccin a la modelizacin matemtica en la Ingeniera

Generalmente podemos tomar t0 = 0 y Tc es un parmetro con dimensiones de


tiempo que se elige para que se satisfagan ciertas condiciones.

De modo ilustrativo, vamos a adimensionalizar uno de los ejemplos estudiados en


el apartado 1.2.

Ejemplo 1.5 (Adimensionalizacin del modelo lineal muelle-masa) Con-


siderar el modelo descrito en el apartado a) del Ejemplo 1.1, en el que se aade
la siguiente hiptesis:

Se aplica una fuerza F en la direccin del eje x.

Obtener una ecuacin adimensionalizada para el modelo descrito.

Solucin:
En este caso, el modelo se puede escribir de la siguiente forma:
d2 x
m = F kx. (1.3)
dt2
Es natural tomar l = F/k, t = t/Tc , y x = x/l. Entonces la ecuacin (1.3) se
reescribe
m d2 x
= 1 x .
kTc2 dt2

Suponiendo
m m
=1 = Tc2 = ,
kTc2 k
se tiene
d 2 x
= 1 x ,
dt2
que es un modelo de segundo orden cuya evolucin se puede analizar en trminos
de unidades de Tc . 

1.4 Ejercicios resueltos

En el siguiente ejercicio, obtenemos el sistema de ecuaciones diferenciales de un


modelo simplicado que nos permite determinar la rbita de un satlite alrededor
de la Tierra.

Ejercicio 1.1 (rbita de un satlite) Un modelo simplicado para calcular la


rbita de un satlite alrededor de la Tierra consiste en suponer que la masa total
de la Tierra se encuentra concentrada en su centro de gravedad y que la nica
fuerza que interviene es la de la gravedad. Escribe las ecuaciones diferenciales que
describen el movimiento como un sistema de ecuaciones de primer orden.
20
1.4 Ejercicios resueltos

Solucin:
Consideramos un sistema de referencia en el que la Tierra se encuentra en el origen
de coordenadas y el movimiento tiene lugar en el plano X Y . Si la posicin del
satlite en el plano lo denotamos por r = (x, y), la ecuacin de Newton viene dada
por
d2 r r
m 2 = G M m , r(0) = r0 , r (0) = r0 ,
dt r3
donde G es la constante de gravitacin universal, M es la masa de la Tierra y m es
la masa del satlite. Posteriormente, en el Ejercicio 1.5 de este apartado veremos
que tomando las unidades adecuadas para medir la distancia y reescalando el
tiempo adecuadamente se obtiene la ecuacin adimensional,

d2 r r
= .
dt2 r3

Si denotamos por v = r = (vx , vy ), el sistema de ecuaciones diferenciales que se


pide es:



x = vx ,

x

vx = 2 ,
(x + y 2 )3/2
(1.4)

y = vy ,

y

vy = 2 .
(x + y 2 )3/2

Nota: Este problema todava tiene solucin analtica, aunque viene dada en forma
implcita (por lo que para obtener la trayectoria hay que recurrir necesariamente
a mtodos numricos). En la prctica se necesita calcular las trayectorias con gran
precisin y, por tanto, hay que considerar modelos ms sosticados (el efecto debido
a que la Tierra es achatada, la inuencia del Sol, de la Luna, efectos relativistas,
etc.) que obviamente dan lugar a ecuaciones que no tienen solucin analtica y, por
tanto, la nica forma de poder calcular las trayectorias de los satlites es mediante
mtodos numricos.

Por ejemplo, un modelo un poco ms realista que tiene en cuenta el trmino


dominante del efecto del achatamiento de la Tierra viene dado por

d2 r r r
= ,
dt 2 r3 r5

donde es una constante que para el caso de la Tierra tiene un valor del orden
de 103 . Este problema ya no tiene solucin analtica y hay que resolverlo
numricamente. 

21
Captulo 1. Introduccin a la modelizacin matemtica en la Ingeniera

El siguiente ejercicio trata sobre la modelizacin del fenmeno de difusin del calor.

Ejercicio 1.2 (Modelo lineal de difusin del calor) Consideremos el mode-


lo lineal unidimensional de difusin del calor en una barra. Las hiptesis que de-
nen el modelo mecnico son las siguientes:

El estado del sistema se describe por la temperatura u = u(x, t) a lo largo del


eje de la barra que podemos identicar por la variable x [0, 1]. Se desprecian
variaciones ortogonales a los ejes de la barra, ya que las paredes de la barra
estn perfectamente aisladas.
El ujo de calor, q, por unidad de rea es proporcional al gradiente de tem-
peraturas:
u
q = h0 , (1.5)
x
donde h0 es el coeciente de conduccin del calor.
Las propiedades materiales del conductor se identican por el coeciente de
conduccin del calor, h0 , y el calor especco c0 .

Escribe las ecuaciones que describen dicho modelo.

Solucin:
El modelo matemtico se puede obtener igualando el ujo neto de calor en el
elemento de volumen a la velocidad de crecimiento de la capacidad calorca en el
volumen. Sean q y q + , respectivamente, los ujos de calor entrante y saliente por
unidad de rea (ver Figura 1.4). El equilibrio anterior lo podemos formular como
u
q
c0 A dx = A q + q = A dx, (1.6)
t x
donde A es el rea de una seccin perpendicular al eje de la barra.

dx

q q+

Figura 1.4: Difusin en una dimensin espacial.

Usando la ecuacin (1.5) en (1.6) se tiene:


u 2u h0
= k0 2 , k0 = .
t x c0
22
1.4 Ejercicios resueltos

Para modelizar la difusin de calor en una barra tridimensional prismtica homo-


gnea se tiene el modelo siguiente
 2 
u u 2u 2u
= k0 + + = k0 2 u ,
t x2 y 2 z 2

que es una ecuacin de difusin multidimensional.

El modelo unidimensional anterior tambin se puede utilizar para describir la


distribucin de temperaturas estacionaria, que se obtiene igualando a cero la parte
derecha de la ecuacin,
d2 u
k0 2 = 0.
dx
Y en varias dimensiones se tiene

2 u = 0 ,

que es la ecuacin de Laplace. Una ecuacin similar a sta es la ecuacin de Poisson,

2 u = f ,

que es una ecuacin muy utilizada en problemas de electrosttica.

Estas ecuaciones se pueden tratar mediante el mtodo de separacin de variables


si el recinto donde se estudian y las condiciones de contorno son sencillas. Para
recintos ms complejos, el problema se ha de tratar numricamente. 

Una generalizacin del modelo unidimensional de la difusin del calor visto en el


ejercicio anterior a un modelo no lineal la proponemos a continuacin.

Ejercicio 1.3 (Modelo no lineal de difusin del calor) Cuando se modeliza


el fenmeno del ujo de calor se puede introducir la no linealidad. Por ejemplo,
si el coeciente del ujo de calor depende de la temperatura, esto es, h = h(u).
Escribe la ecuacin no lineal que describe dicho modelo.

Solucin:
En este caso, la ecuacin de equilibrio para el ujo de calor genera el siguiente
modelo:  
u u h(u)
= k(u) , k(u) = .
t x x c0


El siguiente ejercicio est relacionado con el modelo de difusin del calor visto
en el Ejercicio 1.2. En l, consideramos un modelo matemtico capaz de describir
la difusin de un contaminante de un uido en un espacio unidimensional. Como
veremos, se obtendr una ecuacin de evolucin anloga a la del Ejercicio 1.2.
23
Captulo 1. Introduccin a la modelizacin matemtica en la Ingeniera

Ejercicio 1.4 (Modelo lineal de difusin de un contaminante) Considera un


conducto lleno de un uido en reposo y un contaminante que se difunde en el con-
ducto en la direccin x del eje del conducto. Las hiptesis que denen el modelo
mecnico son las siguientes:
La cantidad fsica que dene el estado del sistema es la concentracin del
contaminante:
c = c(x, t) : [0, l] [t0 , T ] R+ .
Las variaciones de c a lo largo de coordenadas ortogonales al eje x son des-
preciables.
La densidad del contaminante la indicaremos por 0 y la supondremos cons-
tante.
No hay dispersin o inmersin de contaminante en las paredes.
El uido es estacionario, mientras que la velocidad de difusin del contami-
nante se describe por un modelo fenomenolgico que establece que la veloci-
dad de difusin es directamente proporcional al gradiente de c e inversamente
proporcional a c.

Obtn la ecuacin que describe el modelo.

Solucin:
El modelo de evolucin, es decir, una ecuacin de evolucin para c se puede obte-
ner utilizando la ecuacin de conservacin de la masa. Para derivar tal ecuacin,
consideremos, teniendo en cuenta la Figura 1.4, el ujo q = q(x, t) a lo largo del
conducto y sean q y q + los ujos entrante y saliente, respectivamente. Bajo las
condiciones de regularidad adecuadas, que son consistentes con el sistema fsico,
tenemos que la relacin entre los ujos anteriores viene dada por
q
q+ = q + dx.
x

Una ecuacin de equilibrio se puede obtener igualando la cantidad de ujo neto al


incremento de masa en el elemento de volumen A dx, siendo A la seccin del con-
ducto. Como q = Acv, donde v es la velocidad de difusin, obtenemos la siguiente
ecuacin:
c (cv)
0 A dx + A dx = 0. (1.7)
t x
Teniendo en cuenta las hiptesis anteriores, la ecuacin (1.7) se puede escribir de
la siguiente forma:
h0 c
v= , (1.8)
c x
siendo h0 el coeciente de difusin.
24
1.4 Ejercicios resueltos

Sustituyendo la ecuacin (1.8) en (1.7), tenemos


c 2c h0
= k0 2 , k0 = ,
t x 0
que es un modelo lineal. 

Ejercicio 1.5 (Modelo adimensional para la rbita de un satlite) Escri-


be las ecuaciones diferenciales adimensionalizadas correspondientes al modelo del
Ejercicio 1.1.

Solucin:
En el Ejercicio 1.1 obtuvimos las ecuaciones
d2 r r
= G M , r(0) = r0 , r (0) = r0 . (1.9)
dt2 r3

Tomamos una longitud de referencia, l, que podra ser, por ejemplo, la distancia
inicial del satlite a la Tierra, y denimos las variables adimensionalizadas r = r/l
y t = t/Tc . Entonces la ecuacin (1.9) se reescribe
l d2 r l r
2
= G M 3 3 ,
2
Tc dt l r 
es decir,
d2 r G M Tc2 r
= .
dt2 l3 r 3

Para determinar Tc , suponemos


G M Tc2 l3
=1 = Tc2 = ,
l3 GM
y obtenemos la ecuacin adimensionalizada
d2 r r
= , (1.10)
dt2 r 3
que representa una ecuacin (vectorial) diferencial de segundo orden. Si denotamos
por v = r = (vx , vy ), el sistema de ecuaciones diferenciales de primer orden que
se pide es (1.4). 

Ejercicio 1.6 (Modelo adimensional lineal de difusin de un contami-


nante) Obtn un modelo adimensional para el modelo descrito en el Ejercicio
1.4, teniendo en cuenta que la ecuacin en trminos de variables reales se puede
escribir como:
c 2c
= k0 2 . (1.11)
t x
25
Captulo 1. Introduccin a la modelizacin matemtica en la Ingeniera

Solucin:
Es natural tomar c = c/cM , t = t/Tc , y x = x/l. Entonces la ecuacin (1.11)
se reescribe
1 c k0 2 c

= 2 .
Tc t l x2
Suponiendo
k 0 Tc l2
=1 = Tc = ,
l2 k0
se tiene
c 2 c
= . (1.12)
t x2

En particular, la ecuacin (1.12) que se obtiene es el mismo modelo para describir


el fenmeno de difusin en distintos medios. De hecho, slo vara Tc al cambiar
las propiedades del medio. Esto signica que la evolucin es cualitativamente la
misma, pero el sistema evoluciona en el tiempo con diferentes velocidades escaladas
respecto a Tc . 

Ejercicio 1.7 (Ecuaciones adimensionales para los uidos) Considera la ecua-


cin de continuidad
v = 0 ,
y la ecuacin de conservacin del momento
v
= g p + 2 v .
t
Reescribe estas ecuaciones utilizando variables adimensionales.

Solucin:
Estas ecuaciones contienen tres dimensiones bsicas, la masa, la longitud y el
tiempo. Todas las variables pueden adimensionalizarse utilizando, por ejemplo, la
densidad y dos constantes de referencia, que pueden ser caractersticas del uido
como, U , una velocidad de referencia (como puede ser la velocidad a la entrada)
y L una longitud de referencia (como puede ser el dimetro de un cuerpo).

Las variables adimensionales que tomaremos son


v
v = ,
U
x y z
x = , y = , z = ,
L L L
tU p + gz
t = , p = .
L U 2

26
1.5 Ejercicios propuestos

Se cumple, por ejemplo, que


u (U u ) U u
=
= .
x (Lx ) L x
As, las ecuaciones adimensionales del movimiento del uido son
v = 0 ,
v
= p + 2 v ,
t U L
que introduciendo el nmero de Reynolds,
U L
Re = ,

se expresan como
v = 0 ,
v 1 2

= p + v .
t Re


1.5 Ejercicios propuestos

1. Adimensionaliza la ecuacin del muelle


d2 x
m = k x, x(0) = x0 , x (0) = v0
d t2
y resulvela. Considera el caso particular: m = 0.3 Kg, k = 3N/m, x0 =
30 cm, v0 = 0.2 m/s y escribe la solucin, x(t), con sus unidades.
2. Adimensionaliza la ecuacin de conservacin de la energa para un uido
dT
cp = 2 T + ,
dt
de forma similar a como se ha hecho para las ecuaciones de continuidad y de
conservacin del momento. Para ello, considera la temperatura adimensional
T = T /T0 , donde T0 es una temperatura de referencia.
3. La siguiente ecuacin diferencial constituye un modelo para la dinmica de
las reacciones qumicas en un reactor de ujo continuo:
C 2C C
u = D 2 kC ,
x x t
donde u es la velocidad, D es el coeciente de difusin, k es el ritmo de
reaccin, x es la distancia a lo largo del reactor y C es la concentracin
(adimensional) de un determinado compuesto qumico en el reactor.
27
Captulo 1. Introduccin a la modelizacin matemtica en la Ingeniera

a) Determina las dimensiones apropiadas para D y k.


b) Escribe esta ecuacin en forma adimensional utilizando una longitud
L y la velocidad media V como magnitudes para denir las variables
adimensionales.

4. La ecuacin diferencial que describe el movimiento bidimensional en el plano


X Y de un uido compresible no viscoso es

2 2

2
+ u + v2 + u 2 a2
t2 t x2
2
2 2
+ v a2 2
+ 2u v = 0,
y xy
donde es el potencial de velocidades y a es la velocidad del sonido en el
gas (variable). Adimensionaliza esta relacin, utilizando como parmetros L
para longitud y a0 para la velocidad de entrada del sonido para denir las
variables adimensionales.
5. La ecuacin diferencial que describe las vibraciones de pequea amplitud
y(x, t) de una viga tiene la forma

2y 4y
A 2
+EI 4 =0 ,
t x
donde es la densidad del material, A es el rea de la seccin recta, I es el
momento de inercia y E el mdulo de Young. Utiliza las cantidades , E y
A para adimensionalizar y, x y t, y escribe la ecuacin diferencial en forma
adimensional.

28
Captulo 2

Resolucin de sistemas de
ecuaciones lineales

2.1 Introduccin

Muchos problemas de ingeniera, como veremos ms adelante, requieren plantear


y resolver un sistema de ecuaciones algebraicas.

Se llama sistema lineal de n ecuaciones y n incgnitas a un conjunto de n igual-


dades de la forma

a11 x1 + a12 x2 + a13 x3 + + a1n xn = b1

a21 x1 + a22 x2 + a23 x3 + + a2n xn = b2
..
.



an1 x1 + an2 x2 + an3 x3 + + ann xn = bn

donde aij , i, j = 1, 2, . . . , n, son los coecientes del sistema, xi , i = 1, 2, . . . , n,


las incgnitas y bi , i = 1, 2, . . . , n, los trminos independientes.

Habitualmente usaremos la notacin matricial:



a11 a12 a13 a1n x1 b1
a21 a22 a23 a2n x2 b2

.. .. .. .. .. .. = .. .
. . . . . . .
an1 an2 an3 ann xn bn
        
A x b

29
Captulo 2. Resolucin de sistemas de ecuaciones lineales

As, un sistema de ecuaciones lineales tiene la forma genrica

Ax = b, (2.1)

donde A es la matriz de coecientes del sistema y b el vector de trminos indepen-


dientes.

Si A es invertible, formalmente la solucin de este sistema se puede obtener como

x = A1 b ,

pero en la mayora de ocasiones no resulta conveniente calcular la matriz inversa,


A1 , para resolver el sistema y se recurre a tcnicas alternativas.

Nosotros en particular estudiaremos dos tipos de mtodos para resolver los sistemas
de ecuaciones lineales: mtodos directos y mtodos iterativos. Los mtodos directos
obtienen la solucin exacta de (2.1) siempre que todas las operaciones se puedan
hacer sin errores de redondeo, es decir, trabajemos con aritmtica exacta. Los
mtodos iterativos construyen una sucesin de aproximaciones a la solucin exacta
del sistema.

2.2 Mtodos directos para la resolucin de sistemas


lineales

Generalmente, los mtodos directos se basan en transformar el sistema de ecuacio-


nes inicial en un sistema equivalente (o sea, que tenga las mismas soluciones) que se
pueda resolver ms fcilmente. Para ello, se hace uso de las siguientes propiedades:

Dado un sistema de ecuaciones, si a una de las ecuaciones se le suma una


combinacin lineal de las ecuaciones restantes, el sistema de ecuaciones re-
sultante es equivalente al sistema inicial.
Si se intercambian las ecuaciones de un sistema de ecuaciones, el sistema
resultante es equivalente al inicial.

Si se multiplica una ecuacin de un sistema por una constante no nula, se


obtiene un sistema equivalente.

Estas propiedades son las que utiliza el mtodo de triangularizacin de Gauss.

30
2.2 Mtodos directos para la resolucin de sistemas lineales

2.2.1 Algoritmo de Gauss


Recordemos cmo funciona este mtodo con un ejemplo.

Ejemplo 2.1 Resolver el sistema



10 7 0 x1 7
3 2 6 x2 = 4 , (2.2)
5 1 5 x3 6

utilizando el mtodo de triangularizacin de Gauss.

Solucin:
Si en el sistema (2.2) restamos 3/10 veces la primera ecuacin a la segunda
obtenemos el sistema

10 7 0 x1 7
0 0.1 6 x2 = 6.1 .
5 1 5 x3 6

Ahora restamos 5/10 veces la primera ecuacin a la tercera y obtenemos el sistema


equivalente
10 7 0 x1 7
0 0.1 6 x2 = 6.1 .
0 2.5 5 x3 2.5

Por ltimo, si a la tercera ecuacin la restamos 2.5/0.1 veces la segunda se llega


al sistema
10 7 0 x1 7
0 0.1 6 x2 = 6.1 .
0 0 155 x3 155

Con lo que hemos llegado a un sistema de ecuaciones equivalente al inicial cuya


matriz de coecientes es una matriz triangular superior,

10x1 7x2 =7
0.1x2 + 6x3 = 6.1 .

155x3 = 155

Este tipo de sistemas tiene una solucin sencilla. Se empieza despejando la ltima
ecuacin, la solucin obtenida se utiliza para despejar la penltima ecuacin y as
sucesivamente.

31
Captulo 2. Resolucin de sistemas de ecuaciones lineales

Aplicando dicho procedimiento al sistema que acabamos de obtener, resulta,

155x3 = 155 x3 = 1
0.1x2 + 6x3 = 6.1 0.1x2 + 6 = 6.1 x2 = 1
10x1 7x2 = 7 10x1 + 7 = 7 x1 = 0

El mtodo utilizado para resolver el sistema cuya matriz de coecientes es trian-


gular superior se llama el mtodo de sustitucin regresiva. Si la matriz resultante
de la triangularizacin fuese triangular inferior, se puede obtener la solucin del
sistema mediante un procedimiento similar que, en este caso, se llama sustitucin
progresiva.

De forma esquemtica, el algoritmo de Gauss se estructura del siguiente modo:


Dado un sistema Ax = b, se considera la matriz ampliada del sistema

(A|b) ,

y se realizan los siguientes pasos:

Para cada la i se elige un pivote, aii . Si aii = 0 se intercambian las.


Se anulan los elementos por debajo del pivote.
Se procede de forma anloga hasta la la n-sima.

El sistema resultante es equivalente al de partida y su matriz asociada es


triangular superior. Para resolver este sistema se puede usar el mtodo de
sustitucin regresiva.

2.2.2 Factorizacin LU de una matriz


Denotemos por L y U a matrices triangulares inferiores y superiores dadas por

l11 0 0 u11 u12 u1n
.. ..
l21 l22 . 0 u22 .
L= . ..
,
U = . ..
.

.. .. ..
. . 0 .. . . un1,n
ln1 ln2 lnn 0 0 unn

(L y U vienen de las palabras inglesas lower y upper).

Como hemos visto, los sistemas Lx = b y U x = b son inmediatos de resolver y, por


tanto, si podemos descomponer la matriz A en la forma A = LU podremos resolver
32
2.2 Mtodos directos para la resolucin de sistemas lineales

nuestro sistema en dos pasos. Si la matriz A es no singular esta descomposicin es


siempre posible (en algunos casos se requiere un cambio de las y/o columnas).

El siguiente paso es escribir los coecientes lij , uij en trminos de los coecientes
aij . Como el problema est sobredeterminado (hay ms coecientes lij , uij que
coecientes aij ) tenemos cierta libertad en la eleccin de algunos de stos. Nosotros
tomaremos siempre lii = 1, que se corresponde con el llamado mtodo de Doolite
(tambin es posible tomar, por ejemplo, uii = 1 o uii = lii ).

Las siguientes frmulas recursivas nos permiten obtener los coecientes de las
matrices L y U a partir de los coecientes de la matriz A:

u1j = a1j ,
i1

uij = aij lik ukj , j i, i>1,
k=1
lii = 1,
 i1

1 
lij = aij lik ukj , j<i.
ujj
k=1

Este algoritmo permite obtener cada coeciente a partir de coecientes que ya han
sido calculados. Si ujj = 0 o toma valores muy pequeos aparecer una singulari-
dad y hay que reordenar la matriz A para evitar que esto ocurra.

Vamos a ilustrar con un ejemplo sencillo los pasos a seguir para obtener esta
descomposicin.

Ejemplo 2.2 Hallar la descomposicin LU de la matriz



10 7 0
A = 3 2 6 ,
5 1 5

que es la matriz de coecientes del sistema (2.2).

Solucin:
La matriz A se puede descomponer como el producto

A = L1 A1 ,

con
1 0 0 10 7 0
L1 = 10
3
1 0 , A1 = 0 0.1 6 .
0 0 1 5 1 5

33
Captulo 2. Resolucin de sistemas de ecuaciones lineales

Por otra parte


A1 = L2 A2 ,
con
1 0 0 10 7 0
L2 = 0 1 0 , A2 = 0 0.1 6 .
5
10 0 1 0 2.5 5

Por ltimo,
A2 = L3 U ,
con
1 0 0 10 7 0
L2 = 0 1 0 , U = 0 0.1 6 .
0 2.5
0.1 1 0 0 155

Con lo que tenemos que


A = L1 L2 L3 U = LU ,
donde U es la matriz triangular superior resultante al aplicar el mtodo de Gauss
y
1 0 0
1 0
L = 10 3
,
5
10 2.5
0.1 1
es una matriz triangular inferior, cuyos elementos son los factores utilizados para
triangularizar la matriz A. 

Si al aplicar el mtodo de Gauss no hace falta intercambiar las, este proceso es


general y permite descomponer una matriz cuadrada A como producto de una
matriz triangular inferior, L, por una matriz triangular superior, U .

A partir de la descomposicin LU de A, se puede resolver el sistema Ax = b del


siguiente modo:
Ax = b L
U x = b.
y

Se resuelve Ly = b por el mtodo de sustitucin progresiva y posteriormente se


resuelve el sistema U x = y por el mtodo de sustitucin regresiva.

34
2.2 Mtodos directos para la resolucin de sistemas lineales

2.2.3 Pivotacin
Los elementos de la diagonal de la matriz U de la descomposicin LU de la matriz A
se llaman pivotes. En el algoritmo de Gauss se realizan divisiones por los distintos
pivotes, de este modo, el algoritmo no podr llevarse a cabo si alguno de los pivotes
es cero. Adems, es lgico pensar que si alguno de los pivotes es muy pequeo se
producirn errores.

Veamos un ejemplo.

Ejemplo 2.3 La solucin exacta del sistema



10 7 0 x1 7
3 2.099 6 x2 = 3.901 ,
5 1 5 x3 6

es x = (0, 1, 1). Resolver el sistema mediante el mtodo de Gauss con una arit-
mtica de 5 dgitos signicativos y comparar la solucin obtenida con la solucin
exacta.

Solucin:
Aplicando el mtodo de Gauss con 5 dgitos signicativos tenemos

10 7 0 7 10 7 0 7
3 2.099 6 3.901 0 0.001 6 6.001
5 1 5 6 0 2.5 5 2.5

10 7 0 7
0 0.001 6 6.001 .
0 0 1.5005 104 1.5004 104

Al hacer el clculo para la sustitucin regresiva, se tiene


1.5004 104
x3 = = 0.99993 ,
1.5005 104
que comparado con el resultado exacto, x3 = 1, nos da un resultado aceptable.
Para x2 , se tiene
0.001x2 + (6)(0.99993) = 6.001 ,
o sea,
x2 = 1.5 ,
que ya no es un resultado aceptable, comparado con el valor exacto x2 = 1. Este
problema se debe principalmente a la propagacin del error debida a la divisin por
el pivote 0.001. Esto se resuelve intercambiando la segunda ecuacin por la tercera,
ya que al realizar la triangularizacin ya no se obtiene un pivote tan pequeo. Esta
estrategia de intercambiar las se conoce como pivotacin. 
35
Captulo 2. Resolucin de sistemas de ecuaciones lineales

Una estrategia que se suele utilizar para evitar estos problemas del algoritmo de
Gauss es la estrategia de pivotacin parcial, que consiste en tomar como pivote en
el paso k-simo del algoritmo de triangularizacin el elemento ms grande en valor
absoluto en la parte no reducida de la columna k-sima. La la que contiene este
pivote se intercambia con la la k-sima para poner el pivote en la posicin (k, k)
de la matriz. Los mismos intercambios se han de llevar a cabo en el vector b.

Otra estrategia, conocida como pivotacin completa, consiste en elegir como pivote
en el paso k-simo al elemento de mximo valor absoluto de la submatriz activa
(la que resulta de eliminar las k 1 primeras las y primeras columnas). La la
que contiene a este pivote se intercambia con la la k-sima y la columna que lo
contiene con la columna k-sima para poner el pivote en la posicin (k, k) de la
matriz. Hay que tener en cuenta que el cambio de la tambin se realiza sobre el
vector b. La pivotacin completa se utiliza menos que la parcial, ya que, aunque
se obtienen mejores resultados, es mucho ms costosa.

2.2.4 Errores y nmero de condicin


Cuando se obtiene la solucin numrica de un sistema de ecuaciones, se obtiene un
valor aproximado de la solucin, x , mientras que la solucin exacta, x, satisface

x = A1 b .

Usualmente se tienen dos magnitudes que nos dan una idea del error cometido, el
error, denido como
e = x x ,
y el residuo
r = b Ax .
Estas dos magnitudes no tienen porqu ser pequeas al mismo tiempo si se trabaja
con aritmtica nita.

Por otra parte, cuando se estn resolviendo problemas prcticos los coecientes
de un sistema de ecuaciones y los trminos independientes estn afectados de un
cierto error. Por ello, es interesante preguntarse cmo se puede medir lo que cambia
la solucin, x, de un sistema si se hacen cambios en A y/o en b.

Consideramos
Ax = b ,
y el sistema
(A + A)x = b + b .

Deniendo x = x x, se tiene que

x = A1 (A x + b). (2.3)
36
2.2 Mtodos directos para la resolucin de sistemas lineales

Introducimos el concepto de norma matricial


 
Ax
A max , x = 0 ,
x

que cumple propiedades similares a la norma de vectores.

Tomando normas en la ecuacin (2.3) se tiene

x A1 (A x + b), (2.4)

o sea,  
x A b
A1 A + . (2.5)
x A A x

A la cantidad  
(A) = A A1  ,
se le llama nmero de condicin de la matriz A y nos da una idea de la propagacin
del error en la solucin de un sistema de ecuaciones lineales.

El nmero de condicin es un nmero difcil de calcular y se utilizan estimaciones


para este nmero. Generalmente el nmero de condicin de una matriz es muy
alto si la matriz es casi singular.

2.2.5 Matrices especiales


En este apartado veremos cmo es posible simplicar los mtodos que hemos visto
hasta ahora cuando la matriz de coecientes tiene una estructura particular.

Matrices tridiagonales

Un caso especial de sistemas de ecuaciones que aparecen frecuentemente son aque-


llos cuya matriz de coecientes es tridiagonal, o sea, un sistema de ecuaciones con
la siguiente estructura
x
d1

b1 c1 0 1
a 1 b2 c 2 x2
d2

.. ..

=
. .
. (2.6)
an2 bn1 cn1 xn1 dn1
0 an1 bn xn dn

37
Captulo 2. Resolucin de sistemas de ecuaciones lineales

Para estos sistemas, la descomposicin LU adopta una forma simple, ya que po-
demos considerar

1 0 0 0 u11 u12 0 0
.. ..
l21 1 0 . 0 u22 u23 .

.
L = 0 ... ... ..
. 0 , U = .. ..
.
..
.
..
. 0 .

. .. . .. ..
.. . 1 0 .. . . un1,n
0 0 ln,n1 1 0 0 0 unn

Si realizamos el producto de matrices LU e igualamos a la matriz A obtenemos el


siguiente esquema recursivo

ui,i+1 = ci ,
ai
li+1,i = , i = 1, . . . , n 1 ,
uii
u11 = b1 ,
uii = bi li,i1 ui1,i , i = 2, . . . , n .

Matrices simtricas denidas positivas

Recordemos que una matrix A es simtrica si cumple que A = AT . Adems diremos


que una matriz es denida positiva si cumple

xT Ax > 0 , x = 0 .

Si A es una matriz simtrica y denida positiva se puede encontrar una matriz


triangular inferior, L, de forma que

LLT = A .

Esta descomposicin se denomina descomposicin de Cholesky de la matriz A.

Veamos cmo se puede calcular la matriz L. Para ello, consideremos un caso 3 3,



l11 0 0 l11 l21 l31 a11 a12 a13
l21 l22 0 0 l22 l32 = a21 a22 a23 ,
l31 l32 l33 0 0 l33 a31 a32 a33

38
2.2 Mtodos directos para la resolucin de sistemas lineales

calculando el producto, se tienen las relaciones


2
a11 = l11 ,
2 2
a22 = l21 + l22 ,
2 2 2
a33 = l31 + l32 + l33 ,
a12 = l11 l21 ,
a13 = l11 l31 ,
a23 = l21 l31 + l22 l32 ,
o sea,
1
l11 = (a11 ) 2 ,
a12
l21 = ,
l11

1
l22 = a22 l21
2 2
,
a13
l31 = ,
l11
a23 l21 l31
l32 = ,
l22

1
l33 = a33 l31
2
l322 2
.

Para una matriz n n, los elementos de L se pueden calcular mediante las expre-
siones
1
l11 = (a11 ) 2 ,
a1j
lj1 = , j = 2, . . . , n
l11
 i1
 12

lii = aii 2
lik ,
k=1
 i1

1 
lji = aij lik ljk , j = i + 1, i + 2, . . . , n .
lii
k=1

Si se tiene un sistema
Ax = b ,
cuya matriz de coecientes es simtrica y denida positiva, para su resolucin se
puede obtener la factorizacin de Cholesky de A, A = LLT , con lo que se tiene
LLT x = b .

As, primero se resuelve Ly = b mediante el mtodo de sustitucin progresiva y,


posteriormente, LT x = y mediante el mtodo de sustitucin regresiva.
39
Captulo 2. Resolucin de sistemas de ecuaciones lineales

Algunas ventajas e inconvenientes del mtodo son:

Menor coste (aproximadamente la mitad) que utilizar el algoritmo de Gauss


convencional.

No utiliza tcnicas de pivotamiento.


El algoritmo es estable (errores de redondeo pequeos).

Tenemos que comprobar la simetra de la matriz (fcil) y que sta es denida


positiva (difcil).

2.3 Mtodos iterativos

Los mtodos iterativos para la resolucin de sistemas de ecuaciones lineales suelen


utilizarse para problemas de gran dimensin, ya que usan menos memoria y suelen
ser ms rpidos que los mtodos directos. A continuacin veremos alguno de los
mtodos iterativos ms sencillos.

Se parte de un sistema de ecuaciones de la forma

Ax = b . (2.7)

Para resolver el sistema lineal buscaremos una sucesin x0 , x1 , . . ., que converja


a la solucin de (2.7). As, diremos que el mtodo iterativo converge si existe un
vector x tal que
lm xk = x,
k+

tal que Ax = b.

Para construir los mtodos iterativos realizamos la siguiente descomposicin de la


matriz de coecientes
A=DEF ,
donde D es la diagonal de A, E es la parte estrictamente triangular inferior de
A y F es la parte estrictamente triangular superior. Se supone que los elementos
de D son todos no nulos.

2.3.1 Algoritmo de Jacobi


Si en el sistema Ax = b, se cumple que aii = 0, i = 1, 2, . . . , n, de la ecuacin
i-sima
ai1 x1 + + aii xi + + ain xn = bi ,

40
2.3 Mtodos iterativos

podemos despejar xi , obteniendo



n
1
xi = bi aij xj , i = 1, 2, . . . , n.
aii
j=1,j=i

El mtodo de Jacobi parte de una solucin inicial x0 , y para i = 1, . . . , n, calcula



 n
1 bi ,
xki = aij xk1
j k = 1, 2, . . . (2.8)
aii
j=1,j=i

Para cada i = 1, . . . , n, (2.8) se puede reescribir como



n
aii xki = bi aij xk1
j
, k = 1, 2, . . .
j=1,j=i

En forma matricial el mtodo de Jacobi es de la forma

Dxk = (E + F )xk1 + b, k = 1, 2, . . .

O equivalentemente

xk = D1 (E + F )xk1 + D1 b, k = 1, 2, . . .

Para dar condiciones de convergencia para este mtodo se introducen las matri-
ces diagonal dominantes. De este modo, se dice que una matriz cuadrada A es
estrictamente diagonal dominante si para cada i = 1, 2, . . . , n, satisface
n

|aii | > |aij | .
j=1,j=i

Teorema 2.1 Si A es estrictamente diagonal dominante, entonces la sucesin que


resulta de la iteracin de Jacobi converge a la solucin de Ax = b, cualquiera que
sea la solucin inicial, x0 .

Observacin: Si A no es diagonal dominante se puede reordenar, intercambiando


las o columnas y puede que, de este modo, la matriz resultante lo sea.

41
Captulo 2. Resolucin de sistemas de ecuaciones lineales

2.3.2 Algoritmo de Gauss-Seidel


Otro mtodo similar al mtodo de Jacobi es el mtodo de Gauss-Seidel.

Hemos de tener en cuenta que en el mtodo de Jacobi para i = 1, . . . , n



n

1 ,
xki = bi aij xk1
j k = 1, 2, . . .
aii
j=1,j=i

para calcular xk2 se utiliza xk1


1 , pero xk1 ya se ha calculado. Si el mtodo es
convergente, es mejor usar x1 que xk1
k
1 . Con esta idea se obtiene el mtodo de
Gauss-Seidel, que es de la forma

n
1 b 1 ,
xk1 = a1j xk1
j k = 1, 2, . . .
a11 j=2
(2.9)
i1
 n
1 bi , i > 1, k = 1, 2, . . .
xki = aij xkj aij xk1
j
aii j=1 j=i+1

Este mtodo en forma matricial se escribe de la forma

(D E)xk = F xk1 + b . (2.10)

Anlogamente, se puede denir otro mtodo de Gauss-Seidel como sigue

(D F )xk = Exk1 + b . (2.11)

El siguiente resultado nos da una condicin para que este mtodo converja.

Teorema 2.2 Si A es estrictamente diagonal dominante, entonces la sucesin que


resulta de la iteracin de Gauss-Seidel converge a la solucin de Ax = b, cualquiera
que sea la solucin inicial x0 .

2.3.3 Algoritmos SOR y SSOR


El mtodo SOR (successive over relaxation) se basa en el mtodo de Gauss-Seidel
introduciendo un factor de escala que reduce ms rpidamente el error de la apro-
ximacin.

En primer lugar tomamos una iteracin de Gauss-Seidel



i1
 n
1 bi , i = 1, . . . , n,
xki = aij xkj aij xk1
j
aii j=1 j=i+1
42
2.3 Mtodos iterativos

y calculamos

xki = xk1
i + xki xk1
i , i = 1, . . . , n, (2.12)

donde es un parmetro que se elige para acelerar la convergencia.

Hemos de tener en cuenta lo siguiente:

Si w = 1, es el mtodo de Gauss-Seidel.
Si 0 < w < 1, se llama mtodo de subrelajacin. Puede usarse para obtener
convergencia cuando el mtodo de Gauss-Seidel no converge.

Si 1 < w, se llama mtodo de sobrerrelajacin, y se usa para acelerar la


convergencia cuando el mtodo de Gauss-Seidel converge.

La convergencia de este mtodo la garantiza el siguiente resultado.

Teorema 2.3 Si A es denida positiva y 0 < < 2, entonces la sucesin que


resulta de la iteracin del mtodo SOR converge a la solucin de Ax = b, cualquiera
que sea la solucin inicial, x0 .

Utilizando (2.12) y (2.10) tenemos



xk = xk1 + D1 b + Exk + F xk1 xk1 ,

y premultiplicando por la matriz D,

Dxk = (D D) xk1 + b + Exk + F xk1 .

Por tanto, el mtodo SOR admite la expresin matricial siguiente

(D E)xk = (F + (1 )D) xk1 + b .

Utilizando (2.12) y (2.11), se puede denir otro mtodo SOR de la forma

(D F )xk = (E + (1 )D)xk1 + b .

Un mtodo SOR simtrico, SSOR, se dene por las ecuaciones

(D E)xk1/2 = (F + (1 )D)xk1 + b ,
(D F )xk = (E + (1 )D)xk1/2 + b .

43
Captulo 2. Resolucin de sistemas de ecuaciones lineales

Ejemplo 2.4 La solucin del sistema lineal

4x1 + 3x2 = 24,


3x1 + 4x2 x3 = 30,
x2 + 4x3 = 24,

es (3, 4, 5)T . Utilizar los mtodos de Gauss-Seidel y SOR con = 1.25 para
resolver el sistema con una precisin de 7 decimales, tomando para ambos mtodos
x0 = (1, 1, 1)T .

Solucin:
Mediante el mtodo de Gauss-Seidel se obtienen los resultados de la siguiente
tabla,

k 0 1 2 3 7
xk1 1 5.2500000 3.1406250 3.0878906 3.0134110
xk2 1 3.8125000 3.8828125 3.9267578 3.9888241
xk3 1 5.0468750 5.0292969 5.0183105 5.0027940

Si utilizamos el mtodo SOR con = 1.25 se obtienen los siguientes resultados

k 0 1 2 3 7
xk1 1 6.3125000 2.6223145 3.1333027 3.0000498
xk2 1 3.5195313 3.9585266 4.0102646 4.0002586
xk3 1 6.6501465 4.6004238 5.0966863 5.0003486

Para este ejemplo se puede comprobar que el mtodo de Gauss-Seidel converge


con 34 iteraciones y el mtodo SOR con 14 iteraciones. 

2.4 Ejercicios resueltos

Ejercicio 2.1 Considera el siguiente sistema de ecuaciones lineales, Ax = b (la


solucin del sistema se incluye para comprobar los resultados):


4 1 0 x1 2 x1 1
1 4 1 x2 = 8 x2 = 2 .
0 1 4 x3 6 x3 1

44
2.4 Ejercicios resueltos

Resulvelo utilizando los siguientes mtodos directos, teniendo en cuenta que la


matriz A es tridiagonal simtrica y denida positiva:

a) Algoritmo de Gauss.
b) Factorizacin LU .
c) Factorizacin de Cholesky.

Solucin:

a) Algoritmo de Gauss.
Con ayuda de la matriz ampliada tenemos


4 1 0 2 4 1 0 2 4 1 0 2
1 4 1 8 0 15 4 34 0 15 4 34
0 1 4 6 0 1 4 6 0 0 56 56

y por sustitucin regresiva se obtiene la solucin.


b) Factorizacin LU .
Por ser una matriz tridiagonal consideraremos

1 0 0 u11 u12 0 u11 u12 0
l21 1 0 0 u22 u23 = l21 u11 l21 u12 + u22 u23 .
0 l31 1 0 0 u33 0 l32 u22 l32 u23 + u33

Igualando con la matriz A podemos calcular los coecientes lij , uij en la


siguiente secuencia

u11 = 4, u12 = 1, u23 = 1,


1
l21 u11 = 1 l21 = ,
4
15
l21 u12 + u22 = 4 u22 = ,
4
4
l32 u22 = 1 l32 = ,
15
56
l32 u23 + u33 = 4 u33 = ,
15
esto es

1 0 0 4 1 0
L = 14 1 0 , U = 0 15
4 1 .
0 15
4
1 0 0 56
15
45
Captulo 2. Resolucin de sistemas de ecuaciones lineales

Resolvemos ahora el sistema Ly = b por sustitucin progresiva, esto es



1 0 0 y1 2 y1 2
1 1 0 y2 = 8 y2 = 17 ,
4 2
0 15 1
4
y3 6 y3 56
15

y nalmente resolvemos el sistema U x = y por sustitucin regresiva



4 1 0 x1 2 x1 1
0 15 1 x2 = 17 x2 = 2 .
4 2
0 0 56
15 x3 56
15 x3 1

c) Factorizacin de Cholesky.
Por tratarse de una matriz simtrica denida positiva podemos aplicar la
descomposicin de Cholesky. Adems, por ser una matriz tridiagonal consi-
deraremos la siguiente descomposicin
2
l11 0 0 l11 l21 0 l11 l11 l12 0
l21 l22 0 0 l22 l32 = l21 l11 l21 2
+ l222
l22 l32 .
2 2
0 l32 l33 0 0 l33 0 l32 l22 l32 + l33

Igualando con la matriz A podemos calcular los coecientes lij en la siguiente


secuencia
2
l11 = 4 l11 = 2,
1
l11 l21 = 1 l21 = ,
2

15
l21 + l22 = 4 l22 =
2 2
,
2
2
l22 l32 = 1 l32 = ,
15

56
2
l32 2
+ l33 = 4 l33 = ,
15
esto es
2
0 0
1 15
0
L= 2 2  .
0 215 56
15

Resolvemos ahora el sistema, Ly = b



2
0 0 y1 2 y1 1
1 17
 0 y2 = 8 y2 = 15 ,
15
2 2
0 215 56 y3 6 y3 56
15 15
46
2.4 Ejercicios resueltos

y nalmente resolvemos el sistema LT x = y



2 12 0 1
x 1 x1 1
0 15
15
2 17
2  x2 = 15 x2 = 2 .
0 0 56 x3 15 56 x3 1
15

Ejercicio 2.2 Considera el sistema


4x1 + 3x2 = 24 ,
3x1 + 4x2 x3 = 30 ,
x2 + 4x3 = 24 .

a) Resulvelo utilizando la factorizacin LU .


b) Considera la factorizacin de Cholesky y halla la correspondiente matriz L.

Solucin:

a) Por ser una matriz tridiagonal, consideramos la factorizacin LU del Ejercicio


2.1. Igualando con la matriz A podemos calcular los coecientes lij , uij en la
siguiente secuencia
u11 = 4, u12 = 3, u23 = 1,
3
l21 u11 = 3 l21 = ,
4
7
l21 u12 + u22 = 4 u22 = ,
4
4
l32 u22 = 1 l32 = ,
7
24
l32 u23 + u33 = 4 u33 = ,
7
esto es

1 0 0 4 3 0
L= 3
4 1 0 , U = 0 7
4 1 .
0 47 1 0 0 24
7
Resolviendo el sistema Ly = b por sustitucin progresiva se obtiene

y1 24
y2 = 12
y3 120
7
47
Captulo 2. Resolucin de sistemas de ecuaciones lineales

y del sistema U x = y por sustitucin regresiva obtenemos



x1 3
x2 = 4 .
x3 5

b) Considerando la factorizacin de Cholesky del Ejercicio 2.1, e igualando con


la matriz A podemos calcular los coecientes lij en la siguiente secuencia
2
l11 = 4 l11 = 2,
3
l11 l21 = 3 l21 = ,
2
7
2
l21 2
+ l22 = 4 l22 = ,
2
2
l22 l32 = 1 l32 = ,
7

24
2
l32 2
+ l33 = 4 l33 = ,
7
esto es
2 0

0
3 7
L= 2 2 0 .
0 27 24
7

Ejercicio 2.3 Considera el sistema del Ejercicio 2.2 y aplica dos iteraciones del
mtodo de Jacobi para obtener x1 , x2 partiendo de las condiciones iniciales:

4
x0 = 4 .
4

Solucin:
El esquema recursivo viene dado por:
k+1 k
4 0 0 x1 0 3 0 x1 24
0 4 0 xk+1 = 3 0 1 xk2 + 30 ,
2
0 0 4 k+1
x3 0 1 0 xk3 24

esto es k
xk+1
1 0 3 0 x1 6
xk+1 = 1 3 0 1 xk2 + 15 .
2 2
k+1 4 k
x3 0 1 0 x 3 6
48
2.4 Ejercicios resueltos

Si aplicamos dos iteraciones del algoritmo se obtiene:


27
3 8
x1 = 72 , x2 = 4 .
5 41
8


Ejercicio 2.4 Dada la matriz tridiagonal genrica (2.6), escribe un algoritmo (in-
dependiente del lenguaje de programacin) que permita calcular los coecientes de
las matrices L y U , de manera que en cada evaluacin slo se utilicen coecientes
ya evaluados o conocidos. Una vez obtenidos los coecientes, escribe otro algorit-
mo que permita obtener la solucin del sistema. Comparar con el algoritmo de
Thomas.

Solucin:
El siguienere algoritmo recursivo permite evaluar los coecientes de las matrices
LyU
u1,1 = b1
for i = 2 : n
ai1
li,i1 =
ui1,i1
ui1,i = ci1
uii = bi li,i1 ui1,i
end
donde se puede comprobar cmo en cada evaluacin slo se utilizan coecientes que
han sido evaluados previamente. Una vez tenemos los coecientes de las matrices
L y U , procedemos a la resolucin de los sistemas Ly = d y U x = y:
y1 = d1
for i = 2 : n
yi = di li,i1 yi1
end
yn
xn =
un,n
for i = n 1 : 1 : 1
1
xi = (yj ui,i+1 xi+1 )
uj,j
end

Todos estos clculos se pueden realizar de manera ptima (con respecto al nmero
de operaciones, utilizando el menor nmero posible de matrices o vectores don-
de se almacenan los datos) utilizando el llamado algoritmo de Thomas y que, a
continuacin, se presenta implementado en un programa Matlab.
49
Captulo 2. Resolucin de sistemas de ecuaciones lineales

La matriz se tiene almacenada en los vectores a, b, c, y el trmino independiente


en el vector d.

Primero se copia en x el vector d

x = d;

luego se triangulariza la matriz y el trmino independiente mediante el siguiente


bucle

for j=1:n-1
mu=a(j)/b(j);
b(j+1)=b(j+1)-mu*c(j);
x(j+1)=x(j+1)-mu*x(j);
end

Posteriormente, se realiza la sustitucin regresiva

x(n)=x(n)/b(n);
for j=n-1:-1:1
x(j)=(x(j)-c(j)*x(j+1))/b(j);
end

Este algoritmo no utiliza pivotacin parcial y es mucho ms rpido que el algoritmo


de Gauss. 

Ejercicio 2.5 Considera el sistema del Ejercicio 2.1 y resulvelo por mtodos
iterativos como sigue: supn que tras k iteraciones de cualquiera de los mtodos
nos encontramos cerca de la solucin, y sta la denotamos por
k
x1 1 + k
xk2 = 2 + k .
xk3 1 + k

Las iteraciones se paran cuando dos iteraciones consecutivas dieren menos que
una cantidad que se estime sucientemente pequea. Esto es, medimos
k+1 k k+1
x1 x1 k
xk+1 xk2 = k+1 k .
2
xk+1
3
xk3 k+1 k

La rapidez de convergencia viene dada por cuan rpido tienden a 0 las coecientes
k , k , k segn vamos realizando iteraciones.
50
2.4 Ejercicios resueltos


T
T
Halla la relacin entre k+1 , k+1 , k+1 y k , k , k para los siguientes
mtodos iterativos:

a) Mtodo de Jacobi.
b) Mtodo de Gauss-Seidel.

Solucin:

a) Mtodo de Jacobi. El esquema recursivo viene dado por:



4 0 0 1 + k+1 0 1 0 1 + k 2
0 4 0 2 + k+1 = 1 0 1 2 + k + 8 .
0 0 4 1 + k+1 0 1 0 1 + k 6
Operando y simplicando se obtiene
k+1
k
k+1 = 1 k + k ,
4
k+1 k
esto es, bsicamente, tras cada iteracin el error se reduce por un factor entre
2 y 4.
b) Mtodo de Gauss-Seidel. El esquema recursivo viene dado por:

4 0 0 1 + k+1 0 1 0 1 + k 2
1 4 0 2 + k+1 = 0 0 1 2 + k + 8 .
0 1 4 1 + k+1 0 0 0 1 + k 6
Operando y simplicando se obtiene
k+1
4 k
k+1 = 1 4 k + k .
16
k+1 k + 14 k

Viendo cmo se reduce el error en iteraciones sucesivas, se puede ver que el error
se reduce en un factor aproximadamente de 16.

Sugerencia: Para ver mejor esta reduccin, supn que


k 1
10
k = 1 ,
20
k 1
40

y calcula el error utilizando los algoritmos de Jacobi y de Gauss-Seidel tras dos


iteraciones consecutivas. 
51
Captulo 2. Resolucin de sistemas de ecuaciones lineales



1 1
Ejercicio 2.6 Dada la matriz A = con > 1, calcula el nmero de
1
condicin de la matriz, (A) = A A1 , en el caso en que consideremos la
1-norma, denida por 
A1 = max |Aij |.
i
j
11
Calcula su valor para = 3 y = 10 .

Solucin:
Por un lado tenemos que A1 = max{1 + , 2} = 1 + . Su matriz inversa viene
dada por  
1 1 1
A1 =
1 1
de donde inmediatamente vemos que A1 1 = 1+
1 . Luego

(1 + )2
(A) = A A1  =
1
y, por tanto,
11 441
=3 (A) = 8; = (A) = = 44.1 .
10 10
Vemos que si se acerca a 1 o toma valores muy grandes, el valor de (A) crece
considerablemente. 

2.5 Ejercicios propuestos

1. Resuelve por el mtodo de Gauss el sistema



0 2 4 x1 4
1 2 3 x2 = 3 .
0 0 3 x3 3

2. Dada la matriz
3 0 2
0 4 3 ,
0 0 2
obtn su inversa.
3. Dada la matriz
1 0
2 1 ,
0 1 2
obtn todos los valores de y para los cuales la matriz es singular.
52
2.5 Ejercicios propuestos

4. Resuelve los siguientes sistemas de ecuaciones factorizados:


a)

1 0 0 2 3 1 x1 2
2 1 0 0 2 1 x2 = 1 ,
1 0 1 0 0 3 x3 1

b)

2 0 0 1 1 1 x1 1
1 1 0 0 1 2 x2 = 3 .
3 2 1 0 0 1 x3 0
5. Compara la solucin que se obtiene mediante el mtodo de Gauss para los
sistemas de ecuaciones
 
xy =1 , xy =1 ,
y
x 1.01y = 0 , x 0.99y = 0 .

6. Dado el sistema

0.15 2.11 30.75 x1 26.38
0.64 1.21 2.05 x2 = 1.01 ,
3.21 1.53 1.04 x3 5.23
resulvelo utilizando el mtodo de Gauss sin pivotacin parcial y con pivo-
tacin parcial.
7. Considera el sistema de ecuaciones
Ax = b ,
con
3 2 1 1
A= 2 3 2 , b= 0 ,
1 2 3 0
comprueba que el mtodo de Jacobi diverge mientras que el mtodo de Gauss-
Seidel converge.
8. Determina las dos primeras iteraciones del mtodo de Jacobi para los siguien-
tes sistemas de ecuaciones, si tomamos como vectores iniciales x0 = (0, 0, 0)T
y x0 = (0, 0, 0, 0)T , respectivamente.
a)
10x1 x2 = 9,
x1 + 10x2 2x3 = 7,
2x2 + 10x3 = 6.
53
Captulo 2. Resolucin de sistemas de ecuaciones lineales

b)

4x1 + x2 x3 + x4 = 2 ,
x1 + 4x2 x3 x4 = 1 ,
x1 x2 + 5x3 + x4 = 0,
x1 x2 + x3 + 3x4 = 1.

9. Dado el sistema

3x1 + 2x2 = 1 ,
4x1 + 3x2 = 5 ,

calcula dos iteraciones del mtodo SSOR partiendo del vector inicial x01 , x02 =
(0, 0) y tomando = 1.25.
10. Dado el sistema

4x1 + 3x2 = 24 ,
3x1 + 4x2 x3 = 30 ,
x2 + 4x3 = 24 ,

compara 3 iteraciones del mtodo de SOR y el mtodo SSOR tomando x0 =


(0, 0, 0)T , y = 1.25.

11. Repite los clculos del Ejercicio Resuelto 2.5 con el algoritmo de Jacobi para
el sistema:


3 1 1 x1 4 x1 1
1 1 3 x2 = 4 x2 = 1
2 5 1 x3 1 x3 2

y demuestra que el algoritmo diverge. Intercambia ahora las las 2 y 3, esto


es
3 1 1 x1 4
2 5 1 x2 = 1 ,
1 1 3 x3 4
que convierte la matriz en diagonal dominante, y comprueba que ahora s
converge el algoritmo de Jacobi.

54
Captulo 3

Interpolacin y aproximacin de
funciones

3.1 Introduccin

En muchos problemas debemos trabajar con funciones cuyos valores son conocidos
nicamente en un conjunto de puntos. Esto ocurre, por ejemplo, cuando realizamos
medidas experimentales o cuando trabajamos con funciones muy complejas, como
pueden ser las soluciones de ecuaciones diferenciales, de las que slo podemos co-
nocer aproximaciones a la solucin en un determinado nmero de puntos. En tales
casos es til trabajar con funciones conocidas y sencillas que aproximen sucien-
temente bien nuestro problema. Un conjunto de tales funciones son el conjunto de
funciones polinnicas. El Teorema de Weierstrass nos garantiza que cualquier fun-
cin continua en un intervalo cerrado se puede aproximar, con cualquier precisin
prejada, por algn polinomio. Debido a la facilidad de operar con polinomios
(derivar, integrar, etc.) en este captulo nos centraremos en la aproximacin de
funciones por polinomios.

Cuando truncamos el desarrollo de Taylor de una funcin, f (x), a un determina-


do orden, realmente lo que hacemos es aproximar la funcin por un polinomio.
Por ejemplo, si consideramos el desarrollo hasta orden n alrededor del punto x0 ,
tenemos
1 n)
f (x) = f (x0 ) + f  (x0 )(x x0 ) + + f (x0 )(x x0 )n + Rn (x),
n!

55
Captulo 3. Interpolacin y aproximacin de funciones

donde Rn (x) es el residuo, que nos permite acotar el error cometido al truncar el
desarrollo, y viene dado por
1
Rn (x) = f n+1) ()(x x0 )n+1 , || |x x0 |.
(n + 1)!
Observamos que si el valor de x toma valores distantes de x0 el error crecer,
en general, como (x x0 )n+1 y, por tanto, nos puede dar malas aproximaciones
en intervalos grandes. Adems, de normal no se conoce el valor de las derivadas
de la funcin en un punto, por lo que el desarrollo de Taylor no ser de utilidad
en estos casos y debemos buscar otras alternativas. En concreto, en este tema
nos centraremos en aquellos problemas en los que la funcin es conocida en un
conjunto de puntos distribuidos en una determinada regin y veremos diferentes
formas de aproximar la solucin en esa regin por interpolacin.

Dados los pares de nmeros reales (x0 , f0 ), (x1 , f1 ), . . . , (xn , fn ), que frecuente-
mente vendrn expresados en una tabla de valores,

x0 x1 xn
f0 f1 fn

la interpolacin trata de resolver uno o ambos de los siguientes problemas:

Encontrar una funcin f (x) tal que

f (xi ) = fi , i = 0, 1, . . . , n.

En este caso, a la funcin f (x) se le llama funcin interpolante.


Calcular f (x) para un punto x distinto de xi , i = 0, 1, 2, . . . , n.

El ltimo problema veremos que puede resolverse sin necesidad de obtener explci-
tamente la funcin f (x). Cuando x se encuentra comprendido entre el mnimo y el
mximo de los valores tabulados xi , se tiene propiamente el problema de interpola-
cin. En cambio cuando x se encuentra fuera de dicho intervalo se llama problema
de extrapolacin. Los mtodos que vamos a estudiar sirven en ambos casos, pero
siempre hay que tener en cuenta que el error en la extrapolacin suele ser mucho
mayor que en la interpolacin.

Calcular f (x) a partir de x es un problema de interpolacin directa. En algunas


ocasiones necesitaremos calcular el valor de x a partir del valor de f (x), en este
caso se tratara de un problema de interpolacin inversa.

Los datos conocidos (xi , fi ) por los que tiene que pasar la funcin que se busca
se llaman puntos soporte de la interpolacin o puntos de interpolacin, xi son las
abcisas soporte o nodos soporte o de interpolacin y fi son las ordenadas soporte.
56
3.2 Interpolacin polinmica

Segn se elija la funcin f (x) se tienen diferentes tipos de interpolacin, cada una
con sus caractersticas y algoritmos. Los tipos ms frecuentes son:

Polinmica, en este caso la funcin interpolante f (x) es un polinomio.


Splines1 , cuando la funcin interpolante f (x) es una funcin polinmica a
trozos a la que se le exigen dos condiciones adicionales.
Racional, si la funcin f (x) es una funcin racional. Un caso particular muy
importante es el interpolante de Pad, en el que se necesitan los datos co-
rrespondientes a valores de la funcin y sus derivadas en un punto.
Trigonomtrica, cuando f (x) es una combinacin de funciones trigonom-
tricas. Se aplica sobre todo cuando se sabe que los datos responden a un
problema peridico.

Debido a que los polinomios tienen, entre otras, la ventaja de derivarse e integrarse
fcilmente, siendo las funciones resultantes nuevamente polinomios, la interpola-
cin polinmica es de las ms sencillas y utilizadas, no slo para resolver el proble-
ma de interpolacin propiamente dicho sino como herramienta para resolver otros
problemas numricamente, como el clculo de integrales o de derivadas. Tambin
se utiliza, cada vez con ms frecuencia, la interpolacin por splines. Los dos ti-
pos de interpolacin que vamos a abordar en este captulo son la interpolacin
polinnica y por splines.

Trabajar slo con la informacin de f (x) que proporciona la tabla signica desco-
nocer casi todo sobre f (x), en particular si f (x) es continua y derivable. En el
desarrollo del tema se asumir la hiptesis de continuidad y derivabilidad sobre la
funcin f (x). Intentaremos resolver los problemas de interpolacin aproximando
la funcin desconocida, f (x), mediante una funcin polinmica o una funcin
construida a partir de polinomios (splines).

La interpolacin, con las hiptesis descritas es un procedimiento usualmente sa-


tisfactorio, sobre todo si los valores x para los que se quiere calcular f (x) estn
cerca de los valores tabulados.

3.2 Interpolacin polinmica

Supongamos conocidos los valores en los n+1 puntos x0 , x1 , . . . , xn de una funcin


segn la tabla

x0 x1 xn
f0 f1 fn
1 En la literatura tambin se utiliza el trmino cercha para referirse a spline.
57
Captulo 3. Interpolacin y aproximacin de funciones

Vamos a construir un polinomio Pn (x), de grado menor o igual que n, que cumpla

Pn (xi ) = fi , i = 0, 1, . . . , n. (3.1)
Al polinomio Pn (x) as construido se le denomina polinomio interpolador o poli-
nomio de interpolacin.

Una posible forma de resolver el problema es plantear el siguiente polinomio de


grado n
Pn (x) = a0 + a1 x + a2 x2 + + an xn , (3.2)
con coecientes ai , i = 0, 1, . . . , n, indeterminados, e imponer que (3.2) verique
(3.1). Esto signica que obtener el polinomio interpolador es equivalente a resolver
el sistema de ecuaciones lineales
a0 + a1 x0 + + an xn0 = f0 ,
a0 + a1 x1 + + an xn1 = f1 ,
.. (3.3)
.
a0 + a1 xn + + an xnn = fn .

La existencia y unicidad de solucin del sistema anterior depende del determinante


de Vandermonde,
 
 1 x0 x20 xn0 
 
 1 x1 x21 xn1 
 
=  . .. .. .. .. 
 .. . . . . 

 1 xn x2 xn 
n n

= (x1 x0 ) (x2 x0 ) (x2 x1 ) (xn x0 ) (xn xn1 )



= (xj xk ) .
0k<jn

De aqu concluimos que si todos los xi son distintos entre s, entonces = 0 y el


sistema anterior tiene una nica solucin. Por tanto, si los nodos de interpolacin
son distintos, el polinomio interpolador (3.2) existir y ser nico independiente-
mente del valor que tomen los fi .

Pero esta forma de afrontar el problema es, desde el punto de vista prctico, poco
operativa. Vamos a estudiar otros mtodos para construir el polinomio interpola-
dor.

58
3.2 Interpolacin polinmica

3.2.1 Polinomios de Lagrange


El siguiente resultado proporciona una forma explcita del polinomio interpolador
buscado sin tener que resolver el sistema de ecuaciones (3.3).

Teorema 3.1 (Polinomio interpolador de Lagrange) Dado el conjunto de pun-


tos (x0 , f0 ) , (x1 , f1 ) , . . . , (xn , fn ), se considera el polinomio
n

Pn (x) = fi Ln,i (x),
i=0

donde los polinomios Ln,i (x) son los polinomios de Lagrange,

(x x0 ) (x x1 ) (x xi1 ) (x xi+1 ) (x xn )
Ln,i (x) = ,
(xi x0 ) (xi x1 ) (xi xi1 ) (xi xi+1 ) (xi xn )

con i = 0, 1, . . . , n. El polinomio Pn (x) es un polinomio interpolador para los


puntos (xi , fi ), i = 0, 1, . . . , n.

Demostracin:
En primer lugar, el polinomio Pn (x) tiene grado menor o igual que n puesto que
es combinacin lineal de los polinomios Ln,i (x), y stos tienen grado n. Por otra
parte, observamos que si tomamos un nodo xl , tenemos
n 
xl xj 1 si l=i
Ln,i (xl ) = = , (3.4)
xi xj 0 si l = i
j=0
j=i

de donde
Pn (xi ) = fi Ln,i (xi ) = fi , i = 0, 1, . . . , n.


El polinomio Pn (x) obtenido en el Teorema 3.1 se conoce con el nombre de poli-


nomio interpolador de Lagrange. A partir de ahora tambin lo denotaremos por
P (x).

Ejemplo 3.1 Calcular el polinomio de interpolacin para

xi 0 2 3
fi 0.5 2 0.5

y calcular P (1) y P (1.5).

59
Captulo 3. Interpolacin y aproximacin de funciones

Solucin:
Como tenemos tres puntos soporte, los polinomios de Lagrange necesarios son
(x 2)(x 3) 1
L2,0 (x) = = (x 2)(x 3),
(0 2)(0 3) 6
(x 0)(x 3) 1
L2,1 (x) = = x(x 3),
(2 0)(2 3) 2
(x 0)(x 2) 1
L2,2 (x) = = x(x 2).
(3 0)(3 2) 3

Por tanto, el polinomio interpolador es

P (x) = 0.5 L2,0 (x) + 2 L2,1 (x) + 0.5 L2,2 (x).

Una vez obtenido, se calcula el valor aproximado en 1 y en 1.5


P (1) = 0.5 L2,0 (1) + 2 L2,1
(1) +0.5 L2,2 (1)
1 1
= 0.5 + 2 1 + 0.5 = 2,
3 3

P (1.5) = 0.5 L2,0 (1.5) + 2 L2,1 (1.5) + 0.5 L2,2 (1.5)


= 0.5 0.125 + 2 1.125 + 0.5 (0.25) = 2.1875.

En la Figura 3.1 puede verse la representacin grca de los polinomios de La-


grange utilizados en este ejemplo as como el polinomio de interpolacin obtenido.
Observamos que los polinomios de Lagrange construidos verican la frmula (3.4).
As, por ejemplo, L2,0 vale 1 en x0 = 0 y se anula en el resto de nodos, x1 = 2 y
x2 = 3.

La interpolacin de Lagrange es muy sencilla conceptualmente. En aspectos te-


ricos, es til, por ejemplo, para deducir frmulas de integracin numrica. Sin
embargo, en las aplicaciones, es poco prctica, salvo en el caso de tener que inter-
polar para los mismos nodos con diferentes ordenadas soporte. Aadir o eliminar
uno slo de los puntos soporte cambia totalmente los polinomios de Lagrange y
hace que se deba volver a recalcular todo desde el principio como se ilustra en
el siguiente ejemplo, en el que se aade un punto soporte ms a los datos del
Ejemplo 3.1.

Ejemplo 3.2 Calcular el polinomio de interpolacin para

xi 0 1 2 3
fi 0.5 2.5 2 0.5
60
3.2 Interpolacin polinmica

1
L2,0 (x)

L2,1 (x)

L2,2 (x)
2
datos
Pol. Interp

3
1 0 1 2 3 4

Figura 3.1: Polinomios de Lagrange, L2,0 , L2,1 y L2,2 , y polinomio de interpolacin,


P (x), correspondientes a los datos del Ejemplo 3.1.

y obtener el valor de P (1.5).

Solucin:
En este caso, como tenemos 4 datos, los polinomios de Lagrange son de grado 3

(x 1)(x 2)(x 3) 1 11
L3,0 (x) = = x3 + x2 x + 1,
(0 1)(0 2)(0 3) 6 6
(x 0)(x 2)(x 3) 1 5
L3,1 (x) = = x3 x2 + 3 x,
(1 0)(1 2)(1 3) 2 2
(x 0)(x 1)(x 3) 1 3 3
L3,2 (x) = = x + 2 x2 x,
(2 0)(2 1)(2 3) 2 2
(x 0)(x 1)(x 2) 1 3 1 2 1
L3,3 (x) = = x x + x.
(3 0)(3 1)(3 2) 6 2 3

El polinomio de interpolacin es

P (x) = 0.5 L3,0 (x) + 2.5 L3,1 (x) + 2 L3,2 (x) + 0.5 L3,3 (x).
61
Captulo 3. Interpolacin y aproximacin de funciones

Finalmente

P (1.5) = 0.5 L3,0 (1.5) + 2.5 L3,1 (1.5) + 2 L3,2 (1.5) + 0.5 L3,3 (1.5) = 2.46875.

Como se puede observar, los polinomios de Lagrange son diferentes a los del Ejem-
plo 3.1, ya que son de un grado ms, igual que el de interpolacin. Tambin es
necesario utilizar un polinomio ms. Los polinomios de Lagrange y el polinomio
interpolador estn representados en la Figura 3.2.
4
L3,0(x)
L3,1(x)
3 L3,2(x)
L3,3(x)
Datos
Pol. Interp
2

3
1 0 1 2 3 4

Figura 3.2: Polinomios de Lagrange L3,0 , L3,1 , L3,2 y L3,3 y polinomio de interpolacin,
P (x), correspondientes a los datos del Ejemplo 3.2 .

Por la forma en que se construye el polinomio interpolador de Lagrange, notemos


que no es necesario tener los nodos ordenados.

62
3.2 Interpolacin polinmica

3.2.2 Algoritmo de Neville


El algoritmo de Neville se utiliza para aproximar el valor en un punto, pero no
para calcular el polinomio en s. Es decir, slo resuelve el segundo de los problemas
mencionados en la introduccin.

La idea del algoritmo de Neville es calcular el valor de la aproximacin mediante


polinomios de interpolacin de grado pequeo y luego enlazarlos de forma adecua-
da. Se empezar as con polinomios de grado 0 (constantes) y luego se enlazarn
hasta unir todos los datos.

Denotemos por Pi0 i1 ...ij a un polinomio de grado menor o igual que j tal que
Pi0 i1 ...ij (xik ) = fik , k = 0, 1, . . . , j. Dicho polinomio se puede construir de la
siguiente forma

Pik (x) = fik , (3.5)


(x xi0 )Pi1 ...ij (x) (x xij )Pi0 i1 ...ij1 (x)
Pi0 i1 ...ij (x) = . (3.6)
x ij x i0

Veamos por induccin que se cumple la propiedad indicada. En primer lugar,


tenemos que los polinomios de (3.5) son de grado cero y adems cumplen que
Pik (xik ) = fik . Supongamos que se satisfacen las condiciones Pi1 ...ij (xik ) = fik ,
k = 1, 2, . . . , j y Pi0 i1 ...ij1 (xik ) = fik , para k = 0, 1, 2, . . . , j 1, es decir, estamos
suponiendo que cada uno de los polinomios pasa por los puntos soporte indicados
por sus subndices que, salvo i0 e ij son comunes. Entonces el nuevo polinomio
dado por (3.6) cumple

(xi0 xi0 )Pi1 ...ij (xi0 ) (xi0 xij )Pi0 i1 ...ij1 (xi0 )
Pi0 i1 ...ij (xi0 ) =
x ij x i0
(xi0 xij )fi0
= = fi0 ,
x ij x i0
(xij xi0 )Pi1 ...ij (xij ) (xij xij )Pi0 i1 ...ij1 (xij )
Pi0 i1 ...ij (xij ) =
x ij x i0
(xij xi0 )fij
= = f ij ,
x i j x i0

es decir, pasa por los puntos soporte (xi0 , fi0 ) y (xij , fij ). Adems, tambin pasa
por los restantes pues si k = 1, 2, . . . , j 1,
(xik xi0 )Pi1 ...ij (xik ) (xik xij )Pi0 i1 ...ij1 (xik )
Pi0 i1 ...ij (xik ) =
x ij x i0
(xik xi0 )fik (xik xij )fik
= = fi k ,
x ij x i0
63
Captulo 3. Interpolacin y aproximacin de funciones

por lo que el polinomio construido tiene la propiedad de pasar por los puntos
soporte correspondientes a i0 , i1 , . . . ij . Adems, si Pi1 ...ij (x) y Pi0 i1 ...ij1 son
polinomios de grado menor o igual que j 1, de (3.6) tenemos que Pi0 i1 ...ij (x) ser
un polinomio de grado menor o igual que j.

Hay que tener en cuenta que a la hora de la prctica no se calcular con los
polinomios sino con el valor en el que se quiera aproximar la funcin. Los ndices
se eligen consecutivos para facilitar los clculos, aunque los nodos no tienen porqu
estar ordenados. Para esquematizar el clculo se puede hacer una tabla como la
siguiente

0 1 2 3
x0 P0 (x) = f0
P01 (x)
x1 P1 (x) = f1 P012 (x)
P12 (x) P0123 (x)
x2 P2 (x) = f2 P123 (x)
P23 (x)
x3 P3 (x) = f3

donde x es la abcisa a interpolar, la columna correspondiente a los polinomios de


grado 0 son datos (frmula (3.5)) y el resto se calcula con (3.6) a partir de los
datos exclusivamente de la columna anterior y los nodos. Es decir, para rellenar
la tabla se avanza hacia la derecha calculando cada nuevo valor a partir de los dos
de la columna de la izquierda situados por encima y por debajo de l aplicando
la frmula (3.6) . En cada columna se calcula un valor menos que en la de su
izquierda, el ltimo valor calculado, que es el nico de su columna, P0123 (x) en
nuestro ejemplo, es el valor interpolado correspondiente a la abcisa x.

Ejemplo 3.3 Calcular P (1) con los mismos datos del Ejemplo 3.1 utilizando el
algoritmo de Neville.

Solucin:
A partir de los datos obtenemos la siguiente tabla

0 1 2
x0 = 0 P0 (1) = f0 = 0.5
P01 (1) = 1.25
x1 = 2 P1 (1) = f1 = 2 P012 (1) = 2
P12 (1) = 3.5
x2 = 3 P2 (1) = f2 = 0.5

Por tanto, obtenemos el valor aproximado P (1) = 2, que obviamente coincide con
el obtenido anteriormente, pero con la ventaja de que se han hecho menos clculos.

64
3.2 Interpolacin polinmica

Ejemplo 3.4 Calcular P (1.5) con los mismos datos del Ejemplo 3.1 utilizando el
algoritmo de Neville.

Solucin:
Como el punto donde queremos interpolar es distinto al del Ejemplo 3.3, tenemos
que volver a calcular los valores de la tabla partiendo de las mismas columnas de
nodos y de polinomios constantes. Hacemos los clculos para la columna corres-
pondiente a los polinomios de grado 1 segn la frmula (3.6), y as sucesivamente
hasta rellenar toda la tabla, obteniendo,

0 1 2
x0 = 0 P0 (1.5) = f0 = 0.5
P01 (1.5) = 1.625
x1 = 2 P1 (1.5) = f1 = 2 P012 (1.5) = 2.1875
P12 (1.5) = 2.75
x2 = 3 P2 (1.5) = f2 = 0.5

Por tanto, hemos obtenido el valor aproximado P (1.5) = 2.1875, que coincide con
el calculado en el Ejemplo 3.1. 

Ejemplo 3.5 Calcular P (1.5) con los mismos datos del Ejemplo 3.2 utilizando el
algoritmo de Neville.

Solucin:
Por comodidad denotaremos Pi0 i1 ...ij (x) = Pi0 i1 ...ij . Notemos que podemos partir
de la tabla del Ejemplo 3.4, aadiendo el nuevo dato al nal, y slo tendremos que
calcular el valor de los polinomios que corresponden al nuevo nodo, que situamos
en la ltima la de cada columna

0 1 2 3
x0 = 0 P0 = f0 = 0.5
P01 = 1.625
x1 = 2 P1 = f 1 = 2 P012 = 2.1875
P12 = 2.75 P0123 = 2.46875
x2 = 3 P2 = f2 = 0.5 P123 = 2.375
P23 = 2
x3 = 1 P3 = f3 = 2.5

Por tanto, obtenemos el valor aproximado P (1.5) = 2.46875, que, como tena que
ocurrir, coincide con el obtenido en el Ejemplo 3.2. 

El algoritmo de Neville no es prctico para calcular el polinomio en s y existen


variantes para hacer los clculos de forma que no se cometan errores de redondeo
importantes.
65
Captulo 3. Interpolacin y aproximacin de funciones

3.2.3 Frmula de interpolacin de Newton. Diferencias


divididas
El algoritmo de Neville permite ahorrar operaciones cuando se quiere obtener
exclusivamente el valor del polinomio interpolador en un punto. Pero hemos visto
que para calcular valores de dicho polinomio en otro u otros puntos se ha de repetir
todo el proceso cada vez desde el principio. La tcnica que vamos a introducir
a continuacin es preferible al algoritmo de Neville cuando se quiere calcular el
polinomio de interpolacin o se quiere interpolar en varios puntos.

La idea es escribir el polinomio de interpolacin en la forma

P (x) = a0 + a1 (x x0 ) + a2 (x x0 )(x x1 ) + + an (x x0 ) (x xn1 ),

que tiene la ventaja de permitir el clculo de P (x) utilizando el esquema de Horner,


que es el ms eciente

P (x) = a0 + (x x0 ) (a1 + (x x1 ) (a2 + )) . (3.7)

Si en P (x) sustituimos x por x0 se obtiene que a0 = f0 . Si sustituimos x por x1


se obtiene que f1 = f0 + a1 (x1 x0 ), de donde a1 = (f1 f0 )/(x1 x0 ). Para
calcular el resto vamos a introducir las diferencias divididas.

Se dene f [xi ] = fi , que son las diferencias divididas de orden 0. Supuestas de-
nidas las de orden k 1 se denen las de orden k por

f [xi1 , . . . , xik ] f [xi0 , xi1 , . . . , xik1 ]


f [xi0 , xi1 , . . . , xik ] = . (3.8)
x i k x i0

Esta ecuacin tiene una cierta similitud con (3.6). Notemos adems que no importa
el orden en que se escriban los argumentos, es decir, se tiene la siguiente propiedad

f [x0 , x1 ] = f [x1 , x0 ]
f [x0 , x1 , x2 ] = f [x0 , x2 , x1 ] = f [x1 , x0 , x2 ] = f [x1 , x2 , x0 ]
= f [x2 , x0 , x1 ] = f [x2 , x1 , x0 ]
..
.

Supongamos ahora que ai = f [x0 , x1 , . . . , xi ] para i = 0, 1, 2, . . . , k 1. Para cal-


cular ak damos a x el valor xk . Teniendo en cuenta que fk = f [xk ], se obtiene,

f [xk ] = f [x0 ] + f [x0 , x1 ](xk x0 ) + f [x0 , x1 , x2 ](xk x0 )(xk x1 )


+ + f [x0 , x1 , x2 , . . . , xk1 ](xk x0 )(xk x1 ) (xk xk2 )
+ ak (xk x0 )(xk x1 ) (xk xk2 )(xk xk1 ),
66
3.2 Interpolacin polinmica

dividiendo por (xk x0 ) y reordenando de forma adecuada se tiene

f [x0 , xk ] =f [x0 , x1 ] + f [x0 , x1 , x2 ](xk x1 )


+ + f [x0 , x1 , x2 , . . . , xk1 ](xk xk2 ) (xk x1 )
+ ak (xk xk1 )(xk xk2 ) (xk x1 ),

dividiendo ahora por (xk x1 ) y reordenando se llega a

f [x0 , x1 , xk ] = f [x0 , x1 , x2 ] + + f [x0 , x1 , x2 , . . . , xk1 ](xk xk2 ) (xk x2 )


+ ak (xk xk1 )(xk xk2 ) (xk x2 ),

prosiguiendo de esta forma se obtiene que ak = f [x0 , x1 , . . . , xk ].

Por tanto, los coecientes del polinomio de Newton (o mejor dicho del polinomio de
interpolacin escrito en la forma de Newton) son las diferencias divididas, siendo
la expresin del mismo
P (x) =f [xi0 ] + f [xi0 , xi1 ](x xi0 )
(3.9)
+ + f [xi0 , xi1 , . . . , xin ](x xi0 ) (x xin1 ).

La forma prctica de calcular las diferencias divididas es en una tabla como la


siguiente

0 1 2 3
x0 f [x0 ] = f0
f [x0 , x1 ]
x1 f [x1 ] = f1 f [x0 , x1 , x2 ]
f [x1 , x2 ] f [x0 , x1 , x2 , x3 ]
x2 f [x2 ] = f2 f [x1 , x2 , x3 ]
f [x2 , x3 ]
x3 f [x3 ] = f3

En la tabla anterior, la columna correspondiente a las diferencias divididas de


orden 0 son datos y las dems son cocientes entre la diferencia de dos de la columna
de la izquierda y dos nodos soporte. Una vez calculadas las diferencias divididas
hay diversas alternativas para calcular el polinomio de interpolacin, ya que, al
no importar el orden en que se tomen los nodos soporte, se puede aplicar (3.9)
con cualquier eleccin de i0 , i1 , . . . Elegida una diferencia dividida cualquiera de
la primera columna podemos elegir cualquiera de las dos contiguas de la segunda
columna y as sucesivamente, de forma que aadimos una nueva abcisa soporte
cada vez.

Ejemplo 3.6 Calcular, usando diferencias nitas, el polinomio de interpolacin


con los mismos datos del Ejemplo 3.1.
67
Captulo 3. Interpolacin y aproximacin de funciones

Solucin:
De (3.8) construimos la tabla

0 1 2
x0 = 0 f [0] = 0.5
f [0, 2] = 0.75
x1 = 2 f [2] = 2 f [0, 2, 3] = 0.75
f [2, 3] = 1.5
x2 = 3 f [3] = 0.5

El polinomio se puede calcular de varias formas. Si elegimos la primera diferencia


dividida, f [0] = 0.5 luego hemos de tomar f [0, 2] = 0.75 y nalmente f [0, 2, 3] =
0.75, obtenemos P (x) = 0.5 + 0.75(x 0) 0.75(x 0)(x 2).

Si empezamos con f [2] = 2 podemos seguir dos caminos: Tomar f [2, 0] = 0.75
y nalmente f [2, 0, 3] = 0.75, obteniendo la expresin del polinomio P (x) =
2 + 0.75(x 2) 0.75(x 2)(x 0), o tomar f [2, 3] = 1.5 y por ltimo f [2, 3, 0] =
0.75, obteniendo ahora la expresin del polinomio P (x) = 21.5(x2)0.75(x
2)(x 3).

Por ltimo, empezando por f [3] = 0.5 se toma luego f [3, 2] = 1.5 y nalmente
f [3, 2, 0] = 0.75, con lo que se obtiene la expresin P (x) = 0.5 1.5(x 3)
0.75(x 3)(x 2).

Conviene resaltar que lo que se obtiene son distintas expresiones del nico poli-
nomio de interpolacin. En efecto, desarrollando las expresiones anteriores todas
ellas dan P (x) = 0.5 + 2.25x 0.75x2 . 

Para calcular P (x) se eligen las diferencias divididas en zig-zag de forma que se
empieza por el xi ms prximo a x, el siguiente punto a incorporar es el siguiente
ms prximo a x, y as sucesivamente. Esto minimiza el error en el esquema de
Horner.

Ejemplo 3.7 Calcular P (1.25) para los datos del Ejemplo 3.1.

Solucin:
Como los nodos soporte son 0, 2 y 3 conviene elegirlas en el orden 2, 0 y 3, por
ser el orden de cercana a 1.25. Por tanto, a partir de las diferencias divididas
proporcionadas en la tabla del Ejemplo 3.6 calculamos

P (1.25) = f [2] + f [2, 0](1.25 2) + f [2, 0, 3](1.25 2)(1.25 0)


= f [2] + (1.25 2)(f [2, 0] + f [2, 0, 3] 1.25)
= 2 + (1.25 2)(0.75 0.75 1.25) = 2.14063.


68
3.2 Interpolacin polinmica

Ejemplo 3.8 Calcular el polinomio interpolador correspondiente a los datos del


Ejemplo 3.2 utilizando diferencias divididas. Calcular P (0.8) utilizando la expre-
sin que minimiza el error.

Solucin:
La tabla de las diferencias divididas correspondiente al Ejemplo 3.2 es

0 1 2 3
x0 = 0 f [0] = 0.5
f [0, 1] = 2
x1 = 1 f [1] = 2.5 f [0, 1, 2] = 1.25
f [1, 2] = 0.5 f [0, 1, 2, 3] = 0.25
x2 = 2 f [2] = 2 f [1, 2, 3] = 0.5
f [2, 3] = 1.5
x3 = 3 f [3] = 0.5

Algunas formas de calcular el polinomio de interpolacin son:

P (x) = f [0] + f [0, 1](x 0) + f [0, 1, 2](x 0)(x 1)


+ f [0, 1, 2, 3](x 0)(x 1)(x 2)
= 0.5 + 2(x 0) 1.25(x 0)(x 1) + 0.25(x 0)(x 1)(x 2)
= 0.5 + 3.75x 2x2 + 0.25x3 .
P (x) = f [2] + f [2, 1](x 2) + f [2, 1, 3](x 2)(x 1)
+ f [2, 1, 3, 0](x 2)(x 1)(x 3)
= 2 0.5(x 2) 0.5(x 2)(x 1) + 0.25(x 2)(x 1)(x 3)
= 0.5 + 3.75x 2x2 + 0.25x3 .

Para calcular P (0.8), minimizando los errores de redondeo en los clculos, eligira-
mos los nodos soporte en el siguiente orden: 1, 0, 2 y 3, es decir, se empieza por el
ms cercano a 0.8, y luego, de entre los que quedan por elegir, siempre se toma el
ms cercano a 0.8. De esta forma se obtiene

P (0.8) = f [1] + f [1, 0](0.8 1) + f [1, 0, 2](0.8 1)(0.8 0)


+ f [1, 0, 2, 3](0.8 1)(0.8 0)(0.8 2)
= 2.5 + 2(0.2) 1.25(0.2)(0.8) + 0.25(0.2)(0.8)(1.2)

que para reducir el nmero de operaciones se calcula por el esquema de Horner

= 2.5 + (0.2) (2 + (0.8) (1.25 + 0.25(1.2)))


= 2.348.


69
Captulo 3. Interpolacin y aproximacin de funciones

3.2.4 Error en la interpolacin polinmica


El siguiente resultado nos permite acotar el error cometido en la interpolacin
polinmica.

Teorema 3.2 Si f tiene derivada de orden n + 1, entonces para cada x existe un


en el menor intervalo que contiene a x y todos los nodos soporte xi que cumple

w(x)f (n+1) ()
f (x) P (x) = , (3.10)
(n + 1)!

donde w(x) = (x x0 )(x x1 ) (x xn ).

El polinomio w(x) de grado n + 1 que aparece en la expresin del error dada


por la ecuacin (3.10), es un polinomio que se anula en los nodos soporte pero
lejos de ellos puede tomar valores muy grandes. En general w crece muy rpido
fuera del intervalo mnimo que contiene a todos los nodos soporte. Por tanto, la
extrapolacin puede contener errores muy grandes y, en general, no es aconsejable.

3.2.5 Problemas con la interpolacin polinmica


Los polinomios de grado alto tienen muchos mximos y mnimos y cuando x tiende
a innito tienden a innito, por lo que no interpolan bien funciones que no tengan
estas caractersticas, tal como sucede en el siguiente ejemplo.

Ejemplo 3.9 (Funcin de Runge) Interpolar la funcin de Runge


1
f (x) = (3.11)
1 + 25x2
en el intervalo [1, 1] usando nodos igualmente espaciados. Representar f y los
distintos polinomios obtenidos.

Solucin:
Vamos a interpolar la funcin (3.11) utilizando 5, 7, 9 y 13 puntos igualmente
espaciados. En la Figura 3.3 estn representados estos polinomios interpoladores
junto a la funcin f (x) .

En la Figura 3.3 se observa que al aumentar el nmero de nodos soporte y, por


tanto, el grado del polinomio, las oscilaciones en los extremos del intervalo se hacen
cada vez mayores. En cambio, el error disminuye en el centro del mismo. Este
fenmeno fue descubierto por Runge cuando estudiaba el comportamiento de los
errores al usar interpolacin polinmica para aproximar determinadas funciones.
Se conoce como fenmeno de Runge. 

70
3.2 Interpolacin polinmica

1
F. Runge F. Runge
Pol. Interp Pol. Interp
0.8 0.8
Datos Datos

0.6
0.6
0.4
0.4
0.2
0.2
0

0.2 0

0.4 0.2
1 0.5 0 0.5 1 1 0.5 0 0.5 1

(a) 5 puntos (b) 7 puntos

1
1
F. Runge
Pol. Interp
Datos 0
0.5

0
2

0.5
3
F. Runge
Pol. Interp
Datos
1 4
1 0.5 0 0.5 1 1 0.5 0 0.5 1

(c) 9 puntos (d) 13 puntos

Figura 3.3: Funcin de Runge y diferentes polinomios de interpolacin con nodos soporte
igualmente espaciados.

El fenmeno de Runge demuestra que no siempre aumentando el nmero de nodos


de una interpolacin mejora su precisin. Una forma de resolver el problema es
eligir los puntos soporte de forma que se minimice el error en todo el intervalo.
As, esta tcnica utiliza nodos con diferentes distancias entre ellos y tiene el in-
conveniente de que no se puede aplicar si no conocemos los valores reales en los
nodos necesarios. El problema observado con la funcin de Runge tambin puede
resolverse mediante los splines, que es la tcnica que se estudia en el siguiente
apartado.

71
Captulo 3. Interpolacin y aproximacin de funciones

3.3 Interpolacin por splines

Teniendo en cuenta los inconvenientes que presentan los polinomios de grado alto,
se llega de forma natural a la interpolacin segmentaria o interpolacin a trozos,
que consiste en dividir el intervalo en varios subintervalos y construir una funcin
interpoladora distinta sobre cada intervalo. La interpolacin segmentaria lineal nos
permite obtener una curva continua, pero sin suavidad, es decir, sin derivabilidad
en los nodos.

Las funciones polinmicas segmentarias cbicas proporcionan curvas interpolantes


que denirn una trayectoria suave, que se ajustan a los puntos predenidos pero
que no presentan las grandes oscilaciones de los polinomios de grados elevados. Se
utilizan en mtodos numricos pero tambin en aplicaciones grcas.

La palabra inglesa spline denota un instrumento exible usado en dibujo tcnico


que sirve para trazar curvas suaves (trazador). Se trata de una regla que puede
ser adaptada, exionndola a la forma que tome la curva que se desee dibujar. La
propiedad de los splines de adaptarse bien a formas dadas es por lo que se le da
dicho nombre.

Denicion 3.1 Dado el conjunto de datos de la siguiente tabla de valores,

x0 x1 xn
f0 f1 fn

cuyos nodos suponemos ordenados, es decir,

x 0 x1 x n ,

llamamos spline de orden k asociado a los nodos anteriores a la funcin S(x)


denida como sigue:

S(x) = Si (x), x [xi1 , xi ], i = 1, . . . , n,

donde Si (x), i = 1, . . . , n son polinomios de grado k que satisfacen:

Si (xi1 ) = fi1 ,
i = 1, . . . , n,
Si (xi ) = fi ,

y adems,  

Si (xi ) = Si+1 (xi ),
..
. i = 1, . . . , n 1.

k1) k1)
Si (xi ) = Si+1 (xi ),
A k se le llama grado del spline.
72
3.3 Interpolacin por splines

Los splines que ms se utilizan en la prctica son los cbicos, es decir, los de
grado 3. En este caso tendremos un conjunto de n polinomios

Si (x) = ai x3 + bi x2 + ci x + di , i = 1, . . . , n,

cumpliendo las condiciones anteriores, que para splines cbicos quedan de la forma

Si (xi1 ) = fi1 ,
i = 1, . . . , n,
Si (xi ) = fi ,

Si (xi ) = Si+1



(xi ),
  i = 1, . . . , n 1.
Si (xi ) = Si+1 (xi ),

Tenemos que determinar 4n coecientes, pero en total tenemos 2n + 2(n 1) =


4n 2 condiciones. Tendremos que imponer dos condiciones ms. stas se pueden
elegir, por ejemplo, como una de las siguientes:

S1 (x0 ) = A y Sn (xn ) = B, con A y B nmeros reales. (Cuando A = B = 0


los splines se llaman naturales).
k) k)
S1 (x0 ) = Sn (xn ), k = 0, 1, 2, para splines peridicos (debe cumplirse f0 =
fn ).
S1 (x0 ) = f0 y Sn (xn ) = fn , con f0 y fn nmeros prejados.
Imponer que la derivada tercera sea continua en x1 y en xn1 . Esta es la
condicin llamada not a knot (no-nudo).

Ejemplo 3.10 Calcular el spline cbico natural, S(x), correspondiente a los datos
del Ejemplo 3.1, cuyos puntos soporte son

xi 0 2 3
fi 0.5 2 0.5

y calcular S(1).

Solucin:
Como tenemos 3 puntos de interpolacin, necesitamos 2 polinomios cbicos

S1 (x) = a1 x3 + b1 x2 + c1 x + d1 , en [0, 2],


S2 (x) = a2 x3 + b2 x2 + c2 x + d2 , en [2, 3].

73
Captulo 3. Interpolacin y aproximacin de funciones

Tenemos que determinar 8 incgnitas. Imponemos las condiciones:

1. S1 (x) tiene que pasar por (0, 0.5), es decir, S1 (0) = 0.5, de donde

d1 = 0.5.

2. S1 (2) = 2, de donde
8a1 + 4b1 + 2c1 + d1 = 2.

3. S2 (2) = 2, de donde
8a2 + 4b2 + 2c2 + d2 = 2.

4. S2 (3) = 0.5, de donde

27a2 + 9b2 + 3c2 + d2 = 0.5.

5. S1 (2) = S2 (2), de donde

12a1 + 4b1 + c1 = 12a2 + 4b2 + c2 .

6. S1 (2) = S2 (2), de donde

12a1 + 2b1 = 12a2 + 2b2 .

Hasta aqu tenemos 6 ecuaciones, las dos restantes dependen del tipo de
spline. Como en este caso el spline que queremos determinar es natural,
imponemos

7. S1 (0) = 0, de donde


2b1 = 0.

8. S2 (3) = 0, de donde
18a2 + 2b2 = 0.

Tenemos un sistema de 8 ecuaciones con 8 incgnitas. Resolvindolo llegamos a


que el spline natural buscado es

S1 (x) = 0.1875x3 + 1.5x + 0.5, si x [0, 2],
S(x) =
S2 (x) = 0.375x3 3.375x2 + 8.25x 4, si x [2, 3].

Para calcular S(1), como 1 [0, 2], utilizamos el primer polinomio y obtenemos
como resultado S(1) = S1 (1) = 1.8125. La grca del spline junto con los datos
puede verse en la Figura 3.4.


74
3.3 Interpolacin por splines

2.4
Datos
Spline
2.2

1.8

1.6

1.4

1.2

0.8

0.6

0.4
0 0.5 1 1.5 2 2.5 3

Figura 3.4: Interpolacin de los datos del Ejemplo 3.1 mediante un spline natural.

En la prctica no se obtiene el sistema de ecuaciones lineales tal como hemos


hecho en el ejemplo. En su lugar se escriben algunas condiciones de otra forma,
que a continuacin desarrollaremos, para obtener sistemas de ecuaciones lineales
tridiagonales, o casi tridiagonales, lo que facilita su resolucin.

Para obtener los polinomios, partimos de que Si (x) son polinomios de grado 1 que
cumplen Si (xi ) = Si+1

(xi ), i = 1, . . . , n 1. As

(xi x) (x xi1 )
Si (x) = Mi1 + Mi , i = 1, . . . , n . (3.12)
(xi xi1 ) (xi xi1 )
Efectivamente

Si (xi ) = Mi (3.13)


 (xi+1 xi ) (xi xi )
Si+1 (xi ) = Mi + Mi+1 = Mi .
(xi+1 xi ) (xi+1 xi )

Integrando la expresin (3.12) para cada i = 1, . . . , n, obtenemos


(xi x)2 (x xi1 )2
Si (x) = Mi1 + Mi + i ,
2(xi xi1 ) 2(xi xi1 )
75
Captulo 3. Interpolacin y aproximacin de funciones

donde i es una constante de integracin. Integrando nuevamente obtenemos

(xi x)3 (x xi1 )3


Si (x) = Mi1 + Mi + i x + i ,
6(xi xi1 ) 6(xi xi1 )

siendo i otra constante de integracin. Las constantes de integracin i y i se


determinan imponiendo

Si (xi1 ) = fi1 ,
i = 1, . . . , n,
Si (xi ) = fi ,

con lo que se obtiene:


fi fi1 1
i = (Mi Mi1 )(xi xi1 )
xi xi1 6
1
i = fi i xi Mi (xi xi1 )2 .
6
Introduciendo la notacin hi xi xi1 podemos escribir:
 
Mi1 Mi 1 (x xi1 )
Si (x) = (xi x) +
3
(x xi1 ) + fi Mi hi
3 2
+
6hi 6hi 6 hi
 
1 (xi x)
+ fi1 Mi1 h2i . (3.14)
6 hi

Falta calcular los Mi , para ello, se hace uso de la condicin que nos queda Si (xi ) =

Si+1 (xi ), i = 1, . . . , n 1, obteniendo el sistema de n 1 ecuaciones

ai Mi1 + Mi + ci Mi+1 = di , (3.15)

donde los coecientes vienen dados por las expresiones

hi hi+1
ai = , ci = ,
2(hi+1 + hi ) 2(hi+1 + hi )
!
3 fi+1 fi f fi1
di = i .
hi+1 + hi hi+1 hi

Ahora imponemos las condiciones segn el spline que queramos determinar. Vamos
a hacer el caso en que S1 (x0 ) = A y Sn (xn ) = B. En este caso, de (3.12)(3.13)
tenemos

A = S1 (x0 ) = M0 ,
B = Sn (xn ) = Mn .

76
3.3 Interpolacin por splines

Por tanto, una vez hemos determinado M0 y Mn , slo nos quedan por determinar
M1 , . . . , Mn1 a partir de (3.15). En forma matricial, el sistema a resolver es

1 c1 0 0 M1 d1 a 1 M0
a2 1 c2
0 M2
d2
. . . ..




0 . . . . . . . .
. =
.
. .
. .
. . . .
.. .. .. .. Mn2 dn2
0 an1 1 Mn1 dn1 cn1 Mn

Hemos obtenido un sistema cuya matriz de coecientes es tridiagonal. Para su


resolucin podramos utilizar el algoritmo de Thomas visto en el captulo anterior.
Una vez resuelto el sistema, basta sustituir en (3.14) para obtener los distintos
polinomios del spline cbico.

Ejemplo 3.11 Considerar la tabla de valores

x 0 1 2 3 4 5
f (x) 0 1 4 9 16 25

Obtener el spline natural que interpola los puntos de la tabla.

Solucin:
Como el spline pedido es natural, tenemos que M0 = M5 = 0. Teniendo en cuenta
que hj = 1, j = 1, . . . , 5, calculamos los valores ai = 0.25, ci = 0.25, di = 3,
i = 1, . . . , 4, que dan lugar a la matriz

1 c1 0 0 1 0.25 0 0
a2 1 c2 0 0.25 1 0.25 0
A=
0 a 3 1 c3 = 0
.
0.25 1 0.25
0 0 a4 1 0 0 0.25 1

Tenemos que resolver el sistema



M1 d1
M2 d 2
A
M3 = d 3


M4 d4

cuya solucin es
M1 2.526
M2 1.895
= .
M3 1.895
M4 2.526
77
Captulo 3. Interpolacin y aproximacin de funciones

Sustituyendo en (3.14) obtenemos el spline


 
2.526 3 2.526
S1 (x) = x + 1 x,
6 6
 
2.526 1.895 1.895
S2 (x) = (2 x)3 + (x 1)3 + 4 (x 1)
6 6 6
 
2.526
+ 1 (2 x) ,
6
 
1.895 1.895 1.895
S3 (x) = (3 x)3 + (x 2)3 + 9 (x 2)
6 6 6
 
1.895
+ 4 (3 x) ,
6
 
1.895 2.526 2.526
S4 (x) = (4 x)3 + (x 3)3 + 16 (x 3)
6 6 6
 
1.895
+ 9 (4 x) ,
6
 
2.526 2.526
S5 (x) = (5 x) + 25(x 4) + 16
3
(5 x) .
6 6

En la Figura 3.5, representamos los puntos de la tabla junto con la grca del
spline obtenido.

Ejemplo 3.12 Aproximar mediante splines cbicos la funcin de Runge utilizan-


do nodos igualmente espaciados.

Solucin:
En la Figura 3.6 representamos la funcin de Runge (Ecuacin (3.11)) junto a la
aproximacin polinnica mediante splines cbicos utilizando 9 nodos igualmente
espaciados. Podemos observar que la interpolacin por splines para la funcin de
Runge no tiene los mismos problemas que la interpolacin utilizando el polinomio
interpolador (ver Figura 3.3).

Hemos descrito con detalle los splines cbicos, pero obviamente, utilizando la De-
nicin 3.1 se puede proceder de forma anloga para otros grados del polinomio que
se construye entre dos puntos soporte consecutivos. Si, por ejemplo, son polino-
mios de grado 1 (rectas) se obtiene una funcin quebrada en la que cada segmento
une dos puntos soporte consecutivos y que es un tipo de interpolacin que se uti-
liza desde hace tiempo para calcular valores de funciones tabuladas haciendo un
78
3.4 Derivacin e integracin numrica

25

Datos
Spline

20

15

10

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Figura 3.5: Interpolacin de los datos del Ejemplo 3.11 mediante un spline natural.

clculo muy sencillo que utiliza slo los dos valores ms cercanos disponibles en la
tabla.

3.4 Derivacin e integracin numrica

3.4.1 Derivacin numrica


Como veremos a lo largo del curso, con mucha frecuencia es necesario conocer el
valor aproximado de la derivada de una funcin en varios puntos. Veremos cmo,
a partir del clculo de una funcin en valores prximos al que se quiere calcular
la derivada, es posible obtener una aproximacin a la misma. Si aproximamos
esta funcin por el polinomio interpolador en los puntos vecinos considerados es
inmediato obtener, derivando el polinomio, una aproximacin a la derivada de la
funcin.

Sin embargo, si conocemos el valor de la funcin en un nmero de puntos igualmen-


te espaciados es posible obtener aproximaciones a la derivada de manera sencilla
y que a la vez nos permiten conocer el orden de aproximacin.
79
Captulo 3. Interpolacin y aproximacin de funciones

0.9 F. Runge
Datos
0.8 Spline

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1

Figura 3.6: Interpolacin de la funcin de Runge por spline con nueve puntos soporte
igualmente espaciados.

Dada la funcin, f (x), supongamos que queremos calcular una aproximacin al


valor de su derivada evaluada en x = x0 , y que conocemos los siguientes valores
de la funcin
x0 2h x0 h x0 x0 + h x0 + 2h
f (x0 2h) f (x0 h) f (x0 ) f (x0 + h) f (x0 + 2h)

Si aplicamos el desarrollo de Taylor a las funciones f (x0 +h) y f (x0 h) obtenemos


h2  h3  h4 iv)
f (x0 + h) = f (x0 ) + hf  (x0 ) +
f (x0 ) + f (x0 ) + f (x0 ) + O(h5 )
2! 3! 4!
h2 h3  h4 iv)
f (x0 h) = f (x0 ) hf  (x0 ) + f  (x0 ) f (x0 ) + f (x0 ) + O(h5 ).
2! 3! 4!
Restando las dos ecuaciones tenemos
h3 
f (x0 + h) f (x0 h) = 2hf  (x0 ) + f (x0 ) + O(h5 ),
3
y despejando f  (x0 ) obtenemos
f (x0 + h) f (x0 h) h2 
f  (x0 ) = f (x0 ) + O(h4 ). (3.16)
2h 3!
80
3.4 Derivacin e integracin numrica

Si h es sucientemente pequeo, podemos tomar la aproximacin


f (x0 + h) f (x0 h)
f  (x0 )  , (3.17)
2h
donde sabemos que estamos cometiendo un error de orden O(h2 ), por lo que de-
cimos que es una aproximacin de segundo orden.

Por otro lado, si en vez de restar las funciones las sumamos obtenemos
h4 iv)
f (x0 + h) + f (x0 h) = 2f (x0 ) + h2 f  (x0 ) + f (x0 ) + O(h5 ), (3.18)
12
y si despejamos f  (x0 ) obtenemos

f (x0 h) 2f (x0 ) + f (x0 + h) h2 iv)


f  (x0 ) = f (x0 ) + O(h3 ). (3.19)
h2 12
Por tanto, podemos aproximar el valor de la segunda derivada por
f (x0 h) 2f (x0 ) + f (x0 + h)
f  (x0 )  , (3.20)
h2
siendo sta una aproximacin de segundo orden. Estas aproximaciones tanto a la
primera como a la segunda derivada nos sern de gran utilidad en el desarrollo de
mtodos numricos para resolver ecuaciones diferenciales.

Si se quiere obtener resultados ms precisos podemos hacer uso de la funcin


evaluada en ms puntos. Por ejemplo, es inmediato ver que si en (3.16) en vez de
tomar los dos puntos vecinos tomamos los siguientes, se tiene
f (x0 + 2h) f (x0 2h) h2
f  (x0 ) = 4 f  (x0 ) + O(h4 ). (3.21)
4h 3!
Por tanto, si multiplicamos por 4 la ecuacin (3.16) y le restamos (3.21) se cancela
el trmino dominante del error, obteniendo
1
f  (x0 ) = (f (x0 2h) 8f (x0 h) + 8f (x0 + h) f (x0 + 2h)) + O(h4 )
12h
(3.22)
que tiene un error de orden O(h4 ).

Es posible tambin aproximar el valor de la derivada teniendo en cuenta slo puntos


que se encuentran a la derecha de x0 o a su izquierda, o si los puntos no estn
igualmente espaciados.

Un mtodo alternativo para calcular aproximaciones de la derivada de una funcin


basadas en los valores de la funcin en una serie de puntos hace uso del polinomio
interpolador. Supongamos, por ejemplo, que queremos calcular la derivada f  (x0 ),
basndonos en la siguiente tabla de puntos
81
Captulo 3. Interpolacin y aproximacin de funciones

x0 h x0 x0 + h
f (x0 h) f (x0 ) f (x0 + h)

Se calcula el polinomio interpolador de Lagrange asociado con la tabla. Para ello,


se tiene
1
L2,0 (x) = (x x0 ) (x x0 h) ,
2h2
1
L2,1 (x) = 2 (x x0 + h) (x x0 h) ,
h
1
L2,2 (x) = (x x0 + h) (x x0 ) .
2h2
y, por tanto,

f (x0 h) f (x0 )
P2 (x) = (x x0 ) (x x0 h) (x x0 + h) (x x0 h)
2h2 h2
f (x0 + h)
+ (x x0 + h) (x x0 ) .
2h2

Derivando se obtiene que

f (x0 + h) f (x0 h)
P2 (x0 ) = f  (x0 ) ,
2h
que coincide con (3.17).

Usando esta tcnica se pueden obtener aproximaciones de la derivada de una fun-


cin que se basen en cualquier conjunto de puntos. De la misma forma, se pueden
obtener frmulas que aproximen las derivadas de orden superior de una funcin
en un punto.

Por otro lado, si se tiene



un conjunto de puntos igualmente espaciados y una
aproximacin de O h2 de la derivada de una funcin

f  (x0 ) = D0 (h) + Ch2 ,

si evaluamos esta misma expresin con un paso 2h, se tiene

f  (x0 ) = D0 (2h) + C4h2 ,

y, por tanto,
4f  (x0 ) f  (x0 ) 4D0 (h) D0 (2h) ,
o sea,
4D0 (h) D0 (2h)
f  (x0 ) ,
3
82
3.4 Derivacin e integracin numrica

que constituye una aproximacin de orden superior de la derivada. En particular,


si
f (x0 + h) f (x0 h)
D0 (h) = ,
2h
f (x0 + 2h) f (x0 2h)
D0 (2h) = ,
4h
se tiene,

4D0 (h) D0 (2h)


f  (x0 )
3
f (x0 + 2h) + 8f (x0 + h) 8f (x0 h) + f (x0 2h)
= ,
12h

que, com hemos visto antes (ecuacin (3.22)), es una aproximacin de orden O h4
de la derivada. A este proceso, se le conoce como el mtodo de extrapolacin de
Richardson.

3.4.2 Integracin numrica


Pasemos ahora a estudiar algunos mtodos numricos que nos permitan calcular
el valor de la integral denida dada por
" b
f (x) dx. (3.23)
a

Si el intervalo [a, b] es muy grande podemos realizar una particin del mismo en
N partes de longitud h = (b a)/N y tendremos en cuenta la propiedad de las
integrales denidas
" b " a+h " a+2h
f (x) dx = f (x) dx + f (x) dx + +
a a a+h
" a+(N 1)h " a+N h
+ f (x) dx + f (x) dx. (3.24)
a+(N 2)h a+(N 1)h

Suponiendo que h es sucientemente pequeo, vamos a estudiar varios mtodos


para aproximar el valor de la integral en cada uno de los intervalos por separado.
Lo estudiaremos en un intervalo genrico.

El proceso a seguir es el siguiente:

# +h
Consideramos el intervalo a integrar:
f (x) dx.
Evaluamos la funcin f (x) en m puntos del intervalo [, + h].
83
Captulo 3. Interpolacin y aproximacin de funciones

Calculamos el polinomio interpolador de Lagrange para estos puntos.


Calculamos la integral de este polinomio obteniendo una expresin de la
forma: " +h m

f (x) dx = h bi f ( + ci h) + O(hp+1 ). (3.25)
i=1

Los coecientes bi , ci reciben el nombre de pesos y nodos, respectivamente,


mientras que p es el orden del mtodo.

Obviamente, dependiendo de cuntos puntos se elijan y cmo se elijan se obtendrn


resultados ms o menos precisos.

Por ejemplo, evaluando f (x) en los dos extremos y tomando el polinomio inter-
polador de primer orden que pasa por ellos (la recta que une ambos puntos) se
obtiene
1
P1 (x) = ((x )(f ( + h) f ()) + hf ())
h
e integrando se tiene
" +h " +h
h
f (x) dx  P1 (x) dx = (f ( + h) + f ()). (3.26)
2
Este mtodo recibe el nombre de mtodo del trapecio, y se trata de un mtodo
de segundo orden. Otros mtodos ms precisos se pueden obtener utilizando ms
puntos del intervalo. Utilizando un polinomio interpolador de segundo grado en
una distribucin de puntos igualmente espaciados se obtiene el mtodo de Simpson,
que es de orden 4 y que viene dado por
" +h    
h h
f (x) dx = f ( + h) + 4f + + f () + O(h5 ). (3.27)
6 2

Una vez conocido el mtodo para evaluar un intervalo, podemos calcular la integral
buscada (3.24). Por ejemplo, si utilizamos el mtodo del trapecio y denotamos
fi = f (a + ih), i = 0, 1, 2, . . . , N , donde a + N h = b se tiene que
" b " a+N h
f (x) dx = f (x) dx
a a
h !
= (f0 + f1 ) + (f1 + f2 ) + . . . + (fN 2 + fN 1 ) + (fN 1 + fN )
2
N
 1
h
= (f0 + fN ) + h fi , (3.28)
2 i=1

que tiene una forma ms adecuada para ser implementada en un algoritmo num-
rico.
84
3.5 Ejercicios resueltos

3.5 Ejercicios resueltos

Ejercicio 3.1 Considera los valores de la siguiente tabla

xi 0 1/2 1 3/2 2
fi 0.5 1.2 2 1.4 0.7

Si P (x) es el polinomio que interpola estos datos, calcula P (0.2) de las siguientes
formas:

a) Hallando el polinomio interpolador de Lagrange.

b) Utilizando el algoritmo de Neville.

c) Utilizando la frmula de interpolacin de Newton.

Solucin:

a) Hallando el polinomio interpolador de Lagrange.


En primer lugar, calculamos los 5 polinomios de Lagrange de orden 4,

(x 1/2)(x 1)(x 3/2)(x 2)


L4,0 (x) =
(0 1/2)(0 1)(0 3/2)(0 2)
2
= (x 1/2)(x 1)(x 3/2)(x 2),
3
(x 0)(x 1)(x 3/2)(x 2)
L4,1 (x) =
(1/2 0)(1/2 1)(1/2 3/2)(1/2 2)
8
= x(x 1)(x 3/2)(x 2),
3
(x 0)(x 1/2)(x 3/2)(x 2)
L4,2 (x) =
(1 0)(1 1/2)(1 3/2)(1 2)
= 4x(x 1/2)(x 3/2)(x 2),
(x 0)(x 1/2)(x 1)(x 2)
L4,3 (x) =
(3/2 0)(3/2 1/2)(3/2 1)(3/2 2)
8
= x(x 1/2)(x 1)(x 2),
3
(x 0)(x 1/2)(x 1)(x 3/2)
L4,4 (x) =
(2 0)(2 1/2)(2 1)(2 3/2)
2
= x(x 1/2)(x 1)(x 3/2),
3
85
Captulo 3. Interpolacin y aproximacin de funciones

y a partir de stos obtenemos el polinomio interpolador buscado

P (x) = 0.5 L4,0 (x) + 1.2 L4,1 (x) + 2 L4,2 (x) + 1.4 L4,3 (x) + 0.7 L4,4 (x)
= 0.5 1.1 x + 8.33333 x2 7.6 x3 + 1.86667 x4 .

Luego: P (0.2) = 0.55552.


b) Utilizando el algoritmo de Neville
Este algoritmo es til cuando se quiere calcular directamente el valor de
P (0.2) a travs de la siguiente tabla:
0 1 2 3 4
x0 = 0 P0 = 0.5
P01
x1 = 1/2 P1 = 1.2 P012
P12 P0123
x2 = 1 P2 = 2 P123 P01234
P23 P1234
x3 = 3/2 P3 = 1.4 P234
P34
x4 = 2 P4 = 0.7
donde
(0.2 x0 )P1 (0.2 x1 )P0
P01 = = 0.78
x1 x0
(0.2 x1 )P2 (0.2 x2 )P1
P12 = = 0.72
x2 x1
(0.2 x2 )P3 (0.2 x3 )P2
P23 = = 2.96
x3 x2
(0.2 x3 )P4 (0.2 x4 )P3
P34 = = 3.22
x4 x3
(0.2 x0 )P12 (0.2 x2 )P01
P012 = = 0.768
x2 x0
(0.2 x1 )P23 (0.2 x3 )P12
P123 = = 0.048
x3 x1
(0.2 x2 )P34 (0.2 x4 )P23
P124 = = 2.752
x4 x2
(0.2 x0 )P123 (0.2 x3 )P012
P0123 = = 0.672
x3 x0
(0.2 x1 )P234 (0.2 x4 )P123
P1234 = = 0.4928
x4 x1
(0.2 x0 )P1234 (0.2 x4 )P0123
P01234 = = 0.55552
x4 x0
86
3.5 Ejercicios resueltos

La solucin viene dada por

P01234 = 0.55552

c) Utilizando la frmula de interpolacin de Newton.


Los coecientes de los polinomios de interpolacin de Newton se obtienen de
la siguiente tabla

0 1 2 3 4
x0 f [x0 ]
f [x0 , x1 ]
x1 f [x1 ] f [x0 , x1 , x2 ]
f [x1 , x2 ] f [x0 , x1 , x2 , x3 ]
x2 f [x2 ] f [x1 , x2 , x3 ] f [x0 , x1 , x2 , x3 , x4 ]
f [x2 , x3 ] f [x1 , x2 , x3 , x4 ]
x3 f [x3 ] f [x2 , x3 , x4 ]
f [x3 , x4 ]
x4 f [x4 ]

donde f [xi ] = fi , i = 0, . . . , 4, y el resto de coecientes se obtienen muy


fcilmente por diferencias divididas como sigue
1.2 0.5
f [x0 , x1 ] = f [0, 0.5] = = 1.4
0.5 0
2 1.2
f [x1 , x2 ] = f [0.5, 1] = = 1.6
1 0.5
1.4 2
f [x2 , x3 ] = f [1, 1.5] = = 1.2
1.5 1
0.7 1.4
f [x3 , x4 ] = f [1.5, 2] = = 0.2
2 1.5
1.6 1.4
f [x0 , x1 , x2 ] = f [0, 0.5, 1] = = 0.2
10
1.2 1.6
f [x1 , x2 , x3 ] = f [0.5, 1, 1.5] = = 2.8
1.5 0.5
1.4 + 1.2
f [x2 , x3 , x4 ] = f [1, 1.5, 2] = = 0.2
21
2.8 0.2
f [x0 , x1 , x2 , x3 ] = f [0, 0.5, 1, 1.5] = = 2
1.5 0
0.2 + 2.8
f [x1 , x2 , x3 , x4 ] = f [0.5, 1, 1.5, 2] = = 1.7333
2 0.5
1.7333 + 2
f [x0 , x1 , x2 , x3 , x4 ] = f [0, 0.5, 1, 1.5, 2] = = 1.86667
20

87
Captulo 3. Interpolacin y aproximacin de funciones

Hay muchas opciones distintas de escribir el polinomio segn el orden que


tomemos en la factorizacin. Para reducir errores de redondeo, es preferible
empezar a construir el polinomio empezando por los puntos vecinos al del
punto en el que queremos evaluar el polinomio. En nuestro caso, lo queremos
evaluar en x = 0.2, por lo que es preferible empezar por x0 = 0 o por
x1 = 0.5. Presentamos las dos opciones, cuyo resultado nal, obviamente, es
el mismo (si no hay errores de redondeo):

La primera de las opciones es:

P (x) = f [x0 ] + f [x0 , x1 ](x x0 ) + f [x0 , x1 , x2 ](x x0 )(x x1 )


+f [x0 , x1 , x2 , x3 ](x x0 )(x x1 )(x x2 )
+f [x0 , x1 , x2 , x3 , x4 ](x x0 )(x x1 )(x x2 )(x x3 ),

y sustituyendo por los coecientes obtenidos en la tabla se tiene


   
1 1
P (x) = 0.5 + 1.4 x + 0.2 x x 2x x (x 1)
2 2
   
1 3
+1.86667 x x (x 1) x .
2 2

Para la segunda opcin tenemos

P (x) = f [x1 ] + f [x1 , x0 ](x x1 ) + f [x1 , x0 , x2 ](x x1 )(x x0 )


+f [x1 , x0 , x2 , x3 ](x x1 )(x x0 )(x x2 )
+f [x1 , x0 , x2 , x3 , x4 ](x x1 )(x x0 )(x x2 )(x x3 ).

Teniendo en cuenta que

f [x1 , x0 ] = f [x0 , x1 ], f [x1 , x0 , x2 ] = f [x0 , x1 , x2 ], ...

vemos que podemos hacer uso de los coecientes de la tabla, obteniendo


el polinomio:
     
1 1 1
P (x) = 1.2 + 1.4 x + 0.2 x x2 x x (x 1)
2 2 2
   
1 3
+1.86667 x x(x 1) x .
2 2

Los dos polinomios son equivalentes, y en ambos casos se obtiene que


P (0.2) = 0.55552.

88
3.5 Ejercicios resueltos

Ejercicio 3.2 Dadas las funciones f1 (x) = ex , f2 (x) = sen(x), f3 (x) = cos(x),
obtn las aproximaciones de las derivadas f1 (1), f2 (1), y f3 (1) usando la aproxi-
macin del cociente incremental
f (1 + h) f (1)
f  (1) ,
h
con h = 10k , k = 1, 2, . . . , 6. Repite los clculos utilizando la aproximacin de
segundo orden de la derivada
f (1 + h) f (1 h)
f  (1) .
2h

Solucin:
Si se utiliza la primera aproximacin de la derivada se obtienen los siguientes
valores

h f1 (x) = ex f2 (x) = sen(x) f3 (x) = cos(x)


0.1 2.8588 0.49736 -0.86706
0.01 2.7319 0.53609 -0.84416
0.001 2.7196 0.53988 -0.84174
0.0001 2.7184 0.54026 -0.84150
0.00001 2.7183 0.54030 -0.84147
0.000001 2.7183 0.54030 -0.84147
Valor exacto 2.7183 0.54030 -0.84147

Si se utiliza ahora la aproximacin de segundo orden de la derivada, se tienen los


valores

h f1 (x) = ex f2 (x) = sen(x) f3 (x) = cos(x)


0.1 2.7228 0.53940 -0.84007
0.01 2.7183 0.54029 -0.84146
0.001 2.7183 0.54030 -0.84147
0.0001 2.7183 0.54030 -0.84147
0.00001 2.7183 0.54030 -0.84147
0.000001 2.7183 0.54030 -0.84147
Valor exacto 2.7183 0.54030 -0.84147

Ejercicio 3.3 Repite el proceso para obtener la aproximacin


f (x0 + h) f (x0 h)
f  (x0 ) ,
2h
basndose en la formulacin de Newton del polinomio interpolador.
89
Captulo 3. Interpolacin y aproximacin de funciones

Solucin:
El primer paso consiste en construir el polinomio interpolador de Newton asociado
a la tabla

x x0 h x0 x0 + h
f (x) f (x0 h) f (x0 ) f (x0 + h)

El polinomio de Newton asociado a ((x0 h) , f (x0 h)) es

P0 (x) = f (x0 h) .

El polinomio de Newton asociado a (x0 h, f (x0 h)), (x0 , f (x0 )) es

f (x0 ) f (x0 h)
P1 (x) = f (x0 h) + (x x0 + h) .
h

Y, por ltimo el polinomio asociado a los puntos de la tabla es


1
P2 (x) = f (x0 h) + (f (x0 ) f (x0 h)) (x x0 + h)
h
1
+ (f (x0 + h) + f (x0 h) 2f (x0 )) (x x0 + h) (x x0 ) .
2h2

Derivando,
1
P2 (x) = (f (x0 ) f (x0 h))
h
1
+ 2 (f (x0 + h) + f (x0 h) 2f (x0 )) ((x x0 ) + (x x0 + h)) ,
2h
y, por tanto,
1
P2 (x0 ) = (f (x0 + h) f (x0 h)) .
2h


Ejercicio 3.4 Obtener la aproximacin de f  (x0 ) con menor error de trunca-


miento que se basa en f (x0 ), f (x0 + x) y f (x0 + 2x).

Solucin:
Se escribe
1 1

f (x0 + x) = f (x0 ) + xf  (x0 ) + x2 f  (x0 ) + x3 f  (x0 ) + O x4 ,


2 6
4 8

f (x0 + 2x) = f (x0 ) + 2xf (x0 ) + x f (x0 ) + x3 f  (x0 ) + O x4 .


 2 
2 6
90
3.5 Ejercicios resueltos

Escribimos ahora,

af (x0 ) + bf (x0 + x) + cf (x0 + 2x)


1

= (a + b + c)f (x0 ) + x(b + 2c)f  (x0 ) + x2 (b + 4c)f  (x0 ) + O x3 .


2

Se impone que

a+b+c=0
b + 2c = 1
b + 4c = 0

cuya solucin es
3 1
a= , b=2, c= .
2 2
Por tanto queda
3 1

f (x0 ) + 2f (x0 + x) f (x0 + 2x) = xf  (x0 ) + O x3 ,


2 2
y la aproximacin se escribe
1

f  (x0 ) = (3f (x0 ) + 4f (x0 + x) f (x0 + 2x)) + O x2 .


2x


Ejercicio 3.5 Demuestra que


2f0 5f1 + 4f2 f3
f  (x0 ) ,
h2
siendo fi = f (xi ), i = 0, . . . , 3.

Solucin:
Si usamos el desarrollo de Taylor, se puede escribir
1 1

f1 = f0 + hf0 + h2 f0 + h3 f0 + O h4 ,


2 3!
1 1

f2 = f0 + 2hf0 + 4h2 f0 + 8h3 f0 + O h4 ,


2 3!
1 1

f3 = f0 + 3hf0 + 9h2 f0 + 27h3 f0 + O h4 .


2 3!

Si suponemos que
1
f  (x0 ) = (a0 f0 + a1 f1 + a2 f2 + a3 f3 ) ,
h2
91
Captulo 3. Interpolacin y aproximacin de funciones

haciendo uso de los desarrollos de Taylor, se obtiene el sistema

a0 + a 1 + a 2 + a 3 = 0,
a1 + 2a2 + 3a3 = 0,
1 4 9
a1 + a2 + a3 = 1,
2 2 2
1 8 27
a1 + a2 + a3 = 0,
6 6 6
cuya solucin es
a0 = 2, a1 = 5, a2 = 4, a3 = 1.


Ejercicio 3.6 Considera los valores de la siguiente tabla

x 0 1 2
2
f (x) = ex 1 1
e  0.36788 1
e4  0.018316

A partir de estos datos calcula:

2 2
dex d2 ex
a) Una aproximacin a (1) y (1). Compara con las soluciones
dx dx2
exactas:
2 2
dex 1 d2 ex 1
(1) = 2  0.73576, (1) = 2  0.73576
dx e dx2 e

b) La funcin error viene dada por


" x
2 2
erf(x) = es ds.
0

Aproxima el valor de la integral en el intervalo x [0, 2], (esto es, aproxima


el valor de erf(2)) utilizando:

i) Dos pasos con el mtodo del trapecio.


ii) Un paso con el mtodo de Simpson.

Halla el error cometido en cada caso comparando con la solucin exacta


(erf(2) = 0.99532).

92
3.5 Ejercicios resueltos

Solucin:

a)
2
dex 1
e4 1
(1)   0.49084 ,
dx 2
2
d2 ex e4 2 e + 1
1 1
(1)   0.28256 ,
dx2 12
donde vemos que se trata de aproximaciones bastante pobres debido a la
gran separacin entre los puntos.
b) i)     
2 1 1 1 1 1
T1 = 1+ + + 4 = 0.98963 ,
2 e 2 e e
ErrT 1 = |erf(2) T1 | = 0.0056917 .
ii)  
2 2 1 1
S1 = 1 + 4 + 4 = 0.93649 ,
6 e e
ErrS1 = |erf(2) S1 | = 0.058830 .

En este ejercicio, el mtodo del trapecio, que es de segundo orden, da una


solucin ms precisa que el mtodo de Simpson porque hemos utilizado pasos
de integracin grandes.

Ejercicio 3.7 Repite el Ejercicio 3.6 pero utilizando los datos de la siguiente tabla
que contiene ms puntos

1 3
x 0 2 1 2 2
f (x) 1 1
e1/4
 0.77880 1
e  0.36788 1
e9/4
 0.10540 1
e4  0.018316
2 2
dex d2 ex
a) Aproxima (1) y (1) utilizando slo el valor en x = 1 y sus dos
dx dx2
vecinos. Compara con las soluciones exactas.
b) Aproxima el valor de erf(2) utilizando:
i) Cuatro pasos con el mtodo del trapecio.
ii) Dos pasos con el mtodo de Simpson.
Halla el error cometido en cada caso.
93
Captulo 3. Interpolacin y aproximacin de funciones

Solucin:

a)
2
dex 1
e9/4
1
e1/4
(1)   0.67340
dx 1
2
d2 ex 1
e9/4
2 1e + 1
e1/4
(1)  1
2  0.59376
dx2
2
donde vemos que las aproximaciones son mejores que las anteriores debido
a la menor separacin entre los puntos.

b) i)
        
2 1 1 1 1 1 1 1 1 1 1 1
T2 = 1+ + + + + + + 4
4 e1/4 4 e1/4 e 4 e e9/4 4 e9/4 e
    
2 1 1 1 1 1 1
= 1+ + + + 9/4  0.99367
4 e4 2 e1/4 e e

ErrT 2 = |erf(2) T2 |  0.0016505

ii)
    
2 1 1 1 1 1 1 1
S2 = 1 + 4 1/4 + + + 9/4 + 4 = 0.99502
6 e e 6 e e e

ErrS2 = |erf(2) S2 |  0.00030349

Vemos ahora que el mtodo de Simpson, que es de cuarto orden, es bastante


ms preciso que el del trapecio, que es de segundo orden, siendo la diferencia
mayor segn vamos reduciendo los pasos de integracin.

Ejercicio 3.8 Considera las siguientes tablas de datos

x 2 4 x 2 4 6
I) II)
f (x) 5 12 f (x) 5 12 26

Construye la tabla de diferencias divididas para la tabla I) y escribe los dos po-
linomios de Newton que puedes contruir a partir de estos coecientes. Repite lo
mismo para la tabla II) escribiendo ahora los 4 polinomios correspondientes.

94
3.5 Ejercicios resueltos

Solucin:
Los coecientes de los polinomios de interpolacin de Newton se obtienen de la
siguiente tabla

0 1 2
x0 = 2 f [x0 ] = 5
7
f [x0 , x1 ] = 2
7
x1 = 4 f [x1 ] = 12 f [x0 , x1 , x2 ] = 8
f [x1 , x2 ] = 7
x2 = 6 f [x2 ] = 26

Observemos que la tabla anterior se corresponde a los coecientes para la tabla II)
y los datos no resaltados en negrita corresponden a los coecientes para la tabla I).

Los polinomios para la tabla I) son

P (x) = f [x0 ] + f [x0 , x1 ](x x0 ),


P (x) = f [x1 ] + f [x1 , x0 ](x x1 ).

Y para la tabla I) tenemos los siguientes polinomios de interpolacin de Newton

P (x) = f [x0 ] + f [x0 , x1 ](x x0 ) + f [x0 , x1 , x2 ](x x0 )(x x1 ),


P (x) = f [x1 ] + f [x1 , x0 ](x x1 ) + f [x1 , x0 , x2 ](x x1 )(x x0 ),
P (x) = f [x1 ] + f [x1 , x2 ](x x1 ) + f [x1 , x2 , x0 ](x x1 )(x x2 ),
P (x) = f [x2 ] + f [x2 , x1 ](x x2 ) + f [x2 , x1 , x0 ](x x2 )(x x1 ).

Ejercicio 3.9 A partir de los datos de la siguiente tabla

x 0 1 2
f (x) = 2x 1 2 4

a) Calcula una aproximacin numrica a la integral


" 2
I= 2x dx
0

utilizando dos pasos del mtodo del trapecio. Calcula el error cometido (toma
ln(2)  0.69)
b) Aplica un mtodo de segundo orden para aproximar f  (1) y calcula el error
cometido.
95
Captulo 3. Interpolacin y aproximacin de funciones

Solucin:
a) La solucin exacta es
" 2
3
2x dx =  4.32 .
0 ln(2)
Utilizando dos pasos del mtodo del trapecio se tiene
1 1 9
I (1 + 2) + (2 + 4) = = 4.5 .
2 2 2
El error cometido es |4.5 4.32| = 0.18.
b) De la tabla deducimos que h = 1 y, por tanto, la aproximacin a f  (1) viene
dada por
f (2) f (0) 40
f  (1)  = = 2.
2 2
La solucin exacta es f  (1) = 2 ln(2) = 1.38, y, por tanto, el error cometido
es |2 1.38| = 0.62.

3.6 Ejercicios propuestos

1. Calcula el polinomio interpolador, P (x), para los siguientes datos

xi 0 0.5 1 1.5 2
fi 0.5 1.2 2 1.4 0.7

Calcula P (0.2) y P (2.5) utilizando los mtodos de Neville, Lagrange y New-


ton. Analiza los resultados obtenidos.

2. Aproxima 3 usando la funcin f (x) = 3x y las abcisas x0 = 1, x1 = 0,
x2 = 1, x3 = 2, x4 = 3, utilizando:
a) El mtodo de Neville.
b) El mtodo de Lagrange.
c) El mtodo de Newton.
d ) Un spline natural.
e) Un spline S(x) tal que S  (x0 ) = f0 , S  (x4 ) = f4 .
f ) Un spline no-nudo.
Compara los resultados obtenidos.
96
3.6 Ejercicios propuestos


3. Aproxima 3 usando la funcin f (x) = x y las abcisas x0 = 0, x1 = 1,
x2 = 2, x3 = 4, x4 = 9, utilizando:
a) El mtodo de Neville.
b) El mtodo de Lagrange.
c) El mtodo de Newton.
d) Un spline natural.
e) Un spline S(x) tal que S  (x0 ) = f0 , S  (x4 ) = f4 .
f) Un spline no-nudo.
Compara con los resultados obtenidos en el Ejercicio 2.
4. Calcula un spline natural, S(x), que interpole los nodos de la tabla del Ejerci-
cio 1. Utilzalo para calcular S(0.2) y S(2.5). Analiza los resultados obtenidos
y compara con los resultados del Ejercicio 1.
5. Calcula el polinomio interpolador de Newton para la siguiente funcin tabu-
lada
x 2 4 6 8
f (x) 5 12 26 45

Si a posteriori sabemos que f (10) = 70, determina el nuevo polinomo interpo-


lador de Newton. Calcula una aproximacin a f (4.5) utilizando el polinomio
interpolador.
6. Considera el Ejercicio 2 y calcula las aproximacines a segundo orden de
f  (0), f  (1), f  (2) y f  (0), f  (1), f  (2), y compara con la solucin exacta.
7. Considera el Ejercicio 2 y calcula de forma aproximada la integral
" 3
80
f (x) dx =
1 3 ln(3)
dividiendo el intervalo en 4 partes y utilizando el mtodo del trapecio; y
dividindolo en 2 partes y utilizando el mtodo de Simpson. Compara ambas
aproximaciones con la solucin exacta dada.
8. La funcin error viene dada por
" x
2 2
erf(x) = es ds.
0
Considera los valores de la siguiente tabla
x 0 1 2
1 1
f (x) 1 e e2

Utiliza el mtodo de Simpson con un solo paso para aproximar el valor de


erf(1), y compara con la solucin exacta (erf(1) = 0.842701).
97
Captulo 4

Mtodos numricos para problemas


de valor inicial

4.1 Introduccin

Los mtodos analticos de integracin de ecuaciones diferenciales son tiles para


resolver slo una pequea parte de las ecuaciones diferenciales que aparecen en la
prctica. Este hecho justica, junto al avance de la capacidad de computacin, el
inters prctico por los mtodos que se denominan aproximados.

Los mtodos numricos son los mtodos aproximados de uso ms extendido en


la resolucin de problemas reales cientcos y tcnicos. Se caracterizan porque
proporcionan una solucin aproximada dada mediante una tabla de valores, y
tienen la gran ventaja de basarse en procedimientos generales que no dependen
del tipo de ecuacin a resolver. No obstante, obtener resultados con una precisin
aceptable con estos mtodos exige tener que hacer un gran nmero de clculos,
para lo cual es necesario el uso del ordenador. Dedicamos este captulo a exponer
una introduccin a los mtodos numricos para la resolucin de problemas de valor
inicial asociados a una ecuacin diferencial.

Recordemos que un problema de valores iniciales consiste en

Dada una ecuacin diferencial obtener la funcin solucin y(t) de


la que se conoce su valor y el de sus derivadas en un punto inicial t0 .

En caso de resolver analticamente el problema, las condiciones iniciales son las


que permiten determinar las constantes arbitrarias de la solucin general y, de esta
99
Captulo 4. Mtodos numricos para problemas de valor inicial

forma, llegar a la expresin analtica de la solucin y(t) del problema de valores


iniciales. En cambio, si resolvemos el problema mediante un mtodo numrico
obtenemos, para cada punto t que se considere, un valor aproximado de la solucin
evaluada en dicho punto.

En este captulo presentamos mtodos numricos para obtener un valor aproxima-


do de la solucin y(t) del problema de valor inicial

y  = f (t, y),
(4.1)
y(t0 ) = y0 ,
donde y Rp . Esto es, estudiaremos la resolucin de sistemas de ecuaciones dife-
renciales ordinarias (EDOs) con condiciones iniciales, donde y = (y1 , . . . , yp )T , f =
(f1 , . . . , fp )T y

y1 f1 (t, y1 , . . . , yp ) y1,0
d . ..
.. = . , y0 = ... . (4.2)
dt
yp fp (t, y1 , . . . , yp ) yp,0
Supondremos siempre que la funcin f es tal que el problema tiene solucin nica
en un intervalo que contiene a t0 .

En el caso de un problema de valor inicial asociado a una ecuacin diferencial


lineal de orden p de la forma

y p) = f (t, y, y  , . . . , y p1) ),
p1)
y(t0 ) = y0 , . . . , y p1) (t0 ) = y0 ,

consideraremos el cambio de variables

y1 = y, y2 = y  , . . . , yp = y p1) ,

obteniendo un sistema de ecuaciones diferenciales de primer orden equivalente



y1 y2 y1 (t0 ) y0

d ... .. .. ..
. . .
= , p2) .
=
dt yp1 yp yp1 (t0 ) y0
yp f (t, y1 , y2 , . . . , yp ) yp (t0 ) p1)
y0

Una ecuacin diferencial lineal de orden p de la forma

y p) + ap1 (t)y p1) + + a1 (t)y  + a0 (t)y = g(t),

se corresponde con el caso particular en que

f (t, y1 , y2 , . . . , yp ) = g(t) ap1 (t)yp a1 (t)y2 a0 (t)y1 .


100
4.1 Introduccin

Ejemplo 4.1 Escribir la ecuacin de segundo orden

y  + a1 (t)y  + a0 (t)y = g(t), y(t0 ) = y0 , y  (t0 ) = y0 ,

como un sistema de ecuaciones de primer orden.

Solucin:
Denotamos
y1 = y, y2 = y  ,
derivamos y1 , y2 respecto a t y teniendo en cuenta la ecuacin de segundo orden
se llega a la expresin buscada
       
d y1 y2 y1 (0) y0
= , = .
dt y2 g(t) a0 (t)y1 a1 (t)y2 y2 (0) y0


En este captulo estudiaremos algunos de los mtodos numricos ms elementales


y conocidos para resolver EDOs. Consideraremos que la funcin f es Lipschitz,
esto es, existe 0 tal que, para una determinada norma

f (t, v) f (t, w) v w, t [0, t ], v, w Rp .

Por simplicidad, siempre consideraremos que la funcin f es sucientemente suave


y supondremos que es analtica. Por tanto, siempre se podr desarrollar en serie
de Taylor. Nuestro objetivo ser obtener las aproximaciones yn+1 y(tn+1 ), n =
0, 1, . . . , donde tn+1 = tn + hn , n = 0, 1, . . . , con hn > 0 un paso de integracin
sucientemente pequeo, y para el que podremos hacer uso de los valores calculados
previamente y0 , . . . , yn y la ecuacin (4.1). El valor hn > 0 puede variar en cada
paso de integracin aunque por simplicidad en la presentacin se tomar constante
y, por tanto, tn = t0 + nh.

Introducimos algunos conceptos que sern utilizados a lo largo del curso.

Denicion 4.1 Mtodo de un Paso: es una transformacin de la forma yn+1 =


h (tn , yn ), esto es, proporciona una aproximacin a la solucin exacta y(tn+1 )
partiendo slo de la aproximacin que se obtuvo en el paso anterior.
Mtodo Multipaso: es una transformacin de la forma yn+1 = h (t0 , y0 , . . . , tn , yn ),
esto es, da una aproximacin a la solucin exacta y(tn+1 ) partiendo de las apro-
ximaciones que se obtuvieron en los pasos anteriores.
Mtodo Explcito: es una transformacin de la forma yn+1 = h (t0 , y0 , . . . , tn , yn ),
esto es, para calcular yn+1 slo requiere de valores conocidos.
Mtodo Implcito: es una transformacin de la forma

yn+1 = h (t0 , y0 , . . . , tn+1 , yn+1 ),

esto es, para calcular yn+1 hay que resolver una ecuacin implcita.
101
Captulo 4. Mtodos numricos para problemas de valor inicial

Partimos de la ecuacin diferencial (4.1), con el objetivo de obtener el valor de la


funcin y en el punto tf , conocido el valor de y en el punto t0 . Para ello, dividimos
el intervalo [t0 , tf ] en N subintervalos iguales, tomando tn = tn1 + h = t0 + nh,
t t
n = 1, 2, . . . , N , h = f N 0 , donde tomamos tN = tf . En el primer paso se
calcula un valor aproximado de la solucin exacta en t1 = t0 + h, que llamaremos
y1 . En el segundo paso, se calcula un valor aproximado, y2 , de la solucin exacta
en t2 = t1 + h, etc. En cada paso, los clculos se llevan a cabo mediante la misma
frmula.

4.2 Mtodo de Euler

El mtodo de Euler es el ms simple de los mtodos numricos de resolucin de


ecuaciones diferenciales. Se obtiene considerando el desarrollo de Taylor a primer
orden en h,
y(t0 + h) y(t0 ) + hy  (t0 ).
A partir de la ecuacin diferencial y  (t0 ) = f (t0 , y0 ), obtenemos

y1 = y0 + hf (t0 , y0 ) .

Anlogamente, utilizando y1 como condicin inicial, tenemos en el segundo paso,

y2 = y1 + hf (t1 , y1 ),

y, en general, el algoritmo recursivo viene dado por

y0 = y (t0 ) ,
yn+1 = yn + hf (tn , yn ) , n = 1, 2, . . .

Geomtricamente, este mtodo consiste en realizar una aproximacin de la curva


y(t) mediante un polgono cuyo primer lado es tangente a la curva en t0 (vase la
Fig. 4.1).

El error que se comete en la primera iteracin es,

1 = | y(t1 ) y1 |=| y(t1 ) y0 hf (t0 , y0 ) |=


 
 
= y(t0 ) + hy  (t0 ) + 1 h2 y  (t0 ) + y0 hf (t0 , y0 ) =
 2 
 
 1 2  
=  h y (t0 ) +  = O(h2 ) .
2 

A este error se le llama error local o error de truncamiento del mtodo.


102
4.2 Mtodo de Euler

y1 y1=y0+hf(x0,y0)

y(x1)

y0

x1 x
x0

Figura 4.1: Mtodo de Euler.

Lgicamente, el error aumentar a medida que aumente el nmero de iteraciones.


El valor prctico de este mtodo es limitado aunque resulta til para obtener al
menos una primera aproximacin de la solucin, para un valor de h sucientemente
pequeo.

Ejemplo 4.2 Considerar el problema de valor inicial y  = y t, con la condicin


y(0) = y0 = 1.5, cuya solucin analtica es
1 t
y =1+ e +t .
2
Calcular, mediante el mtodo de Euler, una aproximacin a y(1.5) tomando h =
0.25.

Solucin:
Tomamos h = 0.25 y realizamos los clculos, con un redondeo de cuatro decimales,
que guran en la siguiente tabla

n tn yn y (tn ) |y (tn ) yn |
0 0 1.5000 1.5000 0.0000
1 0.25 1.8750 1.8920 0.0170
2 0.50 2.2812 2.3244 0.0432
3 0.75 2.7265 2.8085 0.0820
4 1.00 3.2206 3.3591 0.1385
5 1.25 3.7758 3.9952 0.2194
6 1.50 4.4072 4.7408 0.3336
103
Captulo 4. Mtodos numricos para problemas de valor inicial

Al nal, se tiene que y(1.5) 4.4072 con un error de 0.3336. Como ya hemos
comentado, el error va aumentado a medida que aumenta el nmero de iteraciones.


Para el mtodo de Euler, el siguiente teorema nos da una cota para el error global
que se comete.

Teorema 4.1 Consideremos y(t) la solucin del problema del valor inicial

y  = f (t, y) , t0 t tf , y(t0 ) = y0 ,

y llamemos y0 , y1 , . . . , yn las aproximaciones generadas con el mtodo de Euler


con paso h. Supongamos que f es continua para t [t0 , tf ] e y ] , +[ y que
existen constantes L y M tales que
 
 f 
 (t, y) L , |y  | M .
 y 

Entonces, para n = 0, 1, 2, . . . , N , se cumple


hM L(tn t0 ) !
|y (tn ) yn | e 1 . (4.3)
2L

A continuacin introducimos otro concepto fundamental que es el orden de los


mtodos numricos.

Denicion 4.2 (Orden de un Mtodo) Dado un mtodo numrico que deno-


tamos por yn+1 = h (tn , yn ), diremos que el orden del mtodo es q si al reemplazar
la solucin aproximada, yn , por la correspondiente solucin exacta en tn se tiene
que
y(tn+1 ) h (tn , y(tn )) = O(hq+1 )
para todo h > 0, n 0 y para toda funcin f sucientemente suave.

Veamos cul es el orden del mtodo de Euler aplicando la denicin. Tenemos que
el mtodo viene dado por la transfomacin h (tn , yn ) = yn + hf (tn , yn ), donde
los valores aproximados deben de sustituirse por la solucin exacta, con lo que
obtenemos

y(tn+1 ) y(tn ) + hf (tn , y(tn )) (4.4)


 
1

= y(tn ) + hy  (tn ) + h2 y  (tn ) + y(tn ) + hy  (tn ) (4.5)


2
1 2 
= h y (tn ) + = O(h2 ),
2
por lo que se tiene que el mtodo de Euler es de primer orden.
104
4.3 Mtodo del desarrollo en serie de Taylor

Hemos

de resaltar que el error local o de truncamiento del mtodo de Euler es
O h2 mientras que el error global obtenido en (4.3) es O (h). Esta reduccin del
error local al error global en un grado de h es tpica de las tcnicas numricas para
problemas de valor inicial.

Ejemplo 4.3 Aplicar el mtodo de Euler al problema del pndulo adimensional

   
d
= , 0 = 0, 0 = 3/2,
dt sen()
t [0, 10] tomando como pasos de integracin h = 1/10 y h = 1/20. Dibujar n
frente a n en ambos casos y comparar los resultados.

Solucin:
El mtodo de Euler para este problema viene dado por
      
n+1 = n + hn
= +h
n+1 n sen() n n+1 = n h sen(n ),

y para alcanzar el tiempo nal tf = 10 utilizando un paso de integracin h = 1/10


deberemos repetir el algoritmo N = 10/h = 100 veces. Los resultados obtenidos se
muestran en la Figura 4.2 (la trayectoria exacta se corresponde con la lnea conti-
nua, la del modelo linealizado (sen() ) con lnea discontinua, y los resultados
del mtodo se corresponden con los cuadrados). Repetimos el mismo experimento
tomando ahora h = 1/20 (el algoritmo se aplica N = 10/h = 200 veces, esto es,
duplicamos el nmero de evaluaciones). Los resultados se corresponden con los
crculos, donde se aprecia: (i) el error cometido va creciendo segn se avanza en la
integracin y; (ii) si utilizamos un paso ms pequeo podemos obtener mayor pre-
cisin a costa de una mayor cantidad de clculos. Se aprecia que el error se reduce
aproximadamente a la mitad cuando dividimos por dos el paso de integracin,
como corresponde a un mtodo de primer orden.

4.3 Mtodo del desarrollo en serie de Taylor

El mtodo del desarrollo en serie de Taylor es un mtodo de un paso. Suponiendo


que la solucin, y = y(t), admite desarrollo en serie de Taylor en un entorno del
punto t = t0 , la solucin de la ecuacin diferencial en t1 se puede escribir

h2 hn
y(t1 ) = y(t0 + h) = y(t0 ) + y  (t0 )h + y  (t0 ) + + y n) (t0 ) + ,
2! n!

105
Captulo 4. Mtodos numricos para problemas de valor inicial

1.5

0.5
=d/dt

0.5

1.5

2
2 1 0 1 2

Figura 4.2: Mtodo de Euler aplicado al problema del Ejemplo 4.3.

donde los coecientes pueden ser calculados a partir de la ecuacin diferencial.


Tendremos
y(t0 ) = y0 ,
y  (t0 ) = f (t0 , y0 ),
 
f dy 
y  (t0 ) = + f = (ft + fy f )|(t0 ,y0 ) ,
t dt (t0 ,y0 )
fi
donde fy = f (esto es, (f )ij = yj ).

De esta forma, sucesivamente, pueden obtenerse las derivadas de y en (t0 , y0 ). Por


lo tanto, si consideramos el desarrollo de Taylor hasta orden 2 en h, obtenemos
1 2
y(t1 ) = y0 + f (t0 , y0 )h + h (ft + fy f )|(t0 ,y0 ) + O(h3 ), (4.6)
2!
donde denotamos por O(h3 ) a los siguientes trminos del desarrollo que sern
proporcionales a potencias de h iguales o superiores a 3. En este caso, podemos
aproximar y(t1 ) por y1
1
y1 = y0 + f (t0 , y0 )h + h2 (ft + fy f )|(t0 ,y0 ) . (4.7)
2
106
4.3 Mtodo del desarrollo en serie de Taylor

Una vez obtenido y1 , calculamos y2 sustituyendo en la expresin (4.7), t0 por t1 e


y0 por el valor y1 que hemos obtenido. El mtodo iterativo, consiste en seguir este
proceso obtenindose para la aproximacin n + 1,
1
yn+1 = yn + f (tn , yn )h + h2 (ft + fy f )|(tn ,yn ) .
2
Vemos que el mtodo de Euler puede considerarse tambin como el mtodo de
Taylor a primer orden.

Ejemplo 4.4 Construir los mtodos de Taylor de orden 1 y orden 2, para el pro-
blema de valor inicial

y  = y t2 + 1 , 0 t 2 , y(0) = 0.5 . (4.8)

Solucin:
El mtodo de Taylor de orden 1 (o mtodo de Euler) es

yn+1 = yn + hy  (tn ) = yn + hf (tn , yn ) .

Para el problema (4.8),


yn+1 = yn + h yn t2n + 1 = (1 + h)yn ht2n + h .

El mtodo de Taylor de orden 2 es de la forma


1
yn+1 = yn + hy  (ti ) + h2 y  (ti ) .
2

Para el problema (4.8), se tiene

y = y t2 + 1 ,
y  = y  2t = y t2 2t + 1 ,

y, por tanto, el mtodo de Taylor de orden 2 es



1

yn+1 = yn + h yn t2n + 1 + h2 yn t2n 2tn + 1 .


2

Este problema tiene como solucin analtica


1 t
y(t) = 1 e +2t + t2 ,
2
y nos permite comprobar el error cometido por el mtodo. 
107
Captulo 4. Mtodos numricos para problemas de valor inicial

Como puede observarse, el proceso a seguir en el mtodo del desarrollo de Taylor


es, en general, costoso desde el punto de vista de los clculos que hay que realizar.
Puede resultar interesante su aplicacin cuando la funcin f (t, y) admita derivadas
parciales respecto de t e y que sean fciles de calcular como son las funciones
polinmicas, en cuyo caso las derivadas sucesivas se calcularn fcilmente y se
anularn a partir de cierto trmino. En resumen, este mtodo permite aumentar
indenidamente la precisin tomando muchos trminos del desarrollo de Taylor,
siempre a costa de aumentar tambin el esfuerzo computacional.

4.4 Mtodos de Runge-Kutta

Como ya hemos comentado, el mtodo del desarrollo en serie de Taylor es compu-


tacionalmente costoso debido, sobre todo, a la complicacin creciente de las de-
rivadas de f . Los mtodos de Runge-Kutta (RK) evitan este clculo mediante la
evaluacin de f en uno o varios puntos auxiliares, elegidos adecuadamente, de for-
ma que el desarrollo en serie que se obtiene se ajuste al desarrollo de Taylor con
una aproximacin mejor que la del mtodo de Euler.

Para introducir los mtodos RK es interesante empezar por la siguiente ecuacin


escalar
y  = f (t), y(0) = y0 ,
#t
cuya solucin trivial es y(t) = y0 + 0 f ( ) d , o bien, para un paso de integracin
" tn+1
y(tn+1 ) = y(tn ) + f ( ) d, n = 0, 1, . . . .
tn

Como vimos en el captulo anterior, para h = tn+1 tn podemos considerar la


aproximacin
" tn+1 s

f ( ) d  h bl f (tn + cl h),
tn l=1

donde los bl son los pesos y los cl son los correspondientes nodos del mtodo elegido.
Por tanto, tenemos el siguiente mtodo numrico para aproximar la solucin
s

yn+1 = yn + h bl f (tn + cl h).
l=1

El siguiente paso es ver si es posible generalizar este procedimiento para resolver


nuestra EDO,
y  = f (t, y).

108
4.4 Mtodos de Runge-Kutta

Integrando ambas partes de la igualdad sobre el intervalo t [tn , tn+1 ] se tiene


" tn+1 " tn+1
y  (t) dt = f (t, y(t)) dt ,
tn tn

esto es, la solucin se puede escribir formalmente como


" tn+1
y(tn+1 ) = y(tn ) + f (t, y(t)) dt,
tn

por lo que podemos utilizar la aproximacin


s

yn+1 = yn + h bl f (tn + cl h, y(tn + cl h)). (4.9)
l=1

El problema de utilizar este mtodo radica en que los valores y(tn + cl h), l =
1, . . . , s, no son conocidos.

Los mtodos RK resuelven este problema y dan aproximaciones a los valores de


y(tn + cl h), l = 1, . . . , s, para conseguir que el mtodo nal sea del orden deseado.
Los mtodos RK se clasican en mtodos explcitos e implcitos y a continuacin
presentamos algunos de los ms sencillos de cada familia.

4.4.1 Mtodos RK explcitos


Un mtodo RK explcito de s etapas viene dado (para el caso particular en que
c1 = 0) por la siguiente forma recursiva de ir realizando los clculos

k1 = f (tn , yn ),
k2 = f (tn + c2 h, yn + ha2,1 k1 ),
k3 = f (tn + c3 h, yn + h(a3,1 k1 + a3,2 k2 )),
..
.
 s1
 
ks = f tn + cs h, yn + h as,j kj ,
j=1
s

yn+1 = yn + h bl k l . (4.10)
l=1

Como veremos, los parmetros ai,j junto con los bi , ci deben de elegirse de tal
manera que yn+1 sea una buena aproximacin a la solucin. Para ello, deben
satisfacer un sistema ecuaciones algebraicas polinmicas no lineales y cuya solucin
puede ser bastante compleja para mtodos de rdenes altos con muchas etapas.
109
Captulo 4. Mtodos numricos para problemas de valor inicial

Por ejemplo, el mtodo de Euler se puede considerar tambin como un mtodo


RK de primer orden de una sola etapa dado por
k1 = f (tn , yn ),
yn+1 = yn + hk1 . (4.11)

Veamos cmo es posible desarrollar mtodos de Runge-Kutta de orden 2.

Mtodo del punto medio: Utilizando el desarrollo de Taylor, tenemos


h2  h3
y (tn+1 ) = y (tn ) + hy  (tn ) + y (tn ) + y  ()
2 3!
h2  h3
= y (tn ) + hf (tn , y (tn )) + f (tn , y (tn )) + y  ()
2 3!
= y (tn ) + hf (tn , y (tn ))
 
h2 f f h3
+ (tn , y (tn )) + (tn , y (tn )) f (tn , y (tn )) + y  () ,
2 t y 3!
donde ]tn , tn+1 [.

Por otra parte, se puede buscar un mtodo de la forma


y (tn+1 ) = y (tn ) + ha1 f (tn + , y (tn ) + ) ,
que tenga el mismo error de truncamiento que el mtodo de Taylor de segundo
orden. Como
f f
a1 f (tn + , y (tn ) + ) a1 f (tn , y (tn ))+a1 (tn , y (tn ))+a1 (tn , y (tn )) ,
t y
para tener el mismo error de truncamiento se ha de cumplir
h h
1 = a1 , = a1 , f (tn , y (tn )) = a1 ,
2 2
o sea,
h h
a1 = 1 , = , = f (tn , y (tn )) .
2 2

Obtenemos de esta forma el mtodo del punto medio


 
h h
yn+1 = yn + hf tn + , yn + f (tn , yn ) .
2 2
Tambin se le conoce como algoritmo de Runge o primera frmula de Runge. Este
mtodo se puede reescribir siguiendo el esquema (4.12) como sigue
k1 = f (tn , yn ) ,
k2 = f (tn + h/2, yn + hk1 /2) ,
yn+1 = yn + hk2 ,
110
4.4 Mtodos de Runge-Kutta

esto es, se corresponde con el caso en que


1 1 1
s = 2, a2,1 = , b1 = 0, b2 = , c1 = 0, c2 = .
2 2 2

Como vemos, el mtodo necesita evaluar la funcin f dos veces en cada paso de
integracin, por lo que requiere de ms operaciones que en el caso del mtodo de
Euler. Por otro lado, este coste adicional se compensa porque
3
el mtodo suele ser
bastante

ms preciso. Tiene un error de truncamiento O h y un error global
O h2 .

Otra posible eleccin del mtodo numrico es

yn+1 = yn + h (a1 f (tn , yn ) + a2 f (tn + , yn + )) .

El parmetro adicional que se introduce permite la posibilidad de construir



muchos
mtodos de Runge-Kutta. Para que el error de truncamiento sea O h3 se obtienen
las siguientes relaciones,
h hf (tn , yn )
a1 + a2 = 1, = a2 , = a2 .
2 2
Dos de las posibles opciones se corresponden con los siguientes mtodos.
1
Mtodo de Euler modicado. Se obtiene tomando a1 = a2 = 2, = h,
= hf (tn , yn )
h
yn+1 = yn + (f (tn , yn ) + f (tn + h, yn + hf (tn , yn ))) ,
2
que es equivalente al siguiente algoritmo

k1 = f (tn , yn ) ,
k2 = f (tn + h, yn + hk1 ) ,
yn+1 = yn + h2 (k1 + k2 ) .

esto es, se corresponde con el caso


1
s = 2, a2,1 = 1, b1 = b2 = , c1 = 0, c2 = 1.
2
Tambin requiere de
dos evaluaciones de la
funcin

f por paso y tiene un error de
truncamiento O h3 y un error global O h2 .

Mtodo de Heun. Se corresponde con la siguiente eleccin de los parmetros:


a1 = 14 , a2 = 34 y = 23 h y = 23 hf (tn , yn )
  
h 2 2
yn+1 = yn + f (tn , yn ) + 3f tn + h, yn + hf (tn , yn ) .
4 3 3
111
Captulo 4. Mtodos numricos para problemas de valor inicial

Su algoritmo es
k1 = f (tn , yn ) ,
k2 = f (tn + 2h/3, yn + 2hk1 /3) ,
yn+1 = yn + h4 (k1 + 3k2 ) ,
esto es, se corresponde con el caso
2 1 3 2
s = 2, a2,1 = , b1 =
, b2 = , c1 = 0, c2 = ,
3 4 4 3
3
2

que tiene un error de truncamiento O h y un error global O h .

Mtodo estndard Runge-Kutta de orden 4. Es posiblemente el mtodo


Runge-Kutta ms conocido y utilizado porque mantiene un buen balance entre el
coste del mtodo y la precisin que se consigue con el mismo. Es de orden 4 y
requiere de 4 evaluaciones por paso. El mtodo viene dado por:

k1 =
f (tn , yn ) ,
k2 =
f (tn + h/2, yn + hk1 /2) ,
k3 =
f (tn + h/2, yn + hk2 /2) ,
k4 =
f (tn + h, yn + hk3 ) ,
yn+1 yn + h6 (k1 + 2k2 + 2k3 + k4 ) ,
=

en el que el error de truncamiento es O h5 y el error global del mtodo es O h4 .

4.4.2 Mtodos RK implcitos


Un mtodo RK implcito de s etapas viene dado por el siguiente esquema implcito

 s
ki = f tn + cj h, yi + h ai,j kj , i = 1, . . . , s,
j=1
s

yn+1 = yn + h bi k i . (4.12)
i=1

El mtodo es explcito si ai,j = 0, j i e implcito en caso contrario. Algunos de


los mtodos de primer y segundo orden ms utilizados son:

Mtodo de Euler implcito. Viene dado por el esquema

yn+1 = yn + hf (tn+1 , yn+1 ). (4.13)

o equivalentemente

k1 = f (tn + h, yn + hk1 ),
yn+1 = yn + hk1 , (4.14)
112
4.5 Mtodos multipaso

que es un mtodo de primer orden.

Este resultado se puede ver del modo siguiente. Si multiplicamos por h la primera
de las ecuaciones obtenemos

k1 = f (tn + h, yn + hk1 ),

y si ahora sumamos yn a las dos partes de la ecuacin

yn + k1 = yn + f (tn + h, yn + hk1 ).

Tomando yn+1 = yn + hk1 se obtiene la segunda de las ecuaciones.

Mtodo del trapecio. Es un mtodo de segundo orden que viene dado por el
esquema
h
yn+1 = yn + (f (tn , yn ) + f (tn+1 , yn+1 )), (4.15)
2
o equivalentemente

k1 = f (tn , yn ),
h
k2 = f (tn + h, yn + (k1 + k2 )),
2
h
yn+1 = yn + (k1 + k2 ). (4.16)
2

4.5 Mtodos multipaso

Los mtodos de Euler y de Runge-Kutta que se han expuesto son mtodos de un


paso. Esto es, para calcular la aproximacin yn+1 de y (tn+1 ), hacen uso slamente
de la aproximacin yn . Se podra mejorar el funcionamiento de los mtodos si al
calcular la aproximacin yn+1 , se tuviera en cuenta las aproximaciones evaluadas
previamente, yn , yn1 , . . . , ynk . Los mtodos que hacen uso de estas aproxima-
ciones se llaman mtodos multipaso.

Denicion 4.3 (Mtodo Lineal Multipaso (MLM)) Es un mtodo multipa-


so yn+1 = h (t0 , y0 , . . . , tn+1 , yn+1 ), donde h es una transformacin lineal en las
yk y la funcin f evaluada en diferentes puntos.

Suponiendo que yn , yn+1 , . . . , yn+s1 , s 0 son conocidos, la forma general de


representar los MLM es:
s
 s

l yn+l = h l f (tn+l , yn+l ), n = 0, 1, 2, . . . (4.17)
l=0 l=0

113
Captulo 4. Mtodos numricos para problemas de valor inicial

donde suponemos que $ss = 0 y, por tanto, podemos tomar s = 1, donde adems
se debe cumplir que l=0 l = 0. Diremos que el esquema (4.17) es un mtodo de
s pasos. Obsrvese que si s = 0 entonces el mtodo es explcito, siendo implcito
en caso contrario.

La principal peculiaridad de estos mtodos es que inicialmente slo conocemos y0 ,


y si s 2 entonces nos hace falta conocer tambin y1 , . . . , ys1 para empezar las
iteraciones. Estos valores se pueden obtener utilizando, por ejemplo, un mtodo
RK explcito.

Veamos cmo obtener algunos de estos mtodos. Partimos del problema de valor
inicial
dy
= f (t, y) , t0 t tn . (4.18)
dt
Integrando en el intervalo [tn , tn+1 ], tenemos
" tn+1
y (tn+1 ) y (tn ) = f (t, y(t)) dt . (4.19)
tn

Supongamos que conocemos las aproximaciones a la solucin del problema (4.18),


yj0 , yj1 , . . . , yjk correspondientes a tj0 , tj1 , . . . , tjk , y construimos el polinomio in-
terpolador de Lagrange Pk (t) que pasa por (tj0 , fj0 ) , (tj1 , fj1 ) , . . . , (tjk , fjk ),
k

Pk (t) = Lk,l (t)fjl ,
l=0

donde fn f (tn , yn ). A continuacin, se sustituye el problema (4.19) por la apro-


ximacin
" tn+1 k
 " tn+1
yn+1 = yn + Pk (t) dt = yn + f jl Lk,l (t) dt .
tn l=0 tn

Llamando " tn+1


k,l = Lk,l (t) dt ,
tn

se obtienen los mtodos multipaso o mtodos de Adams


k

yn+1 = yn + k,l fjl . (4.20)
l=0

Ejemplo 4.5 Obtener el mtodo de dos pasos que pasa por yn , yn1 y el mtodo
de tres pasos que pasa por yn , yn2 .

114
4.5 Mtodos multipaso

Solucin:

En primer lugar construimos el polinomio interpolador que pasa por (tn1 , fn1 ),
y (tn , fn ),
t tn t tn1
P1 (t) = fn1 + fn .
tn1 tn tn tn1
El mtodo se obtiene calculando las siguientes integrales
" tn+1 " tn+1
fn1 fn
yn+1 = yn + (t tn ) dt + (t tn1 ) dt
tn1 tn tn tn tn1 tn
fn1 2
= yn + (tn+1 tn )
2 (tn1 tn )
fn !
2 2
+ (tn+1 tn1 ) (tn tn1 ) .
2 (tn tn1 )

Si los instantes tj estn igualmente espaciados, con un paso temporal h (tn+1 tn =


tn tn1 = h) se tiene el mtodo

h
yn+1 = yn + (3fn fn1 ) , (4.21)
2
que requiere de las condiciones iniciales

y0 = 0 , y1 = 1 .

Repitiendo los mismos pasos con el polinomio interpolador que pasa por (tn2 , fn2 ),
y (tn , fn ),
t tn t tn2
P1 (t) = fn2 + fn ,
tn2 tn tn tn2
y calculando las integrales, se obtiene el mtodo
h
yn+1 = yn + (5fn fn2 ) , (4.22)
4
que requiere de las condiciones iniciales

y 0 = 0 , y1 = 1 , y2 = 2 .

En el estudio de estos mtodos consideraremos que los instantes tj estn igualmente


espaciados, con un paso temporal h, esto es, tj = t0 + jh. Se distinguen dos tipos
de mtodos: explcitos e implcitos. Los mtodos explcitos calculan yn+1 haciendo
115
Captulo 4. Mtodos numricos para problemas de valor inicial

uso de la funcin f evaluada instantes anteriores conocidos. Los mtodos multipaso


explcitos se llaman tambin mtodos de Adams-Bashforth. El mtodo (4.21) se
conoce como el mtodo de Adams-Bashforth de dos pasos, siendo de segundo
orden. Mtodos de orden k > 2 se pueden obtener de manera similar haciendo uso
del polinomio interpolador que pasa por (tn , fn ), . . . , (tnk+1 , fnk+1 ), obteniendo,
por ejemplo, los mtodos siguientes:

Mtodo de Adams-Bashforth de tres pasos

y0 = 0 ,
y1 = 1 , y2 = 2 ,
h
yn+1 = yn + (23fn 16fn1 + 5fn2 ) ,
12

que tiene un error local O h4 .

Mtodo de Adams-Bashforth de cuatro pasos

y0 = 0 ,
y 1 = 1 , y 2 = 2 , y 3 = 3 ,
h
yn+1 = yn + (55fn 59fn1 + 37fn2 9fn3 ) ,
24

que tiene un error local O h5 .

A los mtodos multipaso implcitos se les llama mtodos de Adams-Moulton. Pa-


ra el clculo de yn+1 , estos mtodos hacen uso de fn+1 . Estos mtodos se ob-
tienen de manera similar haciendo uso del polinomio interpolador que pasa por
(tn+1 , fn+1 ), (tn , fn ), . . . , (tnk+1 , fnk+1 ). As, algunos de estos mtodos son:

Mtodo de Adams-Moulton de un paso. Supongamos que se conocen las


aproximaciones yn , yn+1 de un problema de la forma (4.18). Si construimos el
polinomio interpolador que pasa por (tn , fn ), y (tn+1 , fn+1 ),
t tn+1 t tn
P1 (t) = fn + fn+1 ,
tn tn+1 tn+1 tn

queda el mtodo numrico


h
yn+1 = yn + (fn + fn+1 ) ,
2

que tiene un error local O h3 . Este mtodo es conocido como el mtodo trape-
zoidal, aunque se corresponde tambin con un mtodo RK implcito de orden 2.

116
4.5 Mtodos multipaso

Mtodo de Adams-Moulton de dos pasos

y0 =
0 , y 1 = 1 ,
h
yn+1 = yn + (5fn+1 + 8fn fn1 ) ,
12

que tiene un error local O h4 .

Mtodo de Adams-Moulton de tres pasos

y0 = 0 ,
y 1 = 1 , y 2 = 2 ,
h
yn+1 = yn + (9fn+1 + 19fn 5fn1 + fn2 ) ,
24

que tiene un error local O h5 .

Mtodo de Adams-Moulton de cuatro pasos

y0 = 0 ,y1 = 1 , y2 = 2 , y3 = 3 ,
h
yn+1 = yn + (251fn+1 + 646fn 246fn1 + 106fn2 19fn3 ) ,
720

que tiene un error local O h6 .

Mtodos predictor-corrector

En la prctica, los mtodos multipaso implcitos no se usan en solitario, ms bien


se utilizan para mejorar las aproximaciones obtenidas por los mtodos explcitos.
La combinacin de una tcnica explcita con una implcita se llama mtodo de
prediccin y correccin o mtodo predictor-corrector. Se suele tomar un mtodo
explcito de k etapas y orden k como predictor combinado con un mtodo implcito
de k etapas y orden k + 1. Por ejemplo, el mtodo predictor-corrector de 3 etapas
viene dado por:

y0 = 0 , y 1 = 1 , y 2 = 2 ,
[p] h
yn+1 = yn + (23fn 16fn1 + 5fn2 ) ,
12
h !
[p]
yn+1 = yn + 9fn+1 + 19fn 5fn1 + fn2 ,
24
[p] [p]
donde fn+1 = f (tn+1 , yn+1 ). Esto es, con el mtodo explcito hacemos una esti-
[p]
macin del valor de yn+1 , que se denota por yn+1 y que es utilizado en la ecuacin
implcita para hacerla explcita.

117
Captulo 4. Mtodos numricos para problemas de valor inicial

4.6 Ecuaciones rgidas

Los mtodos numricos para la aproximacin de la solucin de problemas de valores


iniciales tienen frmulas de error que incluyen una derivada de orden superior de
la solucin de la ecuacin diferencial. Si la derivada de la solucin se puede acotar
por una constante, entonces el error del mtodo numrico se puede mantener bajo
control. Hay ciertos problemas en los que el valor de la derivada se hace grande y
el error del mtodo puede dominar los clculos a medida que crece el nmero de
iteraciones. A este tipo de problemas se les llama problemas rgidos.

Ejemplo 4.6 Considerar el problema de valores iniciales


1 4


9y1 + 24y2 + 5 cos(t)
y1 =
3
sen(t) , y1 (0) =
3
,


1 2
y = 24y1 52y2 9 cos(t) + sen(t) , y2 (0) = .
2
3 3
Comparar la solucin exacta con la solucin numrica obtenida con el RK explcito
de 4 etapas para h = 0.1 y h = 0.05

Solucin:
La solucin analtica del problema es
1
y1 (t) = 2 e3t e39t + cos(t) ,
3
1
y2 (t) = e3t +2 e39t cos(t) .
3

Si se usa un mtodo de Runge-Kutta de 4 pasos para calcular la solucin del


problema, obtenemos los resultados aproximados y1n que se proporcionan en la
siguiente tabla

t y1 (t) y1n (h = 0.05) y1n (h = 0.1)


0.1 1.793061 1.712219 2.645169
0.2 1.423901 1.414070 18.45158
0.3 1.131575 1.130523 87.47221
0.4 0.909409 0.909276 934.0722
0.5 0.738788 0.738751 1760.016

118
4.6 Ecuaciones rgidas

4.6.1 Estabilidad lineal


En el ejemplo anterior hemos visto que un mtodo numrico puede tener un com-
portamiento divergente u oscilante cuando el nmero de iteraciones tiende a in-
nito. Por ello, va a ser interesante tratar de caracterizar en qu condiciones un
mtodo dado se hace inestable.

Supongamos que se est interesado en utilizar un mtodo numrico para estudiar


la ecuacin
dy
= y , y (t0 ) = y0 ,
dt
con > 0. La solucin analtica del problema es

y = y0 et ,

que satisface y 0 cuando t . Si utilizamos el mtodo de Euler

yn+1 = yn hyn ,

se tiene la ecuacin en diferencias

yn+1 (1 h)yn = 0 . (4.23)

Si probamos soluciones de la forma yi = ri , tenemos

rn+1 (1 h)rn = 0 ,

que da lugar a la ecuacin caracterstica

r (1 h) = 0 ,

y la solucin de la ecuacin (4.23) es

yn = (1 h)n y0 .

Para que el mtodo numrico sea estable se ha de satisfacer

|1 h| < 1 ,

o sea,
2
h< .
||

Si ahora repetimos el anlisis utilizando el mtodo de Euler implcito

yn+1 = yn hyn+1 ,

se tiene la ecuacin en diferencias

(1 + h)yn+1 yn = 0 . (4.24)
119
Captulo 4. Mtodos numricos para problemas de valor inicial

La ecuacin caracterstica es
(1 + h)r 1 = 0 ,
y la solucin de la ecuacin (4.24) es
 n
1
yn = y0 .
1 + h
Para que el mtodo numrico sea estable, se ha de cumplir
 
 1 
 
 1 + h  < 1 1 + ||h > 1 ,

lo cual se satisface para cualquier valor de h.

Este tipo de anlisis se puede repetir para los mtodos de Runge-Kutta y para
los mtodos multipaso. As, los mtodos de Runge-Kutta y los mtodos multipaso
explcitos tienen problemas para aproximar ecuaciones diferenciales rgidas a no
ser que se tomen valores de h muy pequeos lo cual hace que se necesite aplicar
el mtodo muchas veces para llegar al tf , hacindolos demasiado costosos. En la
prctica, para este tipo de ecuaciones se utilizan los mtodos multipaso implcitos.
La ecuacin en diferencias que se obtiene con estos mtodos para yn+1 se puede
resolver de forma sencilla para problemas lineales. En las ecuaciones diferenciales
no lineales, para la obtencin de yn+1 se utilizan tcnicas numricas que permiten
la resolucin de ecuaciones algebraicas no lineales, como el mtodo del punto jo
o el mtodo de Newton.

4.6.2 Mtodos implcitos hacia atrs


Dada una ecuacin diferencial ordinaria de primer orden, de la forma
dy
= f (t, y(t)) ,
dt
un mtodo en diferencias hacia atrs (Backward) general de m pasos para la re-
solucin de esta ecuacin, consiste en una ecuacin en diferencias de la forma
yn+1 + 1 yn + 2 yn1 + + m yn+1m = h0 f (tn+1 , yn+1 ) , (4.25)
donde 0 > 0, y 1 , . . . , m se eligen de forma que se minimice el error de trun-
camiento. En la Tabla 4.1 se muestran posibles elecciones de los parmetros del
mtodo en diferencias hacia atrs para distintos valores de m. Es fcil comprobar
que el caso m = 1 coincide con el mtodo de Euler implcito.

Con esta eleccin de los parmetros, los mtodos Backward obtenidos son estables.
Los mtodos hacia atrs son mtodos implcitos, y su utilizacin para la integra-
cin de un sistema de ecuaciones diferenciales implica la necesidad de resolver un
sistema de ecuaciones lineales en cada paso de integracin.
120
4.7 Ejercicios resueltos

Tabla 4.1: Coecientes de los mtodos hacia atrs.

m 0 1 2 3 4
1 1 -1
2 2
3 43 1
3
3 6
11 18
11
9
11 11
2

4 12
25 48
25
36
25 25
16 3
25

4.7 Ejercicios resueltos

Ejercicio 4.1 Dado el problema


1
y  = xy + , y(1) = 1 .
y2

Obtn un mtodo de Taylor con error de truncamiento O h4 .

Solucin:
El mtodo de Taylor se basa en el desarrollo
1 2  1

y (x0 + h) = y (x0 ) + hy  (x0 ) + h y (x0 ) + h3 y  (x0 ) + O h4 .


2! 3!
Se tiene que
1
y  = xy + ,
y2
la derivada segunda,
 
d 1 1
y  = xy + = y xy  2 3 y 
dt y2 y
x 2x 2
= y + x2 y 2 + 2 5 ,
y y y
y la derivada tercera
1 2x 2 4x 10
y  = y  + 2xy + x2 y  + 3 y + 2 3 y + 6 y ,
y2 y y y y
que se reescribe como
x2 2x2 2x 4x2 4x 10x 10
y  = xy + 2xy x3 y + 2
2 + 6 + 2 5 5 + 8 ,
y y y y y y y
y, por tanto, el mtodo queda
   
1 1 xn 2
yn+1 = yn + h xn yn + 2 + h2 yn + x2n yn + 2 5
yn 2 yn y
 2
 n
1 3x 14xn 2xn 10
+ h3 3xn yn x3n yn + 2n 5 + 6 + 8 .
6 yn yn yn yn
121
Captulo 4. Mtodos numricos para problemas de valor inicial

Ejercicio 4.2 Utiliza el mtodo de Euler para obtener una solucin del problema
de valor inicial
y  = y , y(0) = 1 ,
en t = 0.4, utilizando h = 0.2 y h = 0.4. Suponiendo que el error que se comete
con el mtodo de Euler es proporcional a h, estima el valor exacto de y(0.4) y
compralo con la solucin analtica.

Solucin:
El mtodo de Euler se escribe

yn+1 = yn + hf (tn , yn ) .

Si hacemos el clculo con h = 0.4 se tiene

y1 = y0 + hy0 = 1.4 .

Si usamos h = 0.2, se tiene

y1 = y0 + h y0 = 1.2
y2 = y1 + h y1 = 1.44

Para estimar la solucin y(0.4), supondremos que

y(0.4) y = h ,

con y la solucin obtenida con el mtodo con paso h, as

y(0.4) 1.4 = 0.4


y(0.4) 1.44 = 0.2

con lo que restando


0.04
0.04 = (0.4 0.2) = = 0.2
0.2
y, as
y(0.4) = 1.4 + 0.2 0.4 = 1.48

Por otro lado, la solucin analtica es

Y = y(0) et = et y(0.4) = e0.4 = 1.4918.


122
4.7 Ejercicios resueltos

Ejercicio 4.3 Utiliza los mtodos de Euler y Euler modicado para resolver el
problema de valor inicial

y  = x2 + y 3 , y(1) = 1 .

Calcula y(1.3) utilizando paso de integracin h = 0.1 y compara los resultados con
la solucin que proporciona Matlab.

Solucin:
Recordemos que el mtodo de Euler se escribe como

y0 = y (t0 )
yn+1 = yn + hf (tn , yn )

y el mtodo de Euler modicado

y0 = y (t0 )
h
yn+1 = yn + (f (tn , yn ) + f (tn + h, yn + hf (tn , yn )))
2

As, si realizamos los clculos con el mtodo de Euler, se tiene


y1 = 1 + 0.1 12 + 13 = 1.2 y(1.1)


y2 = 1.2 + 0.1 (1.1)2 + (1.2)3 = 1.494 y(1.2)


y3 = 1.494 + 0.1 (1.2)2 + (1.494)3 = 1.971 y(1.3)

Con el mtodo de Euler modicado


y1 = 1 + 0.1 12 + 13 = 1.2
0.1 2

y1 = 1 + 1 + 13 + (1.1)2 + (1.2)3
2
= 1 + 0.05(2 + (1.1)2 + (1.2)3 ) = 1.2469 y(1.1)

y2 = 1.2469 + 0.1((1.1)2 + (1.2469)3 ) = 1.5617


y2 = 1.2469 + 0.05((1.1)2 + (1.2469)3 + (1.2)2 + (1.5617)3 ) = 1.6668 y(1.2)

y3 = 1.6668 + 0.1((1.2)2 + (1.6668)3 ) = 2.2739


y3 = 1.6668 + 0.05((1.2)2 + (1.6668)3 + (1.3)2 + (2.2739)3 ) = 2.6427 y(1.3)

Estos resultados se pueden comparar con el resultado obtenido mediante la funcin


ode45 de Matlab: y(1.3) = 2.95738. 
123
Captulo 4. Mtodos numricos para problemas de valor inicial

Ejercicio 4.4 La funcin


" x
2 2
erf(x) = et dt ,
0

se puede ver como la solucin del problema de valor inicial


2 2
y  = ex , y(0) = 0 .

Estima, utilizando el mtodo de Euler con h = 0.1, los valores de erf(0.1) y erf(0.2).

Solucin:
Basta aplicar dos iteraciones del mtodo de Euler,
 
2
y1 = y0 + h f0 = 0 + 0.1 e0 = 0.1128 erf(0.1)

 
2 2
y2 = y1 + h f1 = 0.1128 + 0.1 e0.1 = 0.2245 erf(0.1)

Los valores tabulados son: erf(0.1) = 0.11246 y erf(0.2) = 0.2227. 

Ejercicio 4.5 Resuelve numricamente la siguiente ecuacin diferencial


 
y = y t2 + 1, t [0, 1]
y(0) = 12

y compara con la solucin exacta en t = 1 sabiendo que sta viene dada por
et e
y(t) = t2 + 2t + 1 y(1) = 4 = 2.641
2 2
utilizando los siguientes mtodos numricos:
1
1. Mtodo de Euler con paso de integracin h = 2 (utilizando dos pasos).
1
2. Mtodo de Taylor de segundo orden con paso de integracin h = 2 (utilizando
dos pasos).
1
3. Mtodo de Euler modicado de segundo orden con paso de integracin h = 2
(utilizando dos pasos).
4. Mtodo de Runge-Kutta estndard de orden 4 y 4 pasos utilizando un paso
de integracin h = 1 (un solo paso).
5. Mtodo de predictor-corrector de dos pasos con paso de integracin h = 12 .
Como solucin del primer paso, utilizar la solucin obtenida con el mtodo
de Euler modicado de segundo orden.
124
4.7 Ejercicios resueltos

Solucin:
De la ecuacin tenemos que

f (t, y) = y t2 + 1,

y de la condicin inicial, t0 = 0, y0 = 12 .

1. Mtodo de Euler con h = 12 .


Como t = 1 y h = 12 , necesitamos dos pasos de integracin, es decir, y(1)
y2 . En el primer paso de integracin, obtenemos
 
1 1 1 1 3 5
y1 = y0 + hf (t0 , y0 ) = + 0+1 = + = .
2 2 2 2 4 4

Para el segundo paso, como t1 = t0 + h = 12 , tenemos


  2 
5 1 5 1 5 9
y2 = y1 + hf (t1 , y1 ) = + + 1 = + 1 = = 2.25 .
4 2 4 2 4 4

Por tanto, la solucin con el mtodo de Euler es

y2 = 2.25

Comparando con la solucin exacta, tenemos que el error absoluto cometido


es
Error = |2.641 2.25| = 0.391 .

2. Mtodo de Taylor de segundo orden con h = 12 .


El mtodo viene dado por
 
h2 f f
yn+1 = yn + hf + + f ,
2 t y

con f, f
t y
f
y evaluadas en tn y donde

f f
= 2t, = 1.
t y
Necesitamos dos pasos. Para el primer paso de integracin utilizamos que
y0 + hf (t0 , y0 ) es y1 del mtodo de Euler calculado en el apartado a), as
 
h2 f f
y1 = y0 + hf (t0 , y0 ) + (t0 , y0 ) + (t0 , y0 ) f (t0 , y0 )
   2 t y
5/4
1
2   
5 1 5 13 23
= + 2
0+1 0+1 = + = .
4 2 2 4 82 16
125
Captulo 4. Mtodos numricos para problemas de valor inicial

Segundo paso de integracin (t1 = t0 + h = 1/2)


h2

y2 = y1 + h y1 t21 + 1 + 2t1 + y1 t21 + 1


 2
 2 1
2   2 
23 1 23 1 1 23 1
= + +1 + 2
2 + +1
16 2 16 2 2 2 16 2
   
23 1 23 4 16 1 23 4
= + + +
16 2 16 16 16 8 16 16
23 35 19 343
= + + = = 2.679 .
16 32 128 128

Por tanto, la solucin obtenida usando el mtodo de Taylor es

y2 = 2.679

y el error absoluto cometido es

Error = |2.679 2.641| = 0.038 .

3. Mtodo de Euler modicado con h = 21 .


Necesitamos dos pasos. El primer paso del mtodo viene dado por
1 3
k1 = f (t0 , y0 ) = y0 t20 + 1 = 0+1= ,
2 2
k2 = f (t0 + h, y0 + hk1 ) = (y0 + hk1 ) (t0 + h)2 + 1
   2
1 13 1 5 1
= + + 1 = + 1 = 2,
2 22 2 4 4
1  
h 1 2 3 1 7 11
y1 = y0 + (k1 + k2 ) = + +2 = + = .
2 2 2 2 2 8 8

El segundo paso de integracin (t1 = t0 + h = 1/2) es


 2
11 1 11 2 8 17
k1 = f (t1 , y1 ) = y1 t21 + 1 = +1= + = ,
8 2 8 8 8 8
k2 = f (t1 + h, y1 + hk1 ) = (y1 + hk1 ) (t1 + h)2 + 1
 
11 1 17 39
= + 1+1= ,
8 2 8 16
1  
h 11 17 39 11 73
y2 = y1 + (k1 + k2 ) = + 2 + = +
2 8 2 8 16 8 64
88 73 161
= + = = 2.516 .
64 64 64
126
4.7 Ejercicios resueltos

As, la solucin obtenida usando el mtodo de Euler modicado es

y2 = 2.516

y el error absoluto cometido es

Error = |2.516 2.641| = 0.125 .

4. Mtodo de Runge-Kutta de orden 4 y 4 etapas, h = 1.


Necesitamos un paso del mtodo,
3
k1 = f (t0 , y0 ) = ,
2
     2
h h h h
k2 = f t0 + , y0 + k1 = y0 + k1 t0 + +1
2 2 2 2
   2
1 13 1 5 1
= + + 1 = + 1 = 2,
2 22 2 4 4
     2
h h h h
k3 = f t0 + , y0 + k2 = y0 + k2 t0 + +1
2 2 2 2
 
1 1 1 9
= + 2 +1= ,
2 2 4 4
k4 = f (t0 + h, y0 + hk3 ) = (y0 + hk3 ) (t0 + h)2 + 1
 
1 9 11
= + 1+1= ,
2 4 4
 
h 1 1 3 9 11
y1 = y0 + (k1 + 2k2 + 2k3 + k4 ) = + +22+2 +
6 2 6 2 4 4
 
1 1 6 16 18 11 1 51 12 51 63
= + + + + = + = + =
2 6 4 4 4 4 2 54 24 24 24
= 2.625 .

Por tanto, la solucin obtenida usando el mtodo de Runge-Kutta estndard


de orden 4 y 4 etapas es
y2 = 2.625
y el error absoluto cometido es

Error = |2.625 2.641| = 0.016 .

5. Mtodo predictor-corrector de dos pasos, h = 1/2.


Necesitamos dos pasos. Como nos indica el enunciado del ejercicio, el primer
paso lo calculamos con el mtodo de Euler modicado de segundo orden
127
Captulo 4. Mtodos numricos para problemas de valor inicial

(apartado c)), luego


1 11
y0 = , y1 = ,
2 8
3
f0 = f (t0 , y0 ) = ,
2
11 1 11 2 8 17
f1 = f (t1 , y1 ) = y1 t21 + 1 = +1= + = .
8 4 8 8 8 8

Aplicamos el predictor para el segundo paso


1  
[p] h 11 17 3
y2 = y1 + (3f1 f0 ) = + 2 3
2 8 2 8 2
 
11 1 51 12 44 39 83
= + = + = ,
8 4 8 8 32 32 32

y el corrector

h ! ! 11 1  ! 17 
[p] [p]
y2 = y1 + f t 2 , y2 + f 1 = + y 2 t2 + 1 +
2
2 8 4 8
   
11 1 83 17 11 1 83 68
= + 1+1+ = + +
8 4 32 8 8 4 32 32
176 151 327
= + = = 2.555 .
128 128 128

La solucin con el mtodo predictor-corrector de dos pasos es

y2 = 2.555

y el error absoluto cometido es

Error = |2.555 2.641| = 0.086 .

Ejercicio 4.6 Obtn la solucin formal del esquema de Runge-Kutta de 4 pasos


para el problema
y  = y , y (t0 ) = y0 .

128
4.7 Ejercicios resueltos

Solucin:
El esquema de Runge-Kutta de 4 pasos se escribe:

k1 = f (tn , yn ) = yn ,
   
h k1 k1
k2 = f tn + , yn + h = yn + h
2 2 2
1 2
= yn + h yn ,
 2   
h k2 k2
k3 = f tn + , yn + h = yn + h
2 2 2
1 2 1 2 3
= yn + h yn + h yn ,
2 4
k4 = f (tn + h, yn + h k3n ) = (yn + hk3 )
1 1
= yn + h2 yn + h2 3 yn + h3 4 yn .
2 4

As, el esquema queda


h
yn+1 = yn + (k1 + 2k2 + 2k3 + k4 )
6
1
= yn + hyn + 2hyn + h2 2 yn + 2hyn
6 
1 1 1
h2 2 yn + h3 3 yn + hyn + h2 2 yn + h3 3 yn + h4 4 yn
2 2 4
 
1 1 1
= 1 + h + h2 2 + h3 3 + h4 4 yn .
2 6 24

Se obtiene una expresin cerrada para la solucin del esquema,


 n
1 1 1
yn = 1 + h + h2 2 + h3 3 + h4 4 y0 .
2 6 24

Ejercicio 4.7 Obtn el mtodo de Adams-Moulton


h
yn+1 = yn + (9fn+1 + 19fn 5fn1 + fn2 ) .
24

Solucin:
Hemos visto que la solucin de la ecuacin diferencial

y  = f (t, y(t)),
129
Captulo 4. Mtodos numricos para problemas de valor inicial

se puede escribir como


" tn+1
y(tn+1 ) = y(tn ) + f (t, y(t)) dt.
tn

Construimos el polinomio interpolador basado en la siguiente tabla

t tn2 tn1 tn tn+1


f fn2 fn1 fn fn+1

usando el mtodo de Lagrange

(t tn1 ) (t tn ) (t tn+1 )
L3,0 (t) =
(tn2 tn1 ) (tn2 tn ) (tn2 tn+1 )
1
= 3 (t tn1 ) (t tn ) (t tn+1 ) ,
6h
(t tn2 ) (t tn ) (t tn+1 )
L3,1 (t) =
(tn1 tn2 ) (tn1 tn ) (tn1 tn+1 )
1
= (t tn2 ) (t tn ) (t tn+1 ) ,
2h3
(t tn2 ) (t tn1 ) (t tn+1 )
L3,2 (t) =
(tn tn2 ) (tn tn1 ) (tn tn+1 )
1
= 3 (t tn2 ) (t tn1 ) (t tn+1 ) ,
2h
(t tn2 ) (t tn1 ) (t tn )
L3,3 (t) =
(tn+1 tn2 ) (tn+1 tn1 ) (tn+1 tn )
1
= (t tn2 ) (t tn1 ) (t tn ) .
6h3

As, el polinomio interpolador es

P3 (t) = fn2 L3,0 (t) + fn1 L3,1 (t) + fn L3,2 (t) + fn+1 L3,3 (t),

y hay que calcular las integrales


" tn+1 " tn+1
1
I1 = L3,0 (t) dt = (t tn1 ) (t tn ) (t tn+1 ) dt
tn tn 6h3

Para hacer esta integral se hace el cambio t tn = z, con lo que


" h 
1 h
I1 = 3 (z + h)z(z h) dz = .
0 6h 24
130
4.7 Ejercicios resueltos

De la misma manera,
" tn+1 " tn+1
1
I2 = L3,1 (t) dt = (t tn2 ) (t tn ) (t tn+1 ) dt
tn tn 2h3
" h  
1 5h
= (z + 2h)z(z h) dz = ,
0 2h3 24
" tn+1 " tn+1
1
I3 = L3,2 (t) dt = (t tn2 ) (t tn1 ) (t tn+1 ) dt
tn tn 2h3
" h  
1 19h
= (z + 2h)(z + h)(z h) dz = ,
0 2h3 24
" tn+1 " tn+1
1
I4 = L3,3 (t) dt = (t tn2 ) (t tn1 ) (t tn ) dt
tn tn 6h3
" h  
1 9h
= (z + 2h)(z + h)z dz = ,
0 6h3 24
con lo que se tiene el esquema
h
yn+1 = yn + (9fn+1 + 19fn 5fn1 + fn2 ) .
24


Ejercicio 4.8 Determina los valores A, B y C del mtodo numrico


yn+1 = yn + h (Afn + Bfn2 + Cfn4 ) .
Comprueba, mediante un ejemplo, que el mtodo proporciona los valores exactos
al problema
y  = 1 + t + t2 , y(0) = 0 .

Solucin:
Se construye el polinomio interpolador basado en la tabla

t tn4 tn2 tn
f fn4 fn2 fn

as,
(t tn2 ) (t tn )
L2,0 (t) = ,
(tn4 tn2 ) (tn4 tn )
(t tn4 ) (t tn )
L2,1 (t) = ,
(tn2 tn4 ) (tn2 tn )
(t tn4 ) (t tn2 )
L2,2 (t) = ,
(tn tn4 ) (tn tn )
131
Captulo 4. Mtodos numricos para problemas de valor inicial

y el polinomio interpolador es:

P2 (t) = fn4 L2,0 (t) + fn2 l2,1 (t) + fn L2,2 (t) .

As, hemos de calcular


" tn+1 " tn+1
(t tn2 ) (t tn )
L2,0 (t) dt = dt
tn tn (tn4 tn2 ) (tn4 tn )
" h
1 1 1 4h3 h
= (z + 2h)z dz = 2 = ,
(2h) (4h) 0 8h 3 6
" tn+1 " tn+1
(t tn4 ) (t tn )
L2,1 (t) dt = dt
tn tn (tn2 tn4 ) (tn2 tn )
" h
1 1 1 7h3 7h
= (z + 4h)z dz = 2 = ,
2h (2h) 0 4h 3 12
" tn+1 " tn+1
(t tn4 ) (t tn2 )
L2,2 (t) dt = dt
tn tn (t n tn4 ) (tn tn2 )
" h
1 1 34 17h
= (z + 4h)(z + 2h) dz = h= .
4h 2h 0 24 12

Queda el mtodo
 
1 7 17
yn+1 = yn + h fn4 fn2 + fn .
6 12 12

Para el problema
y  = 1 + t + t2 , y(0) = 0 ,
integrando
t2 t3
y(t) = t + + ,
2 3
y, por tanto,
h2 h3
y(h) = h + + .
2 3

Con el mtodo numrico


 
1
7
17

y1 = h 1 4h + (4h)2 1 2h + (2h)2 + 1 0h + (0h)2


6 12 12
2 3
h h
= h+ + .
2 3

132
4.8 Ejercicios propuestos

4.8 Ejercicios propuestos

1. Escribe el algoritmo correspondiente al mtodo de Euler aplicado al problema


del satlite.
2. Mediante el mtodo de Euler:
a) Halla y(0.4) si
yx
y = ,
y+x
para la condicin inicial y(0) = 1, y el paso h = 0.1 .
b) Halla y(0.4) si y  = x + y, para la condicin inicial y(0) = 1, y el paso
h = 0.1 .
3. El modelo de Lotka-Volterra, tambin conocido como modelo depredador-
presa o predador-presa, se suele utilizar para describir la evolucin de dos
poblaciones que interaccionan entre ellas como, por ejemplo, zorros (cuya
poblacin denotamos por z(t)) y conejos (cuya poblacin denotamos por
c(t)). Este sencillo modelo de evolucin temporal viene dado por el siguiente
sistema de ecuaciones diferenciales no lineales y acopladas (tomando que la
variacin de individuos es continua)
dc
= c(1 z),
dt
dz
= z(c 2). (4.26)
dt
a) Comprueba que la siguiente funcin

I(c, z) = c 2 log(c) + z log(z) ,


dI
es constante a lo largo de la solucin, esto es, dt = 0.
b) Escribe el algoritmo correspondiente al mtodo de Euler.
c) Escribe el algoritmo correspondiente al mtodo de Taylor de segundo
orden.
4. Un proyectil de masa m = 0.11 kg que ha sido disparado verticalmente hacia
arriba con una velocidad inicial de v(0) = 8 m/s se ve frenado por la accin de
la fuerza de la gravedad Fg = mg y la resistencia del aire Fr = kv |v|, donde
g = 9.8 m/s2 , y k = 0.002 kg/m. La ecuacin diferencial del movimiento
es
mv  = mg kv |v| .
Utilizando el mtodo de Euler, determina la velocidad del cuerpo a los
0.1, 0.2, . . . , 1.0 s. Determina, usando h = 0.1, el instante en el que el cuerpo
se detiene.
133
Captulo 4. Mtodos numricos para problemas de valor inicial

5. Utilizando los mtodos de Runge-Kutta de Euler modicado y de Heun, halla


el valor aproximado y(0.6), de la funcin y denida mediante la ecuacin
diferencial y  = x2 + y 2 , con el valor inicial y(0) = 0 y el paso h = 0.2 .

6. Mediante el mtodo de Runge-Kutta de 4 pasos:

a) Halla y(2) si x2 y  xy = 1 para la condicin inicial y(1) = 0, y el


paso h = 1. Comparar con la solucin analtica exacta de la ecuacin
x2 1
diferencial, y(x) = .
2x
b) Halla y(1) si 4y  = y 2 + 4x2 para la condicin inicial y(0) = 1, y el
paso h = 0.5.

7. Aprovechando las tres primeras iteraciones realizadas, mediante Runge-Kutta


4 pasos, obtn las mismas aproximaciones buscadas en los apartados a) y
b) del problema anterior, aplicando el mtodo de Adams-Bashforth m = 3.
Compara los resultados.

8. Utiliza el mtodo Runge-Kutta de cuatro pasos para obtener la solucin


aproximada del problema

y  = y 3 + x3 , y(0) = 0,

en y(0.3) con un paso h = 0.1.


9. Resuelve el problema del Ejemplo 4.3 utilizando el mtodo de RK del punto
2
medio utilizando el paso de integracin h = 10 y el mtodo de RK de orden
4
4 utilizando el paso de integracin h = 10 y comparar los resultados con
1
los obtenidos con el mtodo de Euler con paso h = 10 (todos los mtodos
requieren del mismo mismo nmero de evaluaciones de la funcin).

10. Resuelve la ecuacin del ejercicio 8 utilizando el mtodo predictor-corrector


de 2 etapas y tomando y1 de la solucin numrica obtenida con el mtodo
Runge-Kutta de cuatro pasos.

11. Considera el mtodo implcito hacia atrs con m = 2 para resolver el PVI

y  = 10y + 10, y(0) = 2.


1
Obtn la aproximacin en t = 2 tomando h = 2, y0 = 2, y1 = 1.006, y
compara con la solucin exacta y(2) = 1 + e20 .

134
Captulo 5

Mtodos numricos para problemas


de contorno

En este captulo mostraremos distintos mtodos numricos para obtener soluciones


aproximadas de problemas de contorno. Mientras que en los problemas de valores
iniciales las condiciones que determinan la solucin del problema se imponen en un
mismo punto (condiciones iniciales), en los problemas de contorno las condiciones
se imponen en puntos separados.

Por ejemplo, para una ecuacin diferencial ordinaria de segundo orden, un proble-
ma de contorno es un problema de la forma

y  = f (x, y, y  ) , a x b ,

con las condiciones


y(a) = , y(b) = .

Para obtener soluciones aproximadas de este tipo de problemas, en este captulo


utilizaremos mtodos basados en diferencias nitas, y en el prximo captulo se
mostrar cmo utilizar otras tcnicas como los elementos nitos. Empezaremos
estudiando el mtodo de las diferencias nitas para EDOs lineales de segundo
orden, lo cual nos permitir sentar las bases para la utilizacin de las diferencias
nitas en problemas de EDPs lineales con condiciones de frontera.

135
Captulo 5. Mtodos numricos para problemas de contorno

5.1 Diferencias nitas para EDOs con condiciones de


frontera

Por sencillez, analizaremos problemas lineales de segundo orden y con condiciones


en la frontera para y(a) e y(b) (se podran considerar tambin condiciones para la
derivada, y  (a) e y  (b) o combinaciones de ambas). Supongamos pues que se quiere
obtener una solucin aproximada del siguiente problema

y  = p(x)y  + q(x)y + r(x) , a x b , y(a) = , y(b) = .

El primer paso consistir en dividir el intervalo [a, b] en N + 1 subintervalos del


mismo tamao cuyos extremos son los nodos

xi = a + ix , i = 0, 1, . . . , N + 1 ,

siendo x = (b a)/(N + 1). En los N nodos interiores se ha de cumplir

y  (xi ) = p (xi ) y  (xi ) + q (xi ) y (xi ) + r (xi ) , (5.1)

con i = 1, 2, . . . , N .

A continuacin buscaremos aproximaciones de las derivadas evaluadas en los no-


dos, y  (xi ) e y  (xi ). Haciendo uso del desarrollo de Taylor vimos que
1

y  (xi ) = 2
(y (xi1 ) 2y (xi ) + y (xi+1 )) + O x2 , (5.2)
x
y
1

y  (xi ) = (y (xi+1 ) y (xi1 )) + O x2 . (5.3)


2x

Sustituyento las aproximaciones (5.3) y (5.2) en (5.1) obtenemos en los nodos


i = 1, . . . , N , las ecuaciones
yi1 2yi + yi+1 yi+1 yi1
= p (xi ) + q (xi ) yi + r (xi ) . (5.4)
x2 2x
Este sistema de ecuaciones se completa con las condiciones de contorno

y0 = , yN +1 = . (5.5)

Las ecuaciones (5.4) se pueden expresar matricialmente de la forma

Ay = b ,

136
5.1 Diferencias nitas para EDOs con condiciones de frontera

donde A es la matriz tridiagonal


2 x
2 + x q (x1 ) 1 + 2
p (x1 ) 0 0
.. ..
1 x
p (x2 ) 2 + x2 q (x2 ) . .
2
.. ..
0 . .
A=
.. .. ..
. . . 0

.. ..
. . 1 + x
2
p (xN 1 )
x
0 0 1 2
p (xN ) 2 + x2 q (xN )
(5.6)
y los vectores y y b vienen dados por
 
1+ x
p (x1 )
y1 r (x1 ) 2
y2 r (x2 ) 0

.. .. ..
y= , b = x2 + . (5.7)
. . .
yN 1 r (xN 1 )  0 
yN r (xN ) 1 x
p (xN )
2

Por tanto, debemos resolver un sistema de ecuaciones lineales. Como la matriz A


es tridiagonal (no simtrica) podemos hacer uso de la descomposicin LU para
este tipo de sistemas que es bastante eciente y rpida.

Ejemplo 5.1 Resolver el siguiente problema de frontera mediante el mtodo de


diferencias nitas para N = 3 (esto es x = 1/(N + 1) = 1/4)

y  = 4y + 4x(e2 1) , 0 x 1 , y(0) = 0 , y(1) = 0.

Sabiendo que la solucin exacta del problema es

e2x e2x
y(x) = + (1 e2 )x,
1 + e2
hallar el error mximo del mtodo.

Solucin:
Con la discretizacin considerada tenemos 5 puntos: dos en la frontera y 3 interio-
res, donde

x1 = x = 1/4, x2 = 2x = 1/2, x3 = 3x = 3/4.

Nos construimos la matriz A



2 + x2 q (x1 ) 1 + x
2 p (x1 ) 0
A= 1 x 2 + x2 q (x2 ) 1 + x ,
2 p (x2 ) 2 p (x2 )
0 1 x
2 p (x3 )
2
2 + x q (x3 )
137
Captulo 5. Mtodos numricos para problemas de contorno

y los vectores


y1 x2 r (x1 ) + 1 + x2 p (x1 )
y = y2 , b = x 2 r (x2 )

.
y3 x r (x3 ) + 1 x
2
2 p (x 3 )
Identicamos las funciones
p(x) = 0, q(x) = 4, r(x) = 4x(e2 1),
y el sistema a resolver es (considerando que = = 0):
9
4 1 0 y1 16
1
(e2 1)
1 9 1 y2 = 1 (e2 1) ,
4 8
0 1 94 y3 16
3
(e2 1)
cuya solucin representamos en la siguiente tabla. En la ltima la mostramos la
solucin exacta donde se aprecia la buena precisin obtenida.

xi 0 0.25 0.5 0.75 1


yi 0 0.0907 0.1500 0.1387 0
y(xi ) 0 0.0919 0.1521 0.1408 0

5.2 Diferencias nitas para problemas parablicos

Vamos a estudiar ahora cmo aplicar el mtodo de las diferencias nitas para la
resolucin numrica de una EDP parablica (tambin llamada ecuacin del calor o
de difusin) con trmino fuente y condiciones de frontera variables. Estudiaremos el
problema unidimensional en una regin de longitud L. El problema viene descrito
por
2
u 2 u

= a + F (x, t),
t x2
x [0, L], t 0, (5.8)



u(0, t) = f 0 (t), u(L, t) = f L (t),
u(x, 0) = u0 (x),
donde a es una constante que depende del medio en el que se propaga el calor,
F (x, t) es una fuente de calor que puede depender tanto de la posicin como del
tiempo y f0 (t), fL (t) son los valores de la temperatura que mantenemos controlada
en los extremos, pudiendo variar en el tiempo.

Por sencillez, empezaremos viendo cmo resolver el problema numricamente para


el caso sin fuente, F = 0, y posteriormente veremos cmo, modicando ligeramente
138
5.2 Diferencias nitas para problemas parablicos

Figura 5.1: Mallado para un problema parablico.

el algoritmo, podemos incluir este trmino. Debemos recordar que la resolucin


analtica de este problema se puede obtener utilizando separacin de variables,
pero el problema se complica de manera considerable al incluir condiciones de
frontera variables y el trmino fuente.

El primer paso en la obtencin de una aproximacin numrica para resolver esta


ecuacin es discretizar el tiempo y el espacio en intervalos equidistantes, t = nt,
n = 0, 1, 2, . . . , Nt , y x = x0 +ix, i = 0, 1, . . . , Nx +1 (para la coordenada espacial
tomamos x = L/(Nx + 1) de tal manera que haya Nx + 2 nodos de los cuales
Nx son interiores y desconocidos mientras que los otros 2 son los nodos frontera
conocidos). Si representamos en el eje de ordenadas la coordenada espacial y en
las abcisas la temporal tendremos un mallado del espacio y el tiempo en el que
conocemos la solucin en tres de los lados y buscamos la solucin en el interior
del mallado. La Figura 5.1 muestra con crculos blancos los nodos en los que la
solucin es conocida y en crculos negros los nodos en los que vamos a buscar
soluciones aproximadas.

La derivada temporal la aproximamos por diferencias nitas de primer orden


u u(x, t + t) u(x, t)
+ O (t) ,
t t
mientras que para la derivada espacial tomamos una aproximacin de segundo
orden
2u u(x x, t) 2u(x, t) + u(x + x, t)

2
2
+ O x2 .
x x
Denotaremos por uni a las aproximaciones de la solucin en los puntos del mallado,
u (nt, x0 + ix), para i = 0, 1, . . . , Nx + 1, n = 0, 1, . . .
139
Captulo 5. Mtodos numricos para problemas de contorno

Mtodo de Euler explcito. Se corresponde con el siguiente esquema para apro-


ximar la ecuacin (5.8)

un+1 uni un 2uni + uni+1


i
= a2 i1 ,
t x2
o sea,

un+1
i = uni + r uni1 2uni + uni+1 ,
a2 t
donde r = x2 . Esta relacin se puede escribir en forma matricial de manera ms
compacta
un+1 = (I + rA)un + rbn , (5.9)
siendo I la matriz identidad de dimensin Nx Nx y donde
n
u1 2 1 f0n
un 2 1 2 1 0

u =
n

..
.
, A =

..
.
, bn =

..
.
. (5.10)

un 1 2 1 0
Nx 1
un
Nx 1 2 fLn

Aqu hemos tenido en cuenta que un0 = f0n = f0 (tn ), unNx +1 = fLn = fL (tn ). Vemos
que un es el vector solucin correspondiente a la la n-sima en el mallado de la
Figura 5.1, esto es, avanzamos el clculo la a la. Si las condiciones de frontera
fueran nulas (b = 0) n pasos del mtodo se podran escribir de forma compacta
como
un = (I + rA)n u0 . (5.11)
Es posible demostrar que los valores propios de la matriz I + rA son:
   %
k
(I + rA) = 1 4r sen 2
: k = 1, . . . , Nx .
2Nx + 2
Para garantizar la estabilidad del esquema explcito y que la solucin numrica no
crezca indenidamente, estos valores propios deben ser, en valor absoluto, menores
que la unidad, por lo que es necesario que se cumpla la condicin
a2 t 1
0<r= < ,
x2 2
que se conoce como la condicin de Courant. Esta condicin limita la longitud del
paso temporal, t que es necesario elegir una vez se ha elegido un paso espacial,
x.

Mtodo de Euler implcito. Para evitar problemas de estabilidad, se puede


evaluar la derivada segunda espacial en el instante (n + 1)t, en vez de hacerlo en
el instante nt, obteniendo de este modo la aproximacin

un+1 uni un+1 2un+1 + un+1


i
= a2 i1 i i+1
,
t x2
140
5.2 Diferencias nitas para problemas parablicos

o sea,
run+1 n+1
i1 + (1 + 2r)ui run+1 n
i+1 = ui ,

que es un mtodo implcito, ya que si hacemos variar i = 1, . . . , Nx , para cada


paso de tiempo, se ha de resolver un sistema de ecuaciones que matricialmente
toma la forma
(I rA)un+1 = un + rbn+1 , (5.12)
donde A es la dada en (5.10). ste es un mtodo implcito y requiere la resolucin
de un sistema lineal de ecuaciones. Como la matriz I rA es tridiagonal, podemos
aplicar una factorizacin LU para matrices tridiagonales como vimos en el tema
de sistemas lineales y que es muy rpido y eciente de evaluar.

Por tanto, el algoritmo recursivo que nos permite obtener un+1 , con las condiciones
de frontera conocidas, bn+1 , se puede escribir formalmente como
!
un+1 = (I rA)1 un + rbn+1 . (5.13)

Es posible demostrar que los valores propios de la matriz (I rA)1 tienen mdulo
menor que la unidad y por tanto el mtodo es incondicionalmente estable.

Mtodo de Crank-Nicholson. Otro mtodo que se puede obtener que no tiene


problemas de estabilidad y es ms preciso que el mtodo implcito, es el mtodo
de Crank-Nicholson, que viene dado por la ecuacin
 
un+1
i uni a2 uni1 2uni + uni+1 un+1 n+1
i1 2ui + un+1
i+1
= + .
t 2 x2 x2

Matricialmente se puede escribir en la forma


   
1 n+1 1 r
I rA u = I + rA un + (bn + bn+1 ), (5.14)
2 2 2

luego
 1   
n+1 1 1 n r n n+1
u = I rA I + rA u + (b + b ) . (5.15)
2 2 2

Hemos visto que con estos tres mtodos hemos ido calculando aproximaciones
numricos en los nodos del mallado de la Figura 5.1. Cada mtodo hace uso de
puntos vecinos. A la hora de construir un mtodo es til conocer de qu nodos
vecinos se ha hecho uso. En la Figura 5.2 se muestran los diagramas de nodos
utilizados para cada uno de los mtodos: (a) Euler explcito, (b) Euler implcito y
(c) Crank-Nicholson.

141
Captulo 5. Mtodos numricos para problemas de contorno

Figura 5.2: Diagrama de nodos correspondiente a los mtodos: (a) Euler explcito, (b)
Euler implcito y (c) Crank-Nicholson, utilizados en la resolucin del problema parablico.

stos y otros mtodos ms elaborados se pueden obtener fcilmente a partir de


los mtodos estudiados en el tema anterior para ecuaciones diferenciales ordina-
rias si primeramente discretizamos solamente en espacio y tomamos el vector de
soluciones
u1 (t)
u2 (t)

..
u(t) = . ,

uN 1 (t)
x
uNx (t)
en el que uj (t)  u(xj , t), y la EDP la aproximamos por el siguiente sistema lineal
de EDOs
du
= sAu + sb(t) ,
dt
2
a
donde s = x 2 . Esta tcnica se llama el Mtodo de lneas. Vemos que se trata

de un sistema de ecuaciones diferenciales ordinarias de la forma y  = f (t, y) donde


y = u y f (t, u) = sAu + sb(t). Si utilizamos el mtodo de Euler explcito visto en
el tema anterior obtenemos el mtodo (5.9). En cambio, si utilizamos el mtodo de
Euler implcito (yn+1 = yn + hf (tn+1 , yn+1 )) se obtiene el esquema (5.12) o bien
(5.13). Finalmente, si utilizamos el mtodo implcito trapezoidal, o lo que es lo
mismo, el mtodo de Adams-Moulton de un paso (yn+1 = yn + h2 (f (tn+1 , yn+1 ) +
f (tn , yn ))) obtenemos el mtodo de Crank-Nicolson. Como vemos, en principio,
podramos utilizar cualquiera de los mtodos vistos para EDOs con condiciones
iniciales (observar que las condiciones de frontera se encuentran en el vector b(t)).

Ejemplo 5.2 Considerar el problema



u 2u

= ,
t x2
x [0, 1], t [0, 1], (5.16)



u(0, t) = u(1, t) = 0,
u(x, 0) = sen(x),
2
cuya solucin exacta es: u(x, t) = e t sen(x). Tomar x = 10 1
y resolver el
1 1
problema utilizando los mtodos Euler explcito (con t = 174 y t = 173 ), Euler
142
5.2 Diferencias nitas para problemas parablicos

1 1
implcito (con t = 10 ) o Crank-Nicholson (con t = 10 ). Hallar el error mximo,
n
maxi,n |u(xi , tn ) ui |, para cada mtodo.

Solucin:
Para resolver este problema nos har falta el uso de ordenador. En la Figura 5.3
se muestran los resultados obtenidos y el programa Matlab que lo genera se ver
en el correspondiente captulo de prcticas.

1 10

5
0.5
0

u
u

0
5

0.5 10
200 200
15 15
100 10 100 10
5 5
t 0 0 t 0 0
x x

(a) Euler explcito, t = 1/174 (b) Euler explcito, t = 1/173

1 1

0.8 0.8

0.6 0.6
u

0.4 0.4

0.2 0.2

0 0
15 15
10 15 10 15
10 10
5 5 5 5
t 0 0 t 0 0
x x

(c) Euler implcito, t = 1/10 (d) Crank-Nicholson, t = 1/10

Figura 5.3: Soluciones obtenidas para el Ejemplo 5.2 con los mtodos Euler explcito ((a)
error = 0.2017, (b) error = 9.4727), Euler implcito (error = 0.1326) y Crank-Nicholson
(error = 0.0299).

143
Captulo 5. Mtodos numricos para problemas de contorno

Inclusin del trmino fuente

Con esta frmula de discretizar en la coordenada espacial e integrar con un m-


todo numrico el sistema de ODEs asociado, es inmediato y sencillo extender los
mtodos para el caso en que tengamos un trmino fuente, Q(x, t), y resolver el
problema general (5.8). Simplemente, hay que resolver el sistema de EDOs dado
por
du
= sAu + F (t) + sb(t),
dt
donde
F (x1 , t)
F (x2 , t)

F (t) = .. .
.
F (xNx , t)
De manera similar se podran resolver otras ecuaciones ms complejas y cuya
solucin por separacin de variables no sera posible.

5.3 Diferencias nitas para problemas hiperblicos

Como ejemplo de un problema de contorno hiperblico consideraremos la ecuacin


de ondas descrito por las ecuaciones
2
2
u = a2 u + F (x, t),



t
2 x2
x [0, L], t 0, (5.17)

u(0, t) = f0 (t), u(L, t) = fL (t),



u(x, 0) = f (x), u (x, 0) = g(x),
t
donde a es la velocidad de propagacin en el medio, F (x, t) es una fuerza externa
que puede depender tanto de la posicin como del tiempo, y f0 (t), fL (t) pueden
representar los movimientos de los extremos. Este modelo describe, por ejemplo,
el movimiento de una cuerda de longitud L.

Mostramos en primer lugar cmo obtener un mtodo para el caso en que F = f0 =


fL = 0. Para este problema utilizaramos el mismo mallado que en el problema
parablico (ver Figura 5.1) pues conocemos la solucin en el instante inicial y en
los dos extremos, y habra que calcular la solucin en el mallado interior. Si aproxi-
mamos las derivadas segundas tanto espacial como temporal por una aproximacin
de segundo orden
2u un 2uni + uni+1
2
(xi , tn ) i1 ,
x x2
y
2u un1
i 2uni + un+1
i
(x i , tn ) ,
t2 t2
144
5.3 Diferencias nitas para problemas hiperblicos

se llega a una aproximacin de la ecuacin (5.17) de la forma

un1 2uni + un+1 un 2uni + uni+1


i
2
i
= a2 i1 ,
t x2
que se puede reescribir como
   
n+1 a2 t2 n
a2 t2
ui n
= 2ui 1 n
+ ui1 + ui+1 un1
i ,
x2 x2

para i = 1, . . . , Nx .

El clculo de u1 requiere conocer previamente u0 , que se obtiene de la condicin


inicial, pero tambin de u1 . Una posibilidad consiste en usar la condicin
u
(x, 0) = g(x), 0xL,
t
sustituyendo
u u1 u0i
(x, 0) i = g (xi ) ,
t t
o sea,
u1i = u0i + tg (xi ) , i = 1, . . . , Nx .

Una aproximacin de mayor orden se puede obtener si se tiene en cuenta que

u
2
(t) 2 u

u (xi , t1 ) = u (xi , 0) + t (xi , 0) + 2


(xi , 0) + O t3 .
t 2 t

Si existe f  , podemos usar la ecuacin de ondas y escribir

2u 2u
2
(xi , 0) = a2 2 (xi , 0) = a2 f  (xi ) ,
t x
con lo que se tiene
2
a2 (t) 
u1i = u0i + tg (xi ) + f (xi ) .
2

Alternativamente, podemos utilizar el mtodo de lneas. De nuevo, al igual que


en el problema parablico, si discretizamos solamente respecto a la coordenada
espacial, nos queda el sistema de EDOs de la forma (utilizando la misma notacin
que anteriormente)
d2 u
= sAu,
dt2

145
Captulo 5. Mtodos numricos para problemas de contorno

2
a
donde s = x 2 y la matriz A viene dada por (5.10) (proviene de la discretizacin
2
del mismo operador, x 2 donde adems b(t) = 0 debido a que las condiciones de

frontera son nulas). Las condiciones iniciales son



f (x1 ) g(x1 )
f (x2 ) g(x2 )

u(0) =

..
.
,
u (0) =


..
.
.

f (xNx 1 ) g(xNx 1 )
f (xNx ) g(xNx )

Debemos resolver un sistema de ecuaciones diferenciales lineales de segundo orden


con condiciones iniciales en la funcin y su derivada.

Podemos transformar este sistema de ecuaciones diferenciales de segundo orden en


uno de primer orden,    
d u v
=
dt v sAu
y condiciones iniciales: u(0) y v(0) = u (0). De nuevo es de la forma y  = f (t, y)
donde y = (u, v)T y f (t, y) = (v, sAu)T , y podemos utilizar cualquiera de los
mtodos estudiados para EDOs.

Un esquema distinto pero a la vez muy sencillo y con muy buenas propiedades,
que es de segundo orden tanto en la discretizacin espacial como en la temporal
se corresponde con el siguiente algoritmo

U = un + t
2 v
n
n+1 n
v = v + tsAU
un+1 = U + t
2 v
n+1

el cual se inicia con: u0 = u(0), v 0 = u (0). Este esquema recibe el nombre de


mtodo de Strang o tambin leap-frog por la forma especial en que se evalan un
y vn .

Inclusin de las condiciones de frontera y del trmino fuente

Lo mostramos nicamente para el mtodo de lneas. Estos dos trminos se pueden


incluir de manera similar a como se hizo en el problema parablico, y el sistema
de EDOs a resolver ser
   
d u v
= .
dt v sAu + F (t) + sb(t)

146
5.4 Diferencias nitas para problemas elpticos

Figura 5.4: Mallado para un problema elptico 2D rectangular.

El algoritmo habra que modicarlo ligeramente de la siguiente forma:


t n
U = un + v ,
2
v n+1 = n
v + t(sAU + F (tn ) + sb(tn )), (5.18)
t n+1
un+1 = U+ v .
2

5.4 Diferencias nitas para problemas elpticos

Como ejemplo de problema elptico vamos a considerar el problema de contorno


asociado a la ecuacin de Poisson, y por sencillez consideraremos condiciones de
frontera nulas
2

u 2u
+ 2 = f (x, y) , (x, y) D = [0, l1 ] [0, l2 ] ,
x2 y (5.19)



u(x, y) = 0 , (x, y) D.

El primer paso que realizaremos consistir en discretizar el rectngulo [0, l1 ][0, l2 ]


mediante un conjunto de nodos igualmente espaciados, como se muestra en la
Figura 5.4,
147
Captulo 5. Mtodos numricos para problemas de contorno

Figura 5.5: Diagrama correspondiente al mtodo de 5 puntos.

xi = ix , i = 0, 1, 2, . . . , N + 1 ,
yj = jy , j = 0, 1, 2, . . . , M + 1 .

Utilizando una aproximacin similar a la de (5.2), para las derivadas segundas, se


tiene que
2u ui1j 2uij + ui+1j
2
(xi , yj ) ,
x x2
2u uij1 2uij + uij+1
(xi , yj ) ,
y 2 y 2
donde uij = u (xi , yj ). De este modo, se tiene que la ecuacin (5.19) se puede
aproximar de la forma
1 1
2
(ui1j 2uij + ui+1j ) + (uij1 2uij + uij+1 ) = fij . (5.20)
x y 2

Si reescalamos los ejes x e y, y tomamos un mallado tal que x = y la recurrencia


toma la forma

ui1j + ui+1j + uij1 + uij+1 4uij = x2 fij . (5.21)

para i = 1, . . . , N, j = 1, . . . , M . Este esquema se corresponde con el diagrama de


5 puntos de la Figura 5.5.

Para poder escribir las ecuaciones resultantes se han de ordenar los nodos del
mallado de algn modo. Una posibilidad es utilizar el orden dado por

l = i + N (j 1) .
148
5.4 Diferencias nitas para problemas elpticos

Cuando se escriben las ecuaciones teniendo en cuenta las condiciones de contorno


se obtiene un sistema de ecuaciones de la forma

Au = b, (5.22)
donde u y b son vectores de dimension N M y A es una la matriz de dimension
NM NM.

Ejemplo 5.3 Halla el sistema de ecuaciones a resolver para N = M = 2.

Solucin:
Los nodos interiores en los que debemos encontrar una aproximacin a la solucin
son u1 = (u11 , u12 )T , u2 = (u21 , u22 )T y los valores de frontera conocidos son
u0 = (u01 , u02 )T , u3 = (u31 , u32 )T as como los valores de u10 , u20 , u13 , u23 . Si
aplicamos la ecuacin (5.21) para i, j = 1, 2 obtenemos
u01 + u21 + u10 + u12 4u11 = x2 f11
u02 + u22 + u11 + u13 4u12 = x2 f12
u11 + u31 + u20 + u22 4u21 = x2 f21
u12 + u32 + u21 + u23 4u22 = x2 f22
que se puede escribir matricialmente como (5.22) donde

4 1 1 0 u11
1 4 0 1
A= , u = u12 ,
1 0 4 1 u21
0 1 1 4 u22

u01 u10 f11
u02 u13
2 f12

b=
u31 u20 + x f21 .
u32 u23 f22


En general, se tiene

A I 0 u1 b1
I A I u2 b2

A= .. .. .. , u= .. , b= .. , (5.23)
. . . . .
0 I A uN bN
con
4 1 0
1 4 1

A= .. .. .. , (5.24)
. . .
0 1 4
149
Captulo 5. Mtodos numricos para problemas de contorno

donde ui = (ui,1 , . . . , ui,M )T , i = 1, . . . , N , luego u, b RN M , I, A RM M


y A RN M N M . El vector b contiene la informacin proveniente tanto de la
frontera (en caso de las condiciones no fueran nulas) como del trmino fuente f .
Como vemos, esta ordenacin hace que A sea una matriz en banda con amplitud
de banda 2N + 1 como mucho, por lo que los mtodos del captulo de sistemas
lineales sern aplicables. Para problemas de grandes dimensiones, con valores de
N grandes, los mtodos iterativos de resolucin de ecuaciones lineales suelen ser
los ms ecientes.

5.5 Ejercicios resueltos

Ejercicio 5.1 Obtn una aproximacin en diferencias nitas para el problema

2u
= f (x) , 0 x 1 ,
x2
u u
(0) = 0 , (1) = 0 ,
x x

que tenga un error de truncamiento O x2 .

Solucin:
Se considera una malla como la que se muestra en la Figura 5.6.

0 1

1 0 1 2 N N +1N +2

Figura 5.6: Malla para el problema unidimensional.

Se tiene la aproximacin

2u ui1 2ui + ui+1

= + O x2 .
x2 x2

Si usamos las aproximaciones de las derivadas


u u 1 u0 u uN +1 uN
(0) = + O(x) , (xN ) = + O(x) ,
x x x x
se obtiene un esquema con orden O(x).

150
5.5 Ejercicios resueltos

Para obtener un esquema de orden mayor, se introducen los nodos cticios x1 y


xN +2 y se usan las aproximaciones,

u u1 u1 u uN +2 uN
(0) = + O(x2 ) , (xN +1 ) = + O(x2 ) .
x 2x x x

Para eliminar los nodos cticios, se evala la ecuacin que dene el problema en
los nodos x0 , x1 , . . . , xN +1 , obteniendo
1
(u1 2u0 + u1 ) = f (x0 )
x2
1
(u0 2u1 + u2 ) = f (x1 )
x2
..
.
1
(uN 2uN +1 + uN +2 ) = f (xN +1 )
x2

Se tienen las condiciones de contorno

u1 = u1 , uN +2 = uN

y haciendo uso de estas condiciones, se tiene el sistema

u0 +2u1 = x2 f (x0 )
u0 2u1 u2 = x2 f (x1 )
..
. =
2uN 2uN +1 = x2 f (xN +1 )

que dene el esquema con orden de truncamiento O(x2 ). 

Ejercicio 5.2 Dado el problema

y  = 2 y , 1 x 1 ,

con y(1) = y(1) = 1. Obtn un mtodo numrico para la solucin de este proble-
ma. Cal es la solucin exacta del problema en diferencias obtenido?

Solucin:
Si se utiliza la aproximacin
yi1 2yi + yi+1
y  (xi ) ,
x2
se tiene el problema
yi1 2yi + yi+1 = x2 2 yi ,
151
Captulo 5. Mtodos numricos para problemas de contorno

o sea,

yi+1 2 + x2 2 yi + yi1 = 0 .

Si probamos soluciones del tipo yi = ri , tenemos la ecuacin caracterstica

r2 (2 + x2 2 )r + 1 = 0 ,

cuyas soluciones son



2
2 + x2 2 (2 + x2 2 ) 4 2 + x2 2 x2 4 + x2 2
r= = = r1,2 .
2 2 2
La solucin general del problema discreto es de la forma

yi = c1 r1i + c2 r2i ,

Se toman los nodos 0, 1, . . . , Nx + 1, y se imponen las condiciones de contorno

y0 = 1 = c1 + c2 , ynx +1 = c1 r1Nx +1 + c2 r2Nx +1 = 1 ,

se obteniene que

1 r2Nx +1 r1Nx +1 1
c1 = , c 2 = .
r1Nx +1 r2Nx +1 r1Nx +1 r2Nx +1

Ejercicio 5.3 Considera el problema



u 2u

= , & '
t x2 1
x [0, 1], t 0, , (5.25)

9

u(0, t) = u(1, t) = 0,
u(x, 0) = sen(x),
2
cuya solucin exacta es: u(x, t) = e t sen(x). Toma x = 13 e integra con un
paso de integracin, t = 19 utilizando los mtodos Euler explcito, Euler implcito
y Crank-Nicholson. Halla el error mximo para cada mtodo.

Solucin:
El mallado que hay que considerar con las condiciones del problema se muestra en
la Figura 5.7. Conocemos la solucin en los puntos marcados con y falta saber
la solucin en los marcados con .

152
5.5 Ejercicios resueltos

1
t1 = 9

t0 = 0
x0 = 0 x1 x2 x3 = 1
1 1
x = 3 t = 9

Figura 5.7: Mallado para el problema de valor inicial.

Se puede establecer la notacin que se indica en la Figura 5.8. Por las condiciones

u10 u11 u12 u13

u00 u01 u02 u03


Figura 5.8: Notacin para el problema de valor inicial.

de frontera u(0, t) = u(1, t) = 0, se tiene que

u00 = u10 = u03 = u13 = 0 .

Haciendo uso de las condiciones iniciales tenemos que



0 ! 3
u1 = sen (x1 ) = sen = ,
3 2
 
2 3
u02 = sen (x2 ) = sen = .
3 2

Si utilizamos el mtodo de Euler explcito,


un+1 uni un 2uni + uni+1
i
= i1 ,
t x2
o sea,
un+1
i = (1 2r)uni + runi1 + runi+1 ,
t
con r = x2 . Tomamos n = 0 y consideramos i = 1, 2,

(i = 1) u11 = (1 2r)u01 + ru02 ,


(i = 2) u12 = (1 2r)u02 + ru01 ,
153
Captulo 5. Mtodos numricos para problemas de contorno

que en forma matricial se expresa


 1   0      
u1 u1 2 1 u01 u01
= +r = (I + rA) .
u12 u02 1 2 u02 u02
Con las condiciones del problema
1
t 9
r= = 1 =1
x2 32

y, por tanto, no se cumple la condicin de Courant.

Se tiene       
u11 1 1 1 3 0
= = .
u12 1 1 1 2 0
Esta solucin se ha de comparar con la solucin analtica
     2
  
1 u (x1 , t1 ) e 9 sen 3 0.2892
u t1 = =
u (x2 , t2 )
= 2
=
0.2892
.
9 e 9 sen 2 3

Si se usa el mtodo de Euler implcito,

un+1 uni un+1 2un+1 + un+1


i
= i1 i i+1
,
t x2
que en forma matricial se expresa
 n+1   n    
u1 u1 2 1 un+1
1
= + r .
un+1
2 un2 1 2 un+1
2

Con las condiciones del problema se tiene el sistema


  1   
3 1 u1 3 1
= .
1 3 u12 2 1

Resolviendo el sistema se obtiene


 1     
u1 3 1 0.433
= = ,
u12 4 1 0.433

con lo que el error mximo obtenido es = |0.433 0.289| = 0.144.

Si ahora utilizamos el mtodo de Crank-Nicholson,

 
un+1 uni 1 un+1 n+1
i1 2ui + un+1
i+1 un 2uni + uni+1
i
= 2
+ i1 ,
t 2 x x2
154
5.5 Ejercicios resueltos

que en forma matricial se expresa


 n+1   n     n+1    
u1 u1 r 2 1 u1 r 2 1 un1
= + + .
un+1
2 u n
2 2 1 2 u n+1
2 2 1 2 un2

Para nuestro problema


     1 
1 0 1 2 1 u1

0 1 2 1 2 u 1
2
     0 
1 0 1 2 1 u1
= + ,
0 1 2 1 2 u 0
2

esto es
        
2 12 u11 0 1
2
3 1 3 1
= = ,
12 2 u12 1
2 0 2 1 4 1

cuya solucin es      
u11 1 1 0.2886
= =
u12 2 3 1 0.2886
con lo que el error mximo es = |0.2892 0.2886| = 0.0006. 

Ejercicio 5.4 Considera el problema



u 2u

= + t(1 + x),

x2 & '
t 1
x [0, 1], t 0, .

u(0, t) = t, 10



u(1, t) = 2t,
u(x, 0) = sen(x),
1
Toma x = 3 y obtn el sistema de ecuaciones diferenciales que satisface el vector
 
u(x1 , t)
u(t) = ,
u(x2 , t)

esto es, escribe explcitamente el sistema de ecuaciones


du
= sAu + F (t) + sb(t).
dt

Solucin:
Se puede considerar un mallado similar al que se muestra en la Figura 5.7, y una
aproximacin para la derivada segunda de la forma
2u ui1 2ui + ui+1
2
.
x x2
155
Captulo 5. Mtodos numricos para problemas de contorno

En un nodo i se tiene la aproximacin


dui ui1 2ui + ui+1
= + t (1 + xi ) .
dt x2

Usando las condiciones de frontera, para el nodo i = 1 se tiene


du1 2u1 + u2 t
= 2
+ + t (1 + x1 ) ,
dt x x2
y para el nodo i = 2,
du2 u1 2u2 2t
= 2
+ + t (1 + x2 ) .
dt x x2

En forma matricial
        
d u1 2 1 u1 t 4
3t
= s +s + ,
dt u2 1 2 u2 2t 5
3t

con lo que se idencan las matrices


     
2 1 t 4
3t
A= , b= , F = .
1 2 2t 5
3t

5.6 Ejercicios propuestos

1. Resuelve la siguiente ecuacin diferencial con condiciones en la frontera


1 1
2
y  + xy  x2 y = 2 ex /2
2 2 x [0, 1]
2
y(0) = 2, y(1) = ,
e
utilizando el mtodo de diferencias nitas y x = 14 . Compara el resultado
2
obtenido con la solucin exacta, y(x) = 2 ex /2 , e indica cual es el error
mximo cometido.
2. Obtn el error de truncamiento del mtodo

t
un+1
i = uni + r uni1 2uni + uni+1 , r= ,
x2
para la ecuacin del calor
u 2u
= 2.
t x
156
5.6 Ejercicios propuestos

3. Obtn una solucin aproximada del problema

2u 2u
+ 2 = 0, 0 < x < 2, 0 < y < 2,
x2 y

u(0, y) = 0, u(2, y) = y(2 y), 0 < y < 2,



x, 0 < x < 1,
u(x, 0) = 0, u(x, 2) =
2 x, 1 x < 2,

usando diferencias nitas con un tamao de malla x = y = 2/3. Expresa


el sistema a resolver en forma matricial.

4. Obtn una solucin aproximada del problema


2

u 2u
+ 2 = x(3 x)y(3 y) , (x, y) [0, 3] [0, 3] ,
x2 y



u(0, y) = u(3, y) = u(x, 0) = u(x, 3) = 0 ,

usando diferencias nitas con un tamao de malla x = y = 1.


5. Deduce los mtodos de Euler explcito, Euler implcito y Crank-Nicholson
cuando el trmino fuente depende linealmente de la solucin:
2
u 2 u

= a bu,
t x2
x [0, L], t 0 ,



u(0, t) = f 0 (t), u(L, t) = f L (t) ,
u(x, 0) = u0 (x),

con b > 0.

6. Deduce el mtodo de leap-frog cuando el trmino fuente depende linealmente


de la solucin:
2

u 2
2 u

t2 = a + bu,

x2
x [0, L], t 0 .

u(0, t) = f0 (t), u(L, t) = fL (t) ,



u(x, 0) = f (x), u (x, 0) = g(x),
t

157
Captulo 6

Introduccin a los elementos nitos

6.1 Tcnicas variacionales

Hemos visto que el mtodo de las diferencias nitas consiste, esencialmente, en


sustituir el valor de las derivadas de la funcin en un punto por un cociente incre-
mental obteniendo de este modo una ecuacin en diferencias, cuya solucin nos da
la solucin aproximada del problema.

Ahora expondremos el mtodo de Rayleigh-Ritz, que es una tcnica variacional


que trata el problema desde otro punto de vista. En primer lugar, se reformula el
problema de contorno, como el problema de encontrar, dentro de un conjunto de
funciones sucientemente derivables que verican las condiciones de contorno, la
funcin que minimiza cierta integral. La solucin de este nuevo problema nos dar
una aproximacin al problema original.

El mtodo de Rayleigh-Ritz servir como una introduccin al mtodo de los ele-


mentos nitos, que se desarroll entre los aos 1940 y 1960 en el campo de la
mecnica estructural. Este mtodo es una tcnica numrica estndar en el estudio
de la mecnica de slidos y ha sido utilizado con xito en muchos otros campos.

Para exponer cmo funciona el mtodo de Rayleigh-Ritz, consideremos el problema


de contorno asociado a la deformacin de una viga, que es de la forma
 
d dy
p(x) + q(x)y = f (x) , 0x1, (6.1)
dx dx

con las condiciones de contorno y(0) = y(1) = 0.

159
Captulo 6. Introduccin a los elementos nitos

Se puede ver que la solucin de la ecuacin (6.1) es la funcin que minimiza una
cierta integral entre todas las funciones del conjunto C02 [0, 1], denido por
( )
C02 [0, 1] = u C 2 [0, 1]/u(0) = u(1) = 0 .

As, una funcin y C02 [0, 1] es la solucin del problema de la viga (6.1) si, y slo
si, y es la nica funcin que minimiza la integral
" 1 !
p(x) (u (x)) + q(x) (u(x)) 2f (x)u(x) dx .
2 2
I(u) = (6.2)
0

Para resolver el problema de encontrar una funcin y que minimice la integral


(6.2), se eligen ciertas funciones bsicas, 1 , 2 , . . . , n , que sean linealmente in-
dependientes y que veriquen
i (0) = i (1) = 0 , i = 1, 2, . . . , n .
Suponemos que
n

u= ci i (x) ,
i=1
y tratamos de obtener las constantes c1 , c2 , . . . , cn , que hacen mnima la integral
 n 

I ci i (x)
i=1
 2  2
" 1 n
 n
 n

= p(x) ci i (x) + q(x) ci i (x) 2f (x) ci i (x) dx .
0 i=1 i=1 i=1

Para que se alcance un mnimo se han de satisfacer las ecuaciones normales


I
= 0 , j = 1, . . . n .
cj

Derivando, se obtienen las ecuaciones


n " 1  "
 

1
p(x)i (x)j (x) + q(x)i (x)j (x) dx ci f (x)j (x) dx = 0 ,
i=1 0 0

para j = 1, 2, . . . , n. Estas ecuaciones dan lugar a un sistema de ecuaciones lineales


Ac = b ,
donde A es una matriz simtrica cuyos elementos son de la forma
" 1

aij = p(x)i (x)j (x) + q(x)i (x)j (x) dx ,


0
160
6.1 Tcnicas variacionales

y las coordenadas del vector b son


" 1
bi = f (x)i (x) dx .
0

La solucin de este sistema nos da los coecientes ci que permiten reconstruir la


solucin aproximada.

Para obtener una solucin aproximada hace falta elegir unas funciones base i
determinadas. Una posibilidad es tomar como funciones bsicas polinomios lineales
a trozos. Para construir estas funciones comenzamos tomando una particin del
intervalo [0, 1] cuyos nodos x0 , x1 , . . . , xn+1 , satisfacen

0 = x0 x1 xn+1 = 1 .

Tomando xi = xi+1 xi , se denen las funciones bsicas




0 si 0 x xi1 ,
1
(x x ) si xi1 x xi ,
xi1 i1
i (x) =


1
(x x) si xi x xi+1 ,
xi i+1
0 si xi+1 x 1,

para i = 1, 2, . . . , n. Derivando, se tiene




0 si 0 < x < xi1 ,
1
si xi1 < x < xi ,
i (x) = xi1

1 si xi < x < xi+1 ,
xi
0 si xi+1 < x < 1,

para i = 1, 2, . . . , n. Como i y i son no nulas en (xi1 , xi+1 ), los elementos de


la matriz A no nulos son
" 1 !
p(x) (i (x)) + q(x) (i (x)) dx
2 2
aii =
0
" xi 2 " xi+1  2
1 1
= p(x) dx + p(x) dx
xi1 xi1 xi xi
" xi  2
1 2
+ (x xi1 ) q(x) dx
xi1 x i1
" xi+1  2
1 2
+ (xi+1 x) q(x) dx ,
xi x i

para i = 1, 2, . . . , n.

161
Captulo 6. Introduccin a los elementos nitos

" 1

aii+1 = p(x) i (x)i+1 + q(x) (i (x)i+1 (x)) dx


0
" xi+1  2
1
= p(x) dx
xi xi
" xi+1  2
1
+ (xi+1 x) (x xi ) q(x) dx ,
xi xi

para i = 1, 2, . . . , n 1; y
" 1

aii1 = p(x) i (x)i1 + q(x) (i (x)i1 (x)) dx


0
" xi  2
1
= p(x) dx
xi1 xi1
" xi  2
1
+ (xi x) (x xi1 ) q(x) dx ,
xi1 xi1

para i = 2, . . . , n. Los elementos del vector b son,


" 1
bi = f (x)i (x) dx
" xi
0
" xi+1
1 1
= (x xi1 ) f (x) dx + (xi+1 x) f (x) dx .
xi1 xi1 xi xi

Para implementar el mtodo se deben evaluar las integrales


  " xi+1
1
Q1i = (xi+1 x) (x xi ) q(x) dx , i = 1, 2, . . . n 1,
xi xi
  " xi
1 2
Q2i = (x xi1 ) q(x) dx , i = 1, 2, . . . n,
xi1 xi1
  " xi+1
1 2
Q3i = (xi+1 x) q(x) dx , i = 1, 2, . . . n,
xi xi
  " xi+1
1
Q4i = p(x) dx , i = 1, 2, . . . n + 1,
xi1 xi
  " xi
1
Q5i = (x xi1 ) f (x) dx , i = 1, 2, . . . n,
xi1 xi1
  " xi+1
1
Q6i = (xi+1 x) f (x) dx , i = 1, 2, . . . n.
xi xi

162
6.2 Condiciones de contorno no nulas

Una vez calculadas las integrales se tiene que

aii = Q4i + Q4i+1 + Q2i + Q3i ,


aii+1 = Q4i + Q1i ,
aii1 = Q4i + Q1i1

y
bi = Q5i + Q6i .

6.2 Condiciones de contorno no nulas

Para ver cmo se resolvera un problema con condiciones de contorno no homog-


neas, consideremos el siguiente problema

2u
=f , a<x<b, (6.3)
x2
con las condiciones
u
u(a) = ua , (b) = tb .
x

Para resolver este problema se buscan soluciones de la forma


n

u(x) = 0 (x) + ck k (x) . (6.4)
k=1

0 (x) ha de satisfacer 0 (a) = ua y las otras funciones k (a) = 0. Introduciendo


la expresin (6.4) en el problema (6.3), se obtiene
n
2 0  2 k
=f .
x2 x2
k=1

Para este problema se dene el residuo


n
2 0  2 k
R= f ,
x2 x2
k=1

y las constantes ck se pueden obtener imponiendo que se satisfagan las ecuaciones


" b
R wj dx = 0 , j = 1, . . . , n,
a

163
Captulo 6. Introduccin a los elementos nitos

para unas funciones arbitrarias wj . Este mtodo se llama mtodo de los residuos
ponderados. Si se eligen wj = j , j = 1, . . . , n, se tiene un mtodo de Galerkin. En
este ltimo caso, se tienen las ecuaciones
" b " n
b " b
2 0 2 k
j dx ck j dx = f j dx .
a x2 a k=1 x2 a

Usando la integracin por partes, se tiene


" b & 'b
0 j 0
dx j
a x x x a
n
 " b & 'b  " b
 k j k
+ dx j ck = f j dx .
a x x
k=1
x a a

Como las funciones j hemos supuesto que se anulan en x = a, se puede escribir


" b  n " b
0 j k j
dx + ck dx
a x x a x x
k=1
" b  k n
0
= f j dx + (b)j (b) + (b)j (b)ck .
a x x
k=1

Usando la condicin de contorno en x = b, se llega a que


n
 " b " b " b
k j 0 j
ck dx = f j dx + tb j (b) dx ,
a x x a a x x
k=1

que se expresa como un sistema de ecuaciones de la forma

Sc = b ,

con las matrices


" b
j k
Sjk = dx ,
a x x
" b " b
0 j
bj = f j dx + tb j (b) dx .
a a x x

164
6.3 Introduccin a los elementos nitos bidimensionales

6.3 Introduccin a los elementos nitos bidimensionales

El mtodo de los elementos nitos es similar al mtodo de Rayleigh-Ritz. Para


mostrar cmo funciona este mtodo consideremos el problema bidimensional
   
u u
p(x, y) + q(x, y) + r(x, y)u = f (x, y) , (6.5)
x x y y
con (x, y) D, siendo D una regin plana cuya frontera es S = S1 S2 . Sobre S1
se impone una condicin de contorno de la forma

u(x, y) = g(x, y) , (x, y) S1 .

Sobre S2 se impone una condicin de contorno de la forma


u u
p(x, y) n1 + q(x, y) n2 + g1 (x, y)u = g2 (x, y) , (x, y) S2 ,
x y
donde el vector n1 = (n1 , n2 ) es un vector que en cada punto es normal a la curva
S2 .

Supongamos que p, q, r y f son funciones continuas en D S, que p y q admiten


derivadas parciales continuas y que g1 y g2 son continuas en S2 . Supongamos
adems que p(x, y) > 0, q(x, y) > 0, r(x, y) 0 y que g1 (x, y) 0. Entonces la
solucin del problema (6.5) es la nica funcin que minimiza la integral

I(w) =
""    2  2  
1 w w
p(x, y) + q(x, y) r(x, y)w + f (x, y)w dx dy
2
D 2 x y
"  
1
+ g2 (x, y)w + g1 (x, y)w 2
dS , (6.6)
S2 2
sobre todas las funciones w = w(x, y) que satisfacen w(x, y) = g(x, y) para (x, y)
S1 .

Para obtener el mnimo de (6.6), el primer paso que se sigue es dividir la regin D
en un nmero nito de secciones o elementos regulares, que pueden ser rectngulos
o tringulos (vase la Figura 6.1)

Para las funciones base que se utilizan para aproximar la funcin que minimiza
(6.6) se suelen utilizar polinomios a trozos.

Supondremos que la regin D se ha dividido en elementos triangulares, cuyos


vrtices se llaman nodos. El mtodo busca una aproximacin de la forma
m

(x, y) = i i (x, y) ,
i=1
165
Captulo 6. Introduccin a los elementos nitos

Figura 6.1: Mallado de la regin D.

donde i son polinomios lineales a trozos y i son constantes. Algunas de las


constantes, n+1 , n+2 , . . . , m se usan para garantizar que se cumpla la condicin
de contorno
(x, y) = g(x, y) , (x, y) S1 ,
mientras que las otras constantes 1 , 2 , . . . , n se utilizan para minimizar la
integral
m 

I i i (x, y) =
i=1
m 2 m 2
""  i  i
1
p(x, y) i + q(x, y) i
D 2 i=1
x i=1
y
m 2
 m
r(x, y) i i + f (x, y) i i dx dy
i=1 i=1
m 2
" m
 
g2 (x, y) 1
+ i i + g1 (x, y) i i dS .
S2 i=1
2 i=1

Para obtener el mnimo se plantean las ecuaciones normales


I
= 0 , j = 1, 2, . . . , n .
j

Estas ecuaciones de expresan como el sistema de ecuaciones lineales

Ac = b , (6.7)
166
6.3 Introduccin a los elementos nitos bidimensionales

T
donde c = (1 , 2 , . . . , n ) , A es una matriz cuyos elementos son
"" 
i j i j
aij = p(x, y) + q(x, y)
D x x y y
"
r(x, y)i j ) dx dy + g1 (x, y)i j dS ,
S2

y el vector b tiene los elementos


"" " m

bi = f (x, y)i dx dy + g2 (x, y)i dS aik k .
D S2 k=n+1

La eleccin de las funciones bsicas es importante para obtener una matriz con
buenas propiedades a la hora de resolver el sistema (6.7). Veremos una posibilidad
basada el polinomios lineales a trozos denidos sobre tringulos.

Comenzamos dividiendo la regin D en tringulos Ti , y se escoge una ordenacin


de los tringulos de la malla que se genera y otra ordenacin para los vrtices o
nodos, E1 , E2 , . . . , Em . Un ejemplo tpico se muestra en la Figura 6.2.

E7 E2

T2
T5 T1 T3 E3
E1
T6 T4
E6 E5 E4
Figura 6.2: Ordenacin del mallado.

Si E1 , E2 , . . . , Em son los nodos de la malla, a cada nodo Ek se le asocia una


funcin k , que es lineal en cada tringulo y vale 1 en Ek y 0 en los dems nodos.

Para construir estas funciones k , se procede como sigue. Se ja un tringulo Ti y


se elige una ordenacin para sus vrtices, como se muestra en la Figura 6.3. y se
construyen los polinomios lineales
(i) (i) (i) (i)
N1 (x, y) = a1 x + b1 y + c1 ,
(i) (i) (i) (i)
N2 (x, y) = a2 x + b2 y + c2 ,
(i) (i) (i) (i)
N3 (x, y) = a3 x + b3 y + c3 ,
167
Captulo 6. Introduccin a los elementos nitos

(x3 , y3 )

Ti

(x1 , y1 ) (x2 , y2 )
Figura 6.3: Ordenacin de los vrtices en un tringulo.

de forma que se satisfaga


(i)
x1 y1 1 a1 1
x2 (i)
y2 1 b1 = 0 ,
x3 y3 1 (i)
c1 0

(i)
x1 y1 1 a 0
x2 2
y2 1 b(i)
2 = 1 ,
x3 y3 1 (i)
c2 0
y
(i)
x1 y1 1 a 0
x2 3
y2 1 b(i)
3 = 0 .
x3 y3 1 (i)
c3 1

A continuacin, se ve qu nodos estn en la frontera S1 . Si estos nodos son, por


ejemplo, En+1 , . . . , Em , se determinan los valores de n+1 , . . . , m , de forma que
en estos nodos se satisfaga la condicin de contorno

(x, y) = g(x, y) .

Una vez se han determinado estas constantes, hay que evaluar las integrales dobles
y las integrales curvilneas.

Las integrales dobles de los elementos de matriz aij se descomponen de la forma


""  ""
aij = G (i , j ) dx dy = G (i , j ) dx dy ,
D lI Tl

donde I es el conjunto de tringulos donde i y j toman valores no nulos.

168
6.3 Introduccin a los elementos nitos bidimensionales

Para evaluar las integrales dobles sobre un tringulo se suele usar una frmula de
cuadratura que aproxima el valor de estas integrales. Una posibilidad es la siguien-
te. Sean (x4 , y4 ), (x5 , y5 ), (x6 , y6 ) los puntos medios del tringulo Ti y (x7 , y7 ) el
baricentro, o sea,
1 1
x4 = (x1 + x2 ) , y4 = (y1 + y2 ) ,
2 2
1 1
x5 = (x1 + x3 ) , y5 = (y1 + y3 ) ,
2 2
1 1
x6 = (x2 + x3 ) , y6 = (y2 + y3 ) ,
2 2
1 1
x7 = (x1 + x2 + x3 ) , y7 = (y1 + y2 + y3 ) .
2 2
Entonces se puede aproximar
"" 
1 1
F (x, y) dx dy || F (x1 , y1 ) + F (x2 , y2 ) + F (x3 , y3 )
T 2 20

2 9
+ (F (x4 , y4 ) + F (x5 , y5 ) + F (x6 , y6 )) + F (x7 , y7 ) ,
15 20

donde 1
2 || es el rea del tringulo, que se puede calcular como
 
 1 x1 y1 
1 1 
AT = || = det 1 x2 y2  .
2 2
1 x 3 y3 

Por ltimo, se han de calcular las integrales curvilneas sobre los segmentos que
unen los nodos situados en S2 . Para ello, por ejemplo, se usa una parametrizacin
del segmento l1 , que une (x1 , y1 ) con (x2 , y2 ), de la forma x = x(t), y = y(t) con
x (t1 ) = x1 , y (t1 ) = y1 , x (t2 ) = x2 e y (t2 ) = y2 , y se usa la expresin
" " t2 
2 2
H(x, y) dS = H (x(t), y(t)) (x (t)) + (y  (t)) dt .
l1 t1

Con estos elementos ya es posible calcular los elementos de matriz aij y los elemen-
tos bi del trmino independiente del sistema (6.7), cuya solucin permite aproximar
la solucin del problema inicial.

Hay otras posibilidades para la construccin de las funciones k , que dan lugar a
distintos mtodos de elementos nitos para resolver el problema (6.5).

169
Captulo 6. Introduccin a los elementos nitos

6.4 Ejercicios resueltos

Ejercicio 6.1 Plantear el sistema de ecuaciones que hay que resolver si se utiliza
el mtodo de Rayleigh-Ritz lineal para discretizar el problema
d2 y
= 4x2 8x + 1 , 0 < x < 1; y(0) = y(1) = 0 ,
dx2
si se divide el intervalo [0, 1] en 4 subintervalos.

Solucin:
Se utilizan las funciones


0 0 < x xi1

1 (x x )
i1 xi1 x xi
i = x


1
(x i+1 x) xi x xi+1

x
0 x xi+1

y se plantea el funcional
" 1

I(u) = u (x)2 2 4x2 8x + 1 u(x) dx ,


0
con

3
u(x) = ci i (x) ,
i=1
con lo que se tiene

" 1  2  3

3

I(u) = ci i (x) 2 4x2 8x + 1 ci i (x) dx .


0 i=1 i=1

Derivando
"   
I 1 
3

= 2 ci i (x) j 2 4x2 8x + 1 j (x) dx = 0 .


cj 0 i=1

Se tiene: para j = 1
" 1   
3

ci i (x) 1 4x2 8x + 1 1 (x) dx = 0 .


0 i=1

Para j = 2
"   
1 
3

ci i (x) 2 4x2 8x + 1 2 (x) dx = 0 .


0 i=1
170
6.4 Ejercicios resueltos

Para j = 3
"   
1 
3

ci i (x) 3 4x2 8x + 1 3 (x) dx = 0 .


0 i=1

De donde se tiene el sistema


1   1   1   1 2

dx dx dx c1 4x 8x + 1 1 dx
0 1 1 01 1 2 01 1 3 01 2

1 1 2 dx dx dx c2 = 0 4x 8x + 1 2 dx
1  
0  1 2 2
0 01 2 3 1 2

1 3 dx 2 3 dx 3 3 dx c3 4x 8x + 1 3 dx
0 0 0 0

Hay que calcular los distintos elementos de matriz. Para ello, se tiene en cuenta
que

0 0 x x1
x x
1
0 < x x1

1 (x x ) x 1 x x2
1
1 (x) = x1
(x2 x) x1 < x x2 , 2 (x) = x ,



1
(x x) x 2 < x x3
0 x x2
x
3
0 x x3
y

0 0 x x2
3 (x) = 1
(x x2 ) x2 x x3 ,
x
1
x (x4 x) x3 < x x4

Y las derivadas

0 x x1
1
0 < x < x1 0

x 1 x1 < x < x 2

1 (x) = x1
x1 < x < x2 , 2 (x) = x1 ,


x2 < x < x 3
0 x > x2
x
0 x x3
y

0 0 < x < x2
3 (x) = 1
x2 < x < x 3 .
x

x
1
x3 < x < x 4

Calculando las integrales, se tiene


" 1
2

4x 8x + 1 1 (x) dx
0
" x1 " x2
x 2
(x x1 ) 2

= 4x 8x + 1 dx + 4x 8x + 1 1 (x) dx
0 x x1 x
 
1 4 1
1

= x21 4x31 + x41 x1 x2 3 12x2 + 4x22 + x22 3 16x2 + 6x22 ,


x 3 3 6
171
Captulo 6. Introduccin a los elementos nitos

" 1

4x2 8x + 1 2 (x) dx
0
" x2 " x3
(x x1 ) 2
(x3 x) 2

= 4x 8x + 1 dx + 4x 8x + 1 1 (x) dx
x1 x x2 x
1

= 3x21 8x31 + 2x41 2x1 x2 3 12x2 + 4x22 6x2 x3


6x

8x32 (4 + x3 ) + 6x22 (1 + 4x3 ) + x23 3 8x3 + 2x23 ,

" 1

4x2 8x + 1 3 (x) dx
0
" x3 " 1
(x x2 ) 2
(1 x) 2

= 4x 8x + 1 dx + 4x 8x + 1 1 (x) dx
x2 x x3 x
1
= 3 + 3x22 8x32 + 2x42 6x3 + 30x23
6x

40x33 + 12x43 2x2 x3 3 12x3 + 4x23 .

" 1 " 1 " 1


2
1 1 dx = 2 2 dx = 3 3 dx = ,
0 0 0 x

" 1 " 1 " 1


1 1
1 2 dx = , 1 3 dx = 0, 2 3 dx = .
0 x 0 0 x


6.5 Ejercicios propuestos

1. Plantea el sistema de ecuaciones que se ha de resolver si se utiliza el mtodo


de Rayleigh-Ritz lineal para discretizar el problema

d2 y
= 4x2 8x + 1 , 0 < x < 1 ,
dx2
con las condiciones de contorno y(0) = y(1) = 0.
2. Dado el problema de contorno
 
d dy
ex + ex y = x, 0 < x < 1, y(0) = y(1) = 0.
dx dx
172
6.5 Ejercicios propuestos

Obtn el sistema de ecuaciones que hay que resolver si se quiere aplicar


el mtodo de Rayleigh-Ritz dividiendo el intervalo [0, 1] en 4 subintervalos
iguales.

3. Obtn el mtodo de Rayleigh-Ritz para el problema



(a(x)u (x)) = f (x) , 0 < x < 1 ,

con las condiciones u(0) = 0, u(1) = 0.

173
Parte II

Ejercicios con Matlab


Captulo 7

Resolucin de sistemas de
ecuaciones lineales con Matlab

Vamos a aprender a resolver sistemas de ecuaciones lineales con Matlab utilizando


tanto las distintas instrucciones que dispone este programa como creando nuestras
propias funciones.

7.1 Introduccin

Vamos a centrarnos en la resolucin de sistemas de la forma

Ax = b,

siendo A una matriz cuadrada n n, y x y b vectores con n componentes.

Como se ha visto a lo largo del captulo 2, hay dos tipos de mtodos para obtener
una solucin numrica de un sistema de ecuaciones, los mtodos directos y los
mtodos iterativos. Los mtodos directos son, generalmente, variantes del mtodo
de Gauss y para utilizarlos es necesario conocer explcitamente los elementos de
la matriz. Los mtodos iterativos obtienen una aproximacin numrica tras un
nmero nito de iteraciones. Para utilizar estos mtodos es suciente conocer un
mtodo para realizar el producto de la matriz de coecientes por un vector.

177
Captulo 7. Resolucin de sistemas de ecuaciones lineales con Matlab

7.2 Mtodos directos

Los mtodos directos para la resolucin de ecuaciones estn implementados en el


ncleo de Matlab, de forma que resulten lo ms ecientes posibles.

La forma ms usual de resolver un sistema de ecuaciones en Matlab es haciendo


uso del operador \ como mostramos a continuacin. As, por ejemplo, para resolver
el sistema
x1 x2 + 3x4 = 0
2x1 + x2 x3 + x4 = 1
(7.1)
3x1 x2 x3 + 2x4 = 3
x1 + 2x2 + 3x3 x4 = 4
se introducen las instrucciones

A = [ 1, -1, 0, 3 ;
2, 1, -1, 1;
3, -1, -1, 2;
-1, 2, 3,-1];
b=[0;1;-3;4];
x=A\b

obteniendo

x =

-1.0000
2.0000
-0.0000
1.0000

por tanto, la solucin del sistema (7.1) es x = (1, 2, 0, 1)T .

El operador \ tiene implementados distintos algoritmos de forma que, cuando A


es cuadrada:

Si A es una matriz triangular usa el mtodo de sustitucin regresiva o pro-


gresiva para resolver el sistema.
Si A es simtrica trata de calcular una descomposicin de Cholesky de A.
Si A no es simtrica o la descomposicin de Cholesky falla, se usa un algo-
ritmo de Gauss con pivotacin parcial.
Si A es singular da un error.
178
7.2 Mtodos directos

7.2.1 Errores y nmero de condicin


Hay sistemas en los que un pequeo cambio en los coecientes produce un gran
cambio en la solucin. Estos sistemas se llaman mal condicionados.

Por ejemplo, si consideramos el sistema


x + y = 2
x + 1.0001y = 2.0001

Para obtener la solucin con Matlab escribimos

A=[1,1;1,1.0001];
b=[2;2.0001];
A\b

y obtenemos

ans =

1.0000
1.0000

es decir, su solucin exacta es x = 1, y = 1.

Si cambiamos un poco el trmino independiente, por ejemplo



x + y = 2
x + 1.0001y = 2.0002

Resolvemos el nuevo sistema con Matlab escribiendo

A=[1,1;1,1.0001];
b=[2;2.0002];
A\b

que nos proporciona la solucin

ans =

-0.0000
2.0000
179
Captulo 7. Resolucin de sistemas de ecuaciones lineales con Matlab

con lo que la solucin cambia a x = 0, y = 2. Esto indica que el sistema es muy


sensible a errores de redondeo. Esta sensibilidad la podemos medir con el nmero
de condicin de la matriz de coecientes A.

El nmero de condicin de una matriz se puede calcular con la funcin de Matlab


cond( ). Los resultados sern valores mayores o iguales a 1. Si el nmero de
condicin proporcionado es cercano a 1, la matriz estar bien condicionada, y si
se aleja estar mal condicionada.

En nuestro ejemplo

cond(A)

proporciona

ans =

4.0002e+004

Esta respuesta nos dice que pequeos errores o cambios en el sistema pueden
producir grandes errores en la solucin. Mientras que la matriz

A=[1,2;3,-1];
cond(A)

ans =

1.4561

est bien condicionada. Comprobmoslo resolviendo los sistemas cuya matriz de


coecientes es A y el vector de trminos independientes b y b1, respectivamente

format long
b=[3;1];
b1=[3.0001;1];
A\b
A\b1

ans =

0.714285714285714
1.142857142857143
180
7.2 Mtodos directos

ans =

0.714300000000000
1.142900000000000

Observamos que un pequeo cambio en los datos nos ha proporcionado prctica-


mente la misma solucin.

7.2.2 Factorizacin LU
Matlab nos proporciona la factorizacin LU de una matriz mediante la funcin
lu( ). Si escribimos

format short
A=magic(3);
[L,U]=lu(A)

obtenemos

L =

1.0000 0 0
0.3750 0.5441 1.0000
0.5000 1.0000 0

U =

8.0000 1.0000 6.0000


0 8.5000 -1.0000
0 0 5.2941

observamos que la matriz L obtenida no es triangular inferior. Esto signica que


Matlab ha aplicado pivotacin parcial en la obtencin de las matrices y en la
matriz L est incluida dicha permutacin. Se cumple LU = A, como podemos
comprobar

L*U
A

ans =
181
Captulo 7. Resolucin de sistemas de ecuaciones lineales con Matlab

8 1 6
3 5 7
4 9 2

A =

8 1 6
3 5 7
4 9 2

Pero esta descomposicin no nos permite resolver el sistema mediante dos sistemas
triangulares. Si hay permutaciones de las, y queremos L y U matrices triangular
inferior y superior, respectivamente, escribiremos

[L,U,P]=lu(A)

L =

1.0000 0 0
0.5000 1.0000 0
0.3750 0.5441 1.0000

U =

8.0000 1.0000 6.0000


0 8.5000 -1.0000
0 0 5.2941

P =

1 0 0
0 0 1
0 1 0

en este caso se cumple P A = LU , como podemos comprobar

P*A
L*U

182
7.2 Mtodos directos

ans =

8 1 6
4 9 2
3 5 7

ans =

8 1 6
4 9 2
3 5 7

Una vez tenemos la descomposicin, resolvemos por sustitucin progresiva el sis-


tema
Ly = P b
y la solucin del sistema original la obtenemos resolviendo por sustitucin regresiva
el sistema
Ux = y

Podemos resolver el sistema por sustitucin regresiva deniendo una funcin con
Matlab, por ejemplo, susreg.m,

function [x]=susreg(U,b)
n=length(b);
x=zeros(n,1);
for k=n:-1:1
x(k)=b(k)/U(k,k);
for i=1:k-1
b(i) = b(i)-x(k)*U(i,k);
end
end

Un ejemplo:

a=[1,2;0,1]
b=[1;1]
susreg(a,b)

a =

1 2
0 1
183
Captulo 7. Resolucin de sistemas de ecuaciones lineales con Matlab

b =

1
1

ans =

-1
1

De forma anloga se puede denir una funcin, que podemos llamar susprog.m
para resolver por sustitucin progresiva un sistema triangular inferior. Se propone
como ejercicio.

7.2.3 Factorizacin de Cholesky


Cuando la matriz A es simtrica y denida positiva admite una factorizacin de
Cholesky, esto es, una factorizacin

A = LLT = U T U .

La funcin de Matlab chol( ) realiza esta descomposicin en caso de ser posible


y nos proporciona una matriz triangular superior. As, si escribimos

A=pascal(7);
U=chol(A)

calculamos de descomposicin de Cholesky de una matriz de Pascal de dimensin 7,


que es simtrica y denida positiva, obteniendo

U =

1 1 1 1 1 1 1
0 1 2 3 4 5 6
0 0 1 3 6 10 15
0 0 0 1 4 10 20
0 0 0 0 1 5 15
0 0 0 0 0 1 6
0 0 0 0 0 0 1
184
7.2 Mtodos directos

Comprobamos la descomposicin,

A =

1 1 1 1 1 1 1
1 2 3 4 5 6 7
1 3 6 10 15 21 28
1 4 10 20 35 56 84
1 5 15 35 70 126 210
1 6 21 56 126 252 462
1 7 28 84 210 462 924

transpose(U)*U

ans =

1 1 1 1 1 1 1
1 2 3 4 5 6 7
1 3 6 10 15 21 28
1 4 10 20 35 56 84
1 5 15 35 70 126 210
1 6 21 56 126 252 462
1 7 28 84 210 462 924

como es un caso particular de descomposicin LU , procederamos a resolver prime-


ro el sistema triangular inferior por sustitucin progresiva y nalmente el triangular
superior por sustitucin regresiva.

En caso de no poder realizar la descomposicin de Cholesky, Matlab nos propor-


ciona un aviso

A=[1,2;-1,2]
chol(A)

A =

1 2
-1 2

??? Error using ==> chol


Matrix must be positive definite.
185
Captulo 7. Resolucin de sistemas de ecuaciones lineales con Matlab

7.3 Mtodos iterativos

Dado el sistema Ax = b consideramos la siguiente descomposicin de la matriz de


coecientes
A=DEF
donde

D la diagonal de A.
E la parte estrictamente triangular inferior de A.
F la parte estrictamente triangular superior de A.

Adems, consideraremos que los elementos de la diagonal de D son todos no nulos.

7.3.1 Mtodo de Jacobi


El mtodo de Jacobi en forma matricial se escribe como

Dxk = (E + F )xk1 + b, k = 1, 2, . . .

Una posible implementacin en Matlab del mtodo de Jacobi es la siguiente


funcin jacobi.m

function [x]=jacobi(A,b)
% esta funcion implementa el metodo de Jacobi basico

tol=1.e-5;
itmax=1000;

[n,n]=size(A);
x0=zeros(n,1);
it=0;
error=1000.0;
D=diag(diag(A));
D1=inv(D);

while it<=itmax & error >tol


it=it+1;
x=D1*(D-A)*x0+D1*b
verr=x-x0;
error=norm(verr)/norm(x);
186
7.3 Mtodos iterativos

x0=x;
end
x=x0;
disp(el numero de iteraciones es)
disp(it)
disp(el error es)
disp(error)

Por ejemplo, si escribimos

a=[4,1,0;1,4,1;0,1,4];
b=[-3;10;1];
jacobi(a,b)

obtenemos

el numero de iteraciones es
12

el error es
8.0334e-06

ans =

-1.5000
3.0000
-0.5000

7.3.2 Mtodo de Gauss-Seidel


Un mtodo de Gauss-Seidel en forma matricial es

(D E)xk = F xk1 + b

Teniendo en cuenta que la instruccin de Matlab tril(A) proporciona la parte


triangular inferior de la matriz A, y triu(A) la parte triangular superior, una
posible implementacin del mtodo de Gauss-Seidel es:

function [x]=gaussseidel(matriz,vector)
% esta rutina implementa el metodo de Gauss-Seidel basico

187
Captulo 7. Resolucin de sistemas de ecuaciones lineales con Matlab

tol=1.e-5;
itmax=1000;
[n,n]=size(matriz);
x0=zeros(n,1);
it=0;
error=1000.0;

% calculo de las matrices


D=diag(diag(matriz));
E=-(tril(matriz)-D);
F=-(triu(matriz)-D);

while it<=itmax & error >tol


it=it+1;
x=(D-E)\(F*x0+vector);
error=norm(x-x0)/ norm(x);
x0=x;
end
disp(el numero de iteraciones es)
disp(it)
disp(el error es)
disp(error)

Para el ejemplo anterior, escribiendo

a=[4,1,0;1,4,1;0,1,4];
b=[-3;10;1];
gaussseidel(a,b)

obtenemos

el numero de iteraciones es
7

el error es
5.5366e-06

ans =

-1.5000
3.0000
-0.5000
188
7.3 Mtodos iterativos

Observamos que el mtodo de Gauss-Seidel ha convergido con menos iteraciones


que el mtodo de Jacobi.

7.3.3 Mtodo SOR


Un mtodo SOR en forma matricial es

(D E)xk = (F + (1 )D) xk1 + b

con 0 < < 2.

Una posible implementacin en Matlab de este mtodo es:

function [x]=sor1(matriz,vector,w);
[n,n]=size(matriz);
tol=1.e-5;
itmax=300;
x0=zeros(n,1);
it=0;
error=1000.0;
% calculo de las matrices
D=diag(diag(matriz));
E=-(tril(matriz)-D);
F=-(triu(matriz)-D);

while it<=itmax & error >tol


it=it+1;
x=(D-w*E)\(w*F*x0+(1-w)*D*x0+w*vector);
error=norm(x-x0)/ norm(x);
x0=x;
end

disp(el numero de iteraciones es)


disp(it)

disp(el error es)


disp(error)

Para el ejemplo anterior, escribiendo

a=[4,1,0;1,4,1;0,1,4];
b=[-3;10;1];
sor1(a,b,1.1)

189
Captulo 7. Resolucin de sistemas de ecuaciones lineales con Matlab

obtenemos

el numero de iteraciones es
6

el error es
8.6727e-06

ans =

-1.5000
3.0000
-0.5000

Si cambiamos el valor de w, por ejemplo, hacemos

sor1(a,b,1.7)

el nmero de iteraciones necesario para obtener la solucin es 35.

Matlab dispone de funciones implementadas para la resolucin de sistemas de


ecuaciones lineales mediante mtodos iterativos como bicg, bicgstab, cgs, gmres,
lsqr, pcg, etc., pero se basan en mtodos ms complejos que los que hemos estu-
diado en la teora y sobrepasan las pretensiones del curso.

7.4 Ejercicios con Matlab

1. Adapta la funcin que hemos construido, susreg.m para que resuelva un


sistema por sustitucin progresiva. Llama susprog.m a la funcin construida.
2. Considera el siguiente sistema:

4 1 0 0 0 x1 1
1 4 1 0 0 x2 0

0 1 4 1 0 x3 = 0 .

0 0 1 4 1 x4 0
0 0 0 1 4 x5 0
Resulvelo utilizando la descomposicin LU y la de Cholesky de la matriz
del sistema.
Nota: tienes que utilizar las funciones susreg.m y susprog.m para resolver
los sistemas triangulares.
190
7.4 Ejercicios con Matlab

3. Implementa el algoritmo SSOR simtrico, que en forma matricial es:

(D E)xk1/2 = (F + (1 )D)xk1 + b,
(D F )xk = (E + (1 )D)xk1/2 + b.

Resuelve el ejercicio 2 con el mtodo SSOR con distintos valores 0 < < 2.

4. Una viga horizontal exible empotrada en un extremo A y libre en el extremo


B se considera que tiene cuatro grados de libertad traslacional u1 , . . . , u4 ,
donde ui se localiza a i/5 de la distancia de A a B. Si se aplica una carga
T
unitaria en u3 , el vector u = (u1 , u2 , u3 , u4 ) , satisface el sistema

Ku = r ,

donde la matriz de rigidez K y el vector de cargas r, vienen dadas por



5 4 1 0 0
4 6 4 1
K= , r= 0 ,
1 4 6 4 EI
0 1 4 5 0

la constante EI depende del material de la viga y de su geometra. Calcula


u cuando EI = 1.

5. La distribucin de temperatura en el estado estacionario de una placa plana


se puede aproximar en 9 puntos internos aplicando la ecuacin de Laplace
discretizada en cada punto. Si se mantienen los lados de una placa cuadrada
a temperaturas constantes de 0 C y 100 C, las temperaturas en los 9 puntos
se pueden obtener como la solucin del siguiente sistema

4T1 + T2 + T4 = 100
T1 4T2 + T3 + T5 = 100
T2 4T3 + T6 = 200
T1 4T4 + T5 + T7 = 0
T2 + T4 4T5 + T6 + T8 = 0
T3 + T5 4T6 + T9 = 100
T4 4T7 + T8 = 0
T5 + T7 4T8 + T9 = 0
T6 + T8 4T9 = 100

Obtn la temperatura en los distintos puntos de la placa y haz una grca


de la temperatura en la placa.

191
Captulo 7. Resolucin de sistemas de ecuaciones lineales con Matlab

6. Construye el sistema de ecuaciones que han de cumplir los coecientes de un


polinomio de tercer grado

y = c3 x3 + c2 x2 + c1 x + c0 ,

para que pase por los puntos (12, 8), (3, 27), (6, 64), (5, 125). Utiliza la funcin
cond( ) para obtener el nmero de condicin de la matriz del sistema.
Obtn la solucin del sistema y dibuja los puntos y el polinomio obtenido.

192
Captulo 8

Interpolacin y aproximacin de
funciones con Matlab

Vamos a ver cmo utilizar las distintas instrucciones que dispone Matlab para
la interpolacin resolviendo algunos ejemplos. Tambin crearemos nuestra propia
funcin para el clculo de diferencias divididas.

Consideremos un conjunto de pares de nmeros reales

(x0 , f0 ), (x1 , f1 ), . . . (xn , fn ),

que frecuentemente vendrn expresados en una tabla de valores,

x0 x1 xn
f0 f1 fn

La interpolacin trata de resolver uno o ambos de los siguientes problemas:

Encontrar una funcin f (x) tal que f (xi ) = fi , i = 0, 1, . . . , n.

Calcular f (x) para un punto x = xi , i = 0, 1, . . . , n.

Los tipos de interpolacin que trabajaremos son la polinmica e interpolacin por


splines. Por ello, empezamos viendo algunas consideraciones sobre polinomios en
Matlab.

193
Captulo 8. Interpolacin y aproximacin de funciones con Matlab

8.1 Polinomios en Matlab

Un polinomio de grado n se representa en Matlab mediante un vector de longitud


n + 1 cuyos elementos son los coecientes del polinomio ordenados en potencias
de mayor a menor grado. Por ejemplo, el polinomio

p(x) = 4x4 20x2 + 2x

se representa en Matlab por el vector

p=[4,0,-20,2,0];

Para operar con polinomios en Matlab hay que tener en cuenta que estos son
vectores. As, para sumar o restar polinomios tendremos que representarlos como
vectores de la misma longitud, rellenando con los ceros necesarios por la izquierda
cuando haga falta. Si consideramos el polinomio

q(x) = 3x3 x ,

y queremos calcular p(x) + q(x), escribimos

q=[0,3,0,-1,0];
p+q

obteniendo el resultado

ans =
4 3 -20 1 0

que corresponde al polinomio 4x4 + 3x3 20x2 + x.

Si denimos

q1=[3,0,-1,0];
p+q1

obtenemos el resultado

ans =
Error using ==> plus
Matrix dimensions must agree.
194
8.1 Polinomios en Matlab

Matlab nos advierte que los vectores utilizados no corresponden a polinomios del
mismo grado.

El producto de polinomios se realiza con la instruccin conv( , ). As si hacemos

conv(p,q)
conv(p,q1)

obtenemos

ans =
0 12 0 -64 6 20 -2 0 0
ans =
12 0 -64 6 20 -2 0 0

Para evaluar un polinomio en un punto usaremos el comando polyval( ). As, por


ejemplo, si queremos calcular p(2), siendo p(x) el polinomio denido anteriormente,
escribimos

polyval(p,2)

obteniendo

ans =
-12

La instruccin anterior nos permite representar un polinomio en cierto intervalo,


por ejemplo,

x=-4:0.01:4;
y=polyval(p,x);
plot(x,y)

obteniendo la Figura 8.1.

Las races de un polinomio se obtienen mediante la instruccin roots( ), por


ejemplo,

raices=roots(p)

nos da el resultado
195
Captulo 8. Interpolacin y aproximacin de funciones con Matlab

800

700

600

500

400

300

200

100

100
4 3 2 1 0 1 2 3 4

Figura 8.1: Grca del polinomio p(x) = 4x4 20x2 + 2x

raices =
0
-2.2845
2.1843
0.1002

que son las races del polinomio p(x). Podemos reconstruir un polinomio a partir
de sus races con la instruccin

poly(raices)

obteniendo

ans =
1.0000 -0.0000 -5.0000 0.5000 0

Y si queremos obtener el polinomio inicial, p(x), como el coeciente que acompaa


a la potencia de mayor grado es 4, escribimos

4*poly(raices)
196
8.2 Interpolacin polinmica

obteniendo

ans =
4.0000 -0.0000 -20.0000 2.0000 0

8.2 Interpolacin polinmica

Para interpolar de forma polinmica podemos utilizar las funciones de Matlab


interp1( ) y polyfit( ). Estudiaremos su utilizacin y distintas opciones con
un ejemplo. Los valores de la funcin sen(x) los conocemos para mltiplos de /3.
Haciendo

x=0:pi/3:3*pi;
y=sin(x)

se obtienen los valores

y =
Columns 1 through 6
0 0.8660 0.8660 0.0000 -0.8660 -0.8660
Columns 7 through 10
-0.0000 0.8660 0.8660 0.0000

Podemos representar los valores anteriores mediante la instruccin

plot(x,y,o)

obteniendo la Figura 8.2.

Veamos cmo obtener aproximaciones a la funcin sen(x) a partir de los datos


dados anteriormente.

La sintaxis de la funcin interp1( ) es yi=interp1(x,y,xi,metodo) donde x


es el vector de abcisas de la tabla cuyos valores estn ordenados de forma creciente
o decreciente, y son los correspondientes valores de las ordenadas, xi son los valores
de las abcisas donde se quieren obtener las interpolaciones, yi nos proporcionan
los valores interpolados para los xi y metodo es un argumento opcional que puede
tomar los siguientes valores:

197
Captulo 8. Interpolacin y aproximacin de funciones con Matlab

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
0 2 4 6 8 10

Figura 8.2: Grca de los valores de la funcin sen(x).

nearest
linear
spline
cubic o pchip

Vamos a calcular valores aproximados de la funcin sen(x) en las abcisas xi=pi/6:pi/3:3*pi


a partir de los valores indicados anteriormente,

Usando nearest, hacemos

yn=interp1(x,y,xi,nearest);
plot(x,y,o,xi,yn,*)

obteniendo la Figura 8.3.


Como podemos apreciar, a cada punto x se le asigna el valor de la ordenada
soporte correspondiente a la abcisa soporte ms prxima. Esto se puede ver
mejor si interpolamos ms puntos,

xi2=0:0.01:3*pi;
yn2=interp1(x,y,xi2,nearest);
plot(x,y,o,xi2,yn2)
198
8.2 Interpolacin polinmica

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
0 2 4 6 8 10

Figura 8.3: Interpolacin del sen(x) usando la opcin nearest.

que da como resultado la Figura 8.4.

Usando linear, hacemos

yl=interp1(x,y,xi,linear);
plot(x,y,o,xi,yl,*)

obteniendo la Figura 8.5. En este caso Matlab construye la poligonal que


pasa por los puntos soporte.
Usando spline, hacemos

ys2=interp1(x,y,xi2,spline);
plot(x,y,o,xi2,ys2)

y obtenemos la Figura 8.6. En este caso la funcin interpolante es un poli-


nomio a trozos de grado 3. Se eligen de forma que la funcin sea de clase
C 2 , en los puntos soporte. Adems, las dos condiciones adicionales que se
necesitan se obtienen exigiendo que el primer y segundo polinomio coincidan
as como el penltimo y el ltimo. Este spline es conocido como "no-nudo".
Matlab puede calcular otro tipo de splines con la instruccin spline( ),
como veremos ms adelante.

199
Captulo 8. Interpolacin y aproximacin de funciones con Matlab

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
0 2 4 6 8 10

Figura 8.4: Interpolacin del sen(x) usando la opcin nearest con ms puntos.

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
0 2 4 6 8 10

Figura 8.5: Interpolacin del sen(x) usando la opcin linear.

200
8.2 Interpolacin polinmica

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
0 2 4 6 8 10

Figura 8.6: Interpolacin del sen(x) usando la opcin spline.

Usando cubic o pchip, se usan las instrucciones

yc2=interp1(x,y,xi2,cubic);
plot(x,y,o,xi2,yc2)

obteniendo la Figura 8.7. Podemos comprobar que se obtiene el mismo re-


sultado con el mtodo pchip. Si no denimos el mtodo a utilizar se usa la
opcin linear.

Matlab dispone de la orden polyfit( ) para resolver el problema de ajustar


datos a una curva por el mtodo de mnimos cuadrados. Tambin podemos utilizar
dicha instruccin para obtener el polinomio interpolador de grado menor o igual
que n que interpola n + 1 datos. Para ello, le requeriremos un ajuste exacto. As,
la instruccin

pol=polyfit(x,y,length(x)-1)

nos proporcionar el polinomio interpolador que pasa por los n+1 datos de abcisas
x y ordenadas y.

201
Captulo 8. Interpolacin y aproximacin de funciones con Matlab

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
0 2 4 6 8 10

Figura 8.7: Interpolacin del sen(x) usando la opcin cubic.

En nuestro ejemplo, si hacemos

pol=polyfit(x,y,length(x)-1)

obtenemos

Warning: Polynomial is badly conditioned. Add points with distinct X


values, reduce the degree of the polynomial, or try
centering and scaling as described in HELP POLYFIT.
pol =
Columns 1 through 6
0.0000 -0.0000 0.0006 -0.0080 0.0516 -0.1359
Columns 7 through 10
0.0801 -0.2362 1.0899 -0.0000

que nos proporciona el polinomio interpolador. Para calcular el polinomio de in-


terpolacin en las abcisas que queremos interpolar y mostrar el resultado grca-
mente, escribimos

yp=polyval(pol,xi);
plot(x,y,o,xi,yp,*)
202
8.2 Interpolacin polinmica

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
0 2 4 6 8 10

Figura 8.8: Interpolacin del sen(x) usando polyfit( ).

y obtenemos la grca mostrada en la Figura 8.8.

Podemos evitar los problemas de mal condicionamiento utilizando unas abcisas


desplazadas, normalizndolas para que su desviacin tpica sea la unidad. Esto lo
podemos conseguir con la siguiente instruccin

[p,s,mu]=polyfit(x,y,length(x)-1)

que da los resultados

p = Columns 1 through 6
0.0000 -0.1517 -0.0000 1.2739 0.0000 -4.1391
Columns 7 through 10
-0.0000 5.0144 0.0000 -0.9997
s =
R: [10x10 double]
df: 0
normr: 5.8620e-015

mu =
4.7124
3.1705
203
Captulo 8. Interpolacin y aproximacin de funciones con Matlab

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

1
0 2 4 6 8 10

Figura 8.9: Interpolacin del sen(x) usando polyfit( ) mejorando el mal condiciona-
miento.

El polinomio p que se obtiene est referido a la nueva variable u = (x x)/, lo


que ha de tenerse en cuenta para evaluarlo respecto a los datos iniciales. Para ello,
escribimos

ug=(xi-mu(1))/mu(2);
yg=polyval(p,ug);
plot(x,y,o,xi,yg,*)

obteniendo la Figura 8.9.

Vamos a comparar los resultados obtenidos calculando los errores cometidos por
los distintos mtodos. Empezamos calculando los valores exactos

yexact=sin(xi);

A continuacin calculamos el error cometido en cada uno de los puntos al realizar


la interpolacin con la opcin nearest

errorn=yexact-yn;

204
8.2 Interpolacin polinmica

Para tener una idea del error calculamos el mximo error cometido en todos los
puntos de xi con la orden

norm(errorn,inf)

obteniendo

ans =
0.5000

Una medida que recoge todos los errores se puede obtener calculando la norma
eucldea del vector error,

norm(errorn)

ans =
1.0439

De forma anloga obtenemos ambos errores para los distintos tipos de interpolacin
que hemos utilizado.

Podemos resumir los resultados obtenidos en la siguiente tabla

Mtodo Mximo error en un punto Norma eucldea del error


nearest 0.5000 1.0439
linear 0.1340 0.2842
spline 0.0275 0.0428
cubic 0.1340 0.2808
polinomio int. 0.0090 0.0131

En este caso el menor error se comete con el polinomio interpolador. Pero esto no
tiene porqu ser siempre as. Dependiendo del tipo de datos ser ms adecuado
un tipo de interpolacin u otro. Como se ha visto en la teora, los polinomios de
grado alto suelen dar problemas si la funcin no se comporta como un polinomio,
esto se puede observar claramente con la funcin de Runge.

205
Captulo 8. Interpolacin y aproximacin de funciones con Matlab

1.4
nodos
1.2 nonudo
primera derivada

0.8

0.6

0.4

0.2

0
0 0.5 1 1.5 2 2.5 3

Figura 8.10: Interpolacin del sen(x) usando diferentes splines.

8.3 Interpolacin mediante splines

Con la orden spline( ) podemos calcular, adems de los splines "no-nudo"que


nos permite calcular la funcin interp1( ) , el spline cuya primera derivada en
los extremos del intervalo de interpolacin tiene valores conocidos.

Si consideramos el ejemplo que hemos estado trabajando, sabemos que sen (0) = 1,
sen (3) = 1. Vamos a calcular ys1 que son los valores interpolados utilizando
una spline "no-nudo", e ys2 los valores obtenidos incluyendo el valor de las pri-
meras derivadas en los extremos. Para ello, hacemos

x=[0,0.5,1,3];
y=sin(x);
xi=0:.1:3;
ys1=spline(x,y,xi);
y2=[1,y,-1];
ys2=spline(x,y2,xi);
plot(x,y,o,xi,ys1,r,xi,ys2,b)
legend(nodos,no-nudo,primera derivada)

obteniendo la Figura 8.10.

206
8.4 Diferencias divididas

La instruccin spline( ) puede usarse con slo dos argumentos. En ese caso el
resultado es una estructura con toda la informacin sobre el spline. La intruccin

ys3=spline(x,y)

da el resultado

ys3 =
form: pp
breaks: [0 0.5000 1 3]
coefs: [3x4 double]
pieces: 3
order: 4
dim: 1

que nos dice que se trata de un polinomio a trozos (pp: piecewise polynomial), de
los puntos donde cambia el polinomio, el tamao de la matriz que almacena los
coecientes, el nmero de polinomios, el nmero de coecientes de cada polinomio
y la dimensin (una variable).

8.4 Diferencias divididas

Podemos crear una funcin para calcular las diferencias divididas, que llamaremos
difdiv.m y otra funcin para que calcule la interpolacin en un punto utilizando
dichas diferencias divididas, que llamaremos polynew.m. Por ejemplo, la funcin
difdiv.m se puede denir de la siguiente forma,

function D=difdiv(x,y)
% Calcula las diferencias divididas para los puntos soporte (x,y)
% El resultado es una matriz con NaNs donde no corresponde que
% se calcule nada
[m,n]=size(x);
if m==1 x=x; end
[m,n]=size(y);
if m==1 y=y; end
[m,n]=size(x);
[m1,n1]=size(y);
if m~=m1 error(Error en los datos), end
if n~=1 error(Error en los datos), end
if n1~=1 error(Error en los datos), end
clear m1 n1
D=NaN*ones(m);
207
Captulo 8. Interpolacin y aproximacin de funciones con Matlab

D(:,1)=y;
for j=2:m
for i=j:m
D(i,j)=(D(i,j-1)-D(i-1,j-1))/(x(i)-x(i-j+1));
end
end

y la funcin polynew.m

function yi=polynew(D,x,xi)
[m,~]=size(D);
yi=D(end,end);
for k=1:m-1
yi=yi*(xi-x(m-k))+D(m-k,m-k);
end

Evaluemos el polinomio interpolador y el polinomio obtenido con diferencias divi-


didas en la abcisa 2.1

pol=polyfit(x,y,length(x)-1);
polyval(pol,2.1)
D=difdiv(x,y)
polynew(D,x,2.1)

obteniendo los resultados

ans =
0.9846
D =
0 NaN NaN NaN
0.4794 0.9589 NaN NaN
0.8415 0.7241 -0.2348 NaN
0.1411 -0.3502 -0.4297 -0.0650
ans =
0.9846

que tambin muestran la tabla de diferencias divididas.

208
8.5 Ejercicios con Matlab

8.5 Ejercicios con Matlab

1. El primer elemento de la estacin orbital internacional inclua el sistema


de manipulacin remota canadiense: Canadian Mobile Servicing Center. Los
sistemas de manipulacin remota utilizan un avanzado sistema de control
que gua un brazo manipulador hasta posiciones predeterminadas. Uno de
los requisitos de dicho sistema de control es el diseo de una trayectoria para
que el brazo se mueva de un sitio a otro de manera que se eviten movimientos
bruscos que podran causar que se desprendan los objetos transportados o
se dae el propio brazo robtico.
Supongamos que tenemos un brazo robtico y tenemos almacenados en una
tabla algunos puntos de la trayectoria del brazo. Dichos puntos estn orde-
nados para que el brazo se mueva hasta su posicin para coger un objeto
y luego vuelva a la posicin original. Supondremos adems que los puntos
intermedios incluidos en la trayectoria tratan de evitar choques del brazo o
bien guiarlo hacia sensores que recogen informacin. As, cada punto tendr
tres datos asociados: las coordenadas x e y de la posicin del brazo, y un
tercer dato que denotaremos accin, codicado del siguiente modo

Accin Signicado
0 posicin de partida
1 posicin intermedia
2 posicin de coger objeto
3 posicin de soltar objeto

El problema consiste en encontrar una curva suave mediante interpolacin


de manera que sirva de gua para el brazo robtico, partiendo de un punto
determinado, se mueva a una posicin concreta para coger un objeto, lo
deje en otra posicin y vuelva al punto de partida. Estas posiciones y otras
intermedias las proporcionamos en la siguiente tabla:

x y Accin
0 0 0
2 4 1
6 4 1
7 6 2
12 7 1
15 1 3
8 1 1
4 2 1
0 0 0

Representa los puntos anteriores unindolos mediante rectas. Los movimien-


tos obtenidos seran bruscos. Si queremos redenir la trayectoria necesitamos
209
Captulo 8. Interpolacin y aproximacin de funciones con Matlab

al menos denir dos trozos, uno para la ida y otro para la vuelta. Dene estas
dos trayectorias y dibuja las distintas trayectorias que se obtienen al aplicar
los distintos tipos de interpolacin que sabes realizar con Matlab.
Divide ahora la trayectoria de ida en dos: la primera desde el inicio hasta
el objeto a recoger y otra desde que se recoge el objeto hasta que se deja.
Aplica las distintas opciones de interpolacin y representa las trayectorias
obtenidas. Compara los resultados obtenidos.

2. En la siguiente tabla mostramos algunos valores tabulados de la funcin de


error, erf(x)

x 0.15 0.27 0.76 0.89 1.07 2.11


erf(x) 0.1680 0.2974 0.7175 0.7918 0.8698 0.9972

a) Construye un spline cbico no-nodo que aproxime la funcin de error.


Representa grcamente dicho spline, junto con los datos tabulados.
b) Compara las aproximaciones obtenidas en x = 0.33, x = 0.92 y x = 2.05
con los valores que Matlab proporciona con la instruccin erf( ).
c) Mejoran los resultados si utilizamos otro tipo de spline?

3. Interpola la funcin
1
f (x) = ,
1 + x2
de dos modos, primero un conjunto de puntos xn = 5 + n, yn = f (xn )
con n = 0, 1, 2, . . . , 10, y luego utilizando otro conjunto de puntos, xn =
5 cos(n/10), yn = f (xn ) con n = 0, 1, 2, . . . , 10. Utiliza un polinomio de
grado 10 para la interpolacin de la funcin. Realiza una grca con las dos
interpolaciones y los valores de la funcin.

210
Captulo 9

Derivacin e integracin con


Matlab

9.1 Derivacin con Matlab

Una primera aproximacin de la derivada de una funcin en un punto se puede


calcular con el cociente incremental
f (t + h) f (t)
f  (t) .
h
Se va a usar este tipo de aproximacin para estimar la derivada de una funcin a
partir de una tabla de nmeros. Consideremos la funcin f (t) = 4 sen(t). Con las
instrucciones

func = @(t)4.*sin(t);
dfunc = @(t)4.*cos(t);
tt = linspace(0,pi,100);
yy = func(tt);
dyy = dfunc(tt);
plotrange = [0 4 -5 5];
grid on;
axis(plotrange);
plot(tt,yy,k,tt,dyy,r--);
legend(funcion,derivada)

se obtiene la grca de la funcin y su derivada, que se muestran en la Figura 9.1.

211
Captulo 9. Derivacin e integracin con Matlab

5
funcion
4 derivada

5
0 0.5 1 1.5 2 2.5 3 3.5 4

Figura 9.1: Funcin f (t) = 4 sen(t) y su derivada f  (t) = 4 cos(t).

Supongamos que de esta funcin se conocen los valores de la funcin que se recogen
en la siguiente tabla junto con los valores de la derivada en esos puntos.

t 0 1.0472 2.0944 3.1416


f (t) 0 3.4641 3.4641 0.0000
f  (t) 4.0 2.0 -2.0 -4.0

La instruccin y=diff(t) de Matlab para los elementos de un vector t1 , t2 , . . . tn


devuelve otro vector cuyas componentes son yi = ti+1 ti . Haciendo uso de esta
funcin podemos escribir

func = @(t)4.*sin(t);
np = 4;
t = linspace(0,pi,np);
y=func(t);
dydt = diff(y)./diff(t);
tt = t(1:end-1);
plot(tt,dydt,b-o); % hacia atras
hold on
grid on
tt = t(2:end); % hacia delante
plot(tt,dydt,g-s)
tt = t(1:end-1) + diff(t)./2; % central
212
9.1 Derivacin con Matlab

plot(tt,dydt,k-*);
legend(dy/dt,...
dy/dt (delante),dy/dt (atras),dy/dt (central));

obteniendo las aproximaciones de la derivada que se recogen en la siguiente tabla.

Aproximacin hacia delante


t 0 1.0472 2.0944
f  (t) 3.3080 0.0000 -3.3080
Aproximacin hacia detrs
t 1.0472 2.0944 3.1416
f  (t) 3.3080 0.0000 -3.3080
Aproximacin del punto medio
t 0.5236 1.5708 2.6180
f  (t) 3.3080 0.0000 -3.3080

Estos resultados se resumen en la grca mostrada en la Figura 9.2.








 


 


 



        

Figura 9.2: Funcin derivada f  (t) = 4 cos(t) y sus aproximaciones.

Se puede estimar la derivada de la funcin en los puntos centrales utilizando la


aproximacin centrada
fi+1 fi1
f  (ti ) .
xi+1 xi1

213
Captulo 9. Derivacin e integracin con Matlab

Podemos implementar este esquema para los puntos centrales haciendo

vec=[];
for i=2:length(t)-1;
fp(i)= (y(i+1) -y(i-1))/(t(i+1) - t(i-1));
vec=[vec,[t(i);fp(i)]];
end
vec

y se obtiene el resultado

t 1.0472 2.0944
f  (t) 1.6540 -1.6540

Hemos de tener en cuenta que la diferenciacin numrica es muy sensible a po-


sibles errores en los datos. Para poner de maniesto esto consideremos los datos
correspondiente a una funcin con cierto ruido

t 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1


f (t) -0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2

Podemos calcular la derivada de la funcin mediante las instrucciones

x = 0:0.1:1;
y = [-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
x_FD = x(1:end-1);
y_FD = diff(y)./diff(x);
plot(x,y,-s,x_FD,y_FD,--o)
legend(funcion,derivada)

obteniendo la grca que se muestra en la Figura 9.3.

Se observa que la derivada de la funcin tiene un mal comportamiento, para re-


solver este problema se suele suavizar la funcin mediante alguna tcnica. Una
posibilidad es ajustar la funcin mediante un polinomio de segundo grado y cal-
cular la derivada derivando el polinomio. Podemos introducir las instrucciones

a = polyfit(x,y,2);
a_deriv = polyder(a);
y_d = polyval(a_deriv,X_FD);
plot(x_FD,y_FD,--o,X_FD,y_d,.*)
legend(Con ruido,ajuste)
214
9.1 Derivacin con Matlab

30
funcion
derivada
25

20

15

10

5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Figura 9.3: Funcin con ruido y su derivada.

obteniendo el resultado que se muestra en la Figura 9.4, donde se observa que el


compartamiento de la derivada mejora.
30
Con ruido
ajuste
25

20

15

10

5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

Figura 9.4: Clculo de la derivada suavizando la funcin.

215
Captulo 9. Derivacin e integracin con Matlab

9.2 Integracin con Matlab

El Matlab dispone de una funcin que permite obtener integrales simblicamente.


Supongamos que se quiere obtener la integral
"
dx
.
(x + 3)(x 1)(x2 + 1)
Primero se declara la variable x como una variable simblica mediante la instruc-
cin

syms x

y, posteriormente se hace uso de la funcin int( )

int(x/(x+3)/(x-1)/(x^2+1))

obteniendo el resultado
   
1 3 i 1 i 1
log(x 1) + log(x + 3) + log(x + i) + log(x i) .
8 40 20 10 20 10

Usando la funcin int( ), se pueden calcular algunas integrales denidas. As, si


queremos calcular " 5
x dx
, (9.1)
2 (x + 3)(x 1)(x + 1)
2

podemos escribir

syms x res
res=int(x/(x+3)/(x-1)/(x^2+1),2,5);
vpa(res,15)

obteniendo el resultado

0.0702964096897709

Una de las funciones de las que dispone Matlab para aproximar integrales de-
nidas es las funcin quad( ). Para utilizar esta funcin, primero hemos de denir
el integrando. Por ejemplo para calcular la integral (9.1), podemos escribir

clear x
f1=inline(x./((x+3).*(x-1).*(x.^2+1)))
Q=quad(f1,2,5)
216
9.2 Integracin con Matlab

obteniendo el resultado

0.070296459629483

Otra forma de denir el integrando y calcular la integral es

f2=@(x)x./((x+3).*(x-1).*(x.^2+1));
Q=quad(f2,2,5)

o bien, se construye una funcin

function y=mifunc(x)
y=x./((x+3).*(x-1).*(x.^2+1));

y luego se calcula la integral

Q=quad(@mifunc,2,5)

Se puede cambiar la precisin del clculo de la integral usando un argumento ms


en la funcin quad( ), as, podemos escribir

Q=quad(@mifunc,2,5,1e-10)

obteniendo el resultado

0.070296409691589

El siguiente programa implementa la Regla del Trapecio

function s=trapecio(f,a,b,M)
% Input - f es el integrando (es una cadena f)
% - a and b son los limites inferior y superior
% - M es el numero de subintervalos
%Output - es el valor de la integral

h=(b-a)/M;
s=0;
for k=1:(M-1)
x=a+h*k;
s=s+feval(f,x);
end
s=h*(feval(f,a)+feval(f,b))/2+h*s;
217
Captulo 9. Derivacin e integracin con Matlab

Podemos estimar el valor de la integral (9.1) mediante la Regla del Trapecio uti-
lizando distinto nmero de subintervalos. Introduciendo las instrucciones

format long
s=trapecio(mifunc,2,5,10)
s=trapecio(mifunc,2,5,40)
s=trapecio(mifunc,2,5,80)
s=trapecio(mifunc,2,5,120)

obtenemos los resultados

0.071162694853645
0.070351048850790
0.070310075925561
0.070302484104059

El siguiente programa implementa la Regla de Simpson

function s=simpson(f,a,b,M)
% Input - f es el integrando (es una cadena f)
% - a and b son los limites inferior y superior
% - M es el numero de subintervalos
%Output - es el valor de la integral

h=(b-a)/(2*M);
s1=0;
s2=0;
for k=1:M
x=a+h*(2*k-1);
s1=s1+feval(f,x);
end
for k=1:(M-1)
x=a+h*2*k;
s2=s2+feval(f,x);
end
s=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;

Para estimar el valor de la integral (9.1) utilizando la Regla de Simpson, se intro-


ducen las instrucciones

format long
s=simpson(mifunc,2,5,10)
218
9.3 Ejercicios con Matlab

s=simpson(mifunc,2,5,40)
s=simpson(mifunc,2,5,80)
s=simpson(mifunc,2,5,120)

y se obtienen los resultados

0.070298512021709
0.070296418283818
0.070296410228200
0.070296409796175

Matlab adems dispone de una funcin llamada trapz( ), que dados dos vectores
x e y, nos permite estimar el valor de la integral
" xn
y(x) dx .
x1

As la funcin trapz( ) utiliza el mtodo de los trapecios basado en la divisin


utilizada para denir el vector x. De este modo, si queremos calcular
"
2
sen(x) dx ,
0

podemos escribir, por ejemplo,

x=0:pi/10:pi/2;
y=sin(x);
integral=trapz(x,y)

9.3 Ejercicios con Matlab

1. Dada la funcin

f (x) = 5 cos(10x) + x3 2x2 6x + 10,

evala la funcin en los puntos, x = 0, 0.5, 1, . . . , 10 y utilizando los valores


de la funcin en estos puntos estima distintas aproximaciones de la derivada
de f (x) y compara los valores obtenidos con la derivada analtica. Repite los
clculos usando un paso x = 0.01.

219
Captulo 9. Derivacin e integracin con Matlab

2. La distancia D = D(t) viajada por un objeto viene dada en la siguiente tabla

t D(t)
8.0 17.453
9.0 21.460
10.0 25.752
11.0 30.301
12.0 35.084

Encuentra estimaciones para la velocidad del objeto.


3. La altura q(t) en el tiempo t en un depsito cilndrico de radio R = 1m
con un agujero circular de radio r = 0.1m en el fondo se ha medido cada 5s
obtenindose los siguientes valores
t 0 5 10 15 20
q(t) 0.6350 0.5336 0.4410 0.3572 0.2822

Se quiere obtener una estimacin de la velocidad q  (t) del uido. Compara


esta estimacin con la ley de Torricelli
r !2 *
q  (t) = 2gq(t),
R
donde g es la aceleracin de la gravedad y = 0.6 es un factor de correccin.
Obtn el polinomio interpolador asociado a los puntos de la tabla y calcula
la derivada, q  (t), derivando el polinomio obtenido.
4. Dada la funcin
f (x) = x10 10x8 + 33x6 40x4 16x2 ,
dibuja la funcin en el intervalo x [2, 2]. Obtn el valor exacto de
" 2
f (x) dx
2

y compara las aproximaciones numricas que se obtienen con la Regla del


Trapecio, la Regla de Simpson y la funcin quad( ).
5. Se tiene que construir una hoja de techo corrugado usando una mquina que
comprime una hoja plana de aluminio convirtindola en una cuya seccin
transversal tiene la forma de una onda senoidal. Supongamos que se necesita
una hoja corrugada de 50 cm de longitud y que cada ondulacin tiene una
altura de 1 cm respecto de la lnea horizontal y un periodo de 2 cm. El
problema de encontrar la longitud de la hoja inicial viene dado por la integral
" 50 *
L= 1 + cos2 (x) dx .
0

Estima esta longitud.


220
9.3 Ejercicios con Matlab

6. Calcula aproximadamente el valor de


"
cos(2x)
dx,
0 cosh(x)

y compralo con el valor exacto, 2 sech().

7. Es conocido que "


1 x2 1
e 2 dx = .
2 0 2
Comprueba el resultado utilizando la Regla de los trapecios, la Regla de
Simpson y la funcin quad( ).
8. El volumen V de un gas en funcin de la presin P ejercida por un pistn
viene dada en la tabla siguiente
P 60 80 100 120 140 160 180
V 80.0 69.2 60.0 52.0 45.0 38.6 32.5
Calcula el trabajo necesario para disminuir V de 80 a 32.5,
" 80
W = P dV .
32.5

9. La potencia P proporcionada por las ruedas de un coche como funcin de la


velocidad v viene dada en la siguiente tabla
v (m/s) 0 1.0 1.8 2.4 3.5 4.4 5.1 6.0
P (kW) 0 4.7 12.2 19.0 31.8 40.1 43.8 43.2
Teniendo en cuenta que la potencia se puede expresar P = F v, usando la
Ley de Newton, se tiene que el tiempo necesario para que la velocidad del
coche pase de 1 m/s a 6 m/s viene dado por
" 6
v
t=m dv .
1 P

Estima este tiempo si se supone que el coche tiene una masa de m = 2000 kg.
10. Interpola la funcin
1
f (x) = ,
1 + x2
de dos modos, primero un conjunto de puntos xn = 5 + n, yn = f (xn )
con n = 0, 1, 2, . . . , 10, y luego utilizando otro conjunto de puntos, xn =
5 cos(n/10), yn = f (xn ) con n = 0, 1, 2, . . . , 10. Utiliza un polinomio de
grado 10 para la interpolacin de la funcin. Con los dos polinomios obtenidos
estima el valor de " 5
1
dx .
5 1 + x2
221
Captulo 10

Resolucin de problemas de valor


inicial con Matlab

10.1 Introduccin

En este captulo mostraremos cmo resolver problemas de valor inicial utilizando


las funciones que tiene implementadas Matlab. As mismo, construiremos algunas
funciones que implementen algunos de los mtodos numricos para obtener un valor
aproximado de la solucin y(t) del problema de valor inicial

y  = f (t, y),
(10.1)
y(t0 ) = y0 ,

con y Rp .

Matlab dispone de funciones para resolver ecuaciones diferenciales. Para ello


debemos denir el campo vectorial (la funcin f (t, y)) en un chero aparte. Algunos
de los comandos ms utilizados en Matlab son:

ode23: Utiliza una combinacin de mtodos Runge-Kutta de rdenes 2 y 3


explcitos y paso de integracin variable.

ode45: Utiliza una combinacin de mtodos Runge-Kutta de rdenes 4 y 5


explcitos y paso de integracin variable.

ode113: Utiliza mtodos multipaso de rdenes 1 a 13 explcitos y paso de


integracin variable.

223
Captulo 10. Resolucin de problemas de valor inicial con Matlab

Ilustramos su uso con un ejemplo.

Ejemplo 10.1 Considerar el problema de Lotka-Volterra (4.26)

c = c(1 z), (10.2)


z = z(c 2),

suponiendo que inicialmente las poblaciones son c(0) = 4, z(0) = 1 y obtener la


solucin numrica c(t), z(t) para t [0, 100].

Solucin:
Reescribimos el sistema

y1 = y1 (1 y2 )
y2 = y2 (y1 2), (10.3)

con (y1 , y2 ) = (c, z), (y1 (0), y2 (0)) = (4, 1). Para resolver este problema utilizando
un mtodo numrico, en primer lugar construiremos un chero que llamaremos
fVolt.m, que contiene a la funcin f , y al que llamaremos cada vez que necesite-
mos evaluar la parte derecha de la ecuacin diferencial (o sistema de ecuaciones
diferenciales). Este chero puede ser, por ejemplo:

% fVolt.m
% Modelo de Lotka-Volterra para el sistema depredador-presa
function Ydot = fVolt(t, Y)
% Parte derecha de la ecuacin diferencial
Yd( 1) = Y(1)*(1-Y(2));
Yd( 2) = Y(2)*(Y(1)-2);
Ydot = [Yd(1) ; Yd(2)];

En un nuevo chero escribimos:

% y = f(t,y)
% Mtodo ode23
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Tiempo inicial, final
t0=0; tf=100;
% Condiciones iniciales
y0 = [4 ; 1];
% Options
options = odeset(AbsTol,1e-8,RelTol,1e-5);
[t,y] = ode23(fVolt,[t0,tf],y0,options);

224
10.1 Introduccin

En este chero se integra en el intervalo t [0, 100] y se almacena la solucin en


una matriz de tres columnas en la que en la primera columna se encuentran los
instantes en los que se obtiene las soluciones numricas, en la segunda y tercera
columnas se encuentran los valores obtenidos para y1 e y2 en esos instantes. Hemos
utilizado el mtodo ode23 pero podemos utilizar otros como el ode45 o el ode113.
En options podemos introducir una lista de opciones que dispone Matlab. En el
ejemplo hemos elegido el error absoluto y el relativo. Si los reducimos en un orden
de magnitud debemos esperar que los errores se reduzcan aproximadamente en
esta magnitud.

Podemos dibujar la solucin obtenida junto con el campo de vectores para ver
mejor como es la solucin del problema aadiendo los siguientes comandos

[y1,y2] = meshgrid(0:.2:4.5,0:.2:3);
Dy1Dt = y1.*(1-y2);
Dy2Dt = y2.*(y1-2);
quiver(y1,y2,Dy1Dt,Dy2Dt,1.5)

figure(1)
hold on
plot(y(:,1),y(:,2),r^,MarkerSize,4)
axis equal, axis([0 4.5 0 3.2])
hold off

figure (2)
plot(t,y(:,1),r.-,t,y(:,2),b)
legend(y_1,y_2)
axis([0 100 0 5])
xlabel(t)

obteniendo las grcas mostradas en la Figura 10.1. 

5
y1
y2
3 4.5

4
2.5
3.5

2 3

2.5
1.5

1
1.5

0.5 1

0.5
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
0
0 10 20 30 40 50 60 70 80 90 100
t

Figura 10.1: Diagrama de fases y soluciones del problema de Lotka-Volterra.

225
Captulo 10. Resolucin de problemas de valor inicial con Matlab

Cada mtodo numrico suele ser til slo para ciertos tipos de problemas y por eso
Matlab dispone de muchos mtodos implementados para ser utilizados en pro-
blemas distintos, y uno debe saber cuando debe utilizar cada uno. En esta prctica
vamos a estudiar algunos de estos mtodos para entender su funcionamiento. Com-
parar distintos mtodos nos puede ayudar a elegir el mtodo ms adecuado para
un determinado problema, o adaptar nuevos mtodos para resolver un problema
especco.

10.2 Mtodo de Euler

El mtodo de Euler es el ms simple de los mtodos numricos de resolucin de


ecuaciones diferenciales y viene dado por

yn+1 = yn + hf (tn , yn ) , n = 0, 1, 2, . . .

con tn = t0 + nh.

Ejemplo 10.2 Aplicar mtodo de Euler al problema de Lotka-Volterra (10.2) con


c0 = z0 = 2 para t [0, 3] tomando como pasos de integracin h = 1/5 y h = 1/20.
Dibujar cn frente a zn en ambos casos y comparar los resultados.

Solucin:
El mtodo de Euler para este problema viene dado por
 
cn+1 = cn + hcn (1 zn ), y1,n+1 = y1,n + hy1,n (1 y2n ),
o
zn+1 = zn + hzn (cn 2), y2,n+1 = y2,n + hy2,n (y2n 2),

y para alcanzar el tiempo nal tf = 3 utilizando un paso de integracin h = 1/5


deberemos reperit el algoritmo N = 3/h = 15 veces. El algoritmo escrito en forma
de mtodo RK de una etapa viene dado por:

% ejemploEuler.m
% y = f(t,y)
% Mtodo de Euler
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Tiempo inicial, final y nmero de divisiones
t0=0; tf=3; Npasos = 15;
% Tamao del paso de integracin
h = (tf-t0)/Npasos;
% Condiciones iniciales
y = [2 ; 2];
% EU almacena las soluciones obtenidas en cada instante
EU = [t0 y ];
t = t0;
226
10.2 Mtodo de Euler

for i2 = 1:Npasos;
%%%% Metodo de Euler %%%%%%%%%%%%%%%%%%%%%%
K1 = fVolt(t,y);
y = y + h*K1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t = t +h;
EU = [EU ; t y ];
end

y si queremos podemos dibujar, por ejemplo, el resultado obtenido incluyendo


el comando plot(EU(:,2),EU(:,3),s) donde la solucin u(t) frente a v(t) en
cada instante la hemos marcado con cuadrados.

Los resultados obtenidos se muestran en la Figura 10.2 (la trayectoria exacta se


coresponde con la lnea continua y los resultados del mtodo se representan con
cuadrados). Repetimos lo mismo tomando ahora h = 1/20 (repetimos el algoritmo
N = 3/h = 60 veces, esto es 4 veces ms de clculo). Los resultados vienen dados
por los crculos, donde se aprecia: (i) el error cometido va creciendo segn se avanza
en la integracin y; (ii) si utilizamos un paso ms pequeo podemos obtener mayor
precisin a costa de una mayor cantidad de clculos.

1.5
u

0.5

0
0.5 1 1.5 2 2.5 3 3.5
v

Figura 10.2: Mtodo de Euler aplicado al problema del Ejemplo 10.2.

227
Captulo 10. Resolucin de problemas de valor inicial con Matlab

10.3 Mtodos de Runge-Kutta

Recordamos los mtodos explcitos que hemos estudiado:

Mtodo del punto medio. Este mtodo RK de orden 2 viene dado por:

k1 = f (tn , yn ) ,
k2 = f (tn + h/2, yn + hk1 /2) ,
yn+1 = yn + hk2 .

Como vemos, el mtodo necesita evaluar la funcin f dos veces en cada paso de
integracin, por lo que requiere de ms operaciones que en el caso del mtodo de
Euler. Por otro lado, este coste adicional se compensa porque el mtodo suele ser
bastante ms preciso.

Mtodo de Euler modicado. El mtodo viene dado por:

k1 = f (tn , yn ) ,
k2 = f (tn + h, yn + hk1 ) ,
yn+1 = yn + h2 (k1 + k2 ) ,

que tambin requiere


de
dos evaluaciones de la
funcin

f por paso y tiene un error
de truncamiento O h3 y un error global O h2 .

Mtodo de Heun. El mtodo viene dado por:

k1 =
f (tn , yi ) ,
k2 =
f (tn + 2h/3, yn + 2hk1 /3) ,
yn+1 yn + h4 (k1 + 3k2 ) ,
=

que tiene un error de truncamiento O h3 y un error global O h2 .

Mtodo estndard Runge-Kutta de orden 4. El mtodo viene dado por:

k1 = f (tn , yn ) ,
k2 = f (tn + h/2, yn + hk1 /2) ,
k3 = f (tn + h/2, yn + hk2 /2) ,
k4 = f (tn + h, yn + hk3 ) ,
yn+1 = yn + h6 (k1 + 2k2 + 2k3 + k4 ) ,

en el que el error de truncamiento es O h5 y el error global del mtodo es O h4 .

A continuacin presentamos cmo modicar el programa de Euler para implemen-


tar el mtodo RK de orden 4. Lo llamaremos ejemploRK4.m.

% ejemploRK4.m
% y = f(t,y)
228
10.4 Mtodos multipaso

% Mtodo Runge-Kutta-4 standard de 4 etapas y de orden 4


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Tiempo inicial, final y nmero de divisiones
t0=0; tf=100; Npasos = 500;
% Tamao del paso de integracin
h = (tf-t0)/Npasos;
% Condiciones iniciales
y = [4 ; 1];
% R4 almacena las soluciones obtenidas en cada instante
RK4 = [t0 y ];
t = t0;
for i2 = 1:Npasos;
t1 = t + h/2; t2 = t + h/2; t3 = t + h;
%%%% Metodo RK-4 estandard %%%%%%%%%%%%%%%%%%%%%%
K1 = fVolt(t,y);
K2 = fVolt(t1,y+h*K1/2);
K3 = fVolt(t2,y+h*K2/2);
K4 = fVolt(t3,y+h*K3);
y = y + (K1 + 2*K2 + 2*K3 + K4)*h/6;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t = t +h;
RK4 = [RK4 ; t y ];
end

10.4 Mtodos multipaso

A continuacin recopilamos los mtodos lineales multipaso explcitos de rdenes


ms bajos, llamados tambin mtodos de Adams-Bashforth:

Mtodo de Adams-Bashforth de dos pasos

y0 = 0 , y 1 = 1 ,
h
yn+1 = yn + (3fn fn1 )
2

que tiene un error local O h3 .

Mtodo de Adams-Bashforth de tres pasos

y0 = 0 , y 1 = 1 , y 2 = 2 ,
h
yn+1 = yn + (23fn 16fn1 + 5fn2 ) ,
12

que tiene un error local O h4 .


229
Captulo 10. Resolucin de problemas de valor inicial con Matlab

Mtodo de Adams-Bashforth de cuatro pasos

y0 =0 , y1 = 1 , y2 = 2 , y3 = 3 ,
h
yn+1 = yn + (55fn 59fn1 + 37fn2 9fn3 ) ,
24

que tiene un error local O h5 .

Los mtodos lineales multipaso implcitos, llamados tambin mtodos de Adams-


Moulton de rdenes ms bajos son:

Mtodo de Adams-Moulton de un paso

y0 = 0 ,
h
yn+1 = yn + (fn + fn+1 ) ,
2
que se corresponde tambin con el mtodo RK implcito de orden 2 llamado mtodo
trapezoidal.

Mtodo de Adams-Moulton de dos pasos

y0 =
0 , y 1 = 1 ,
h
yn+1 = yn + (5fn+1 + 8fn fn1 ) ,
12

que tiene un error local O h4 .

Mtodo de Adams-Moulton de tres pasos

y0 =
0 , y 1 = 1 , y 2 = 2 ,
h
yn+1 = yn + (9fn+1 + 19fn 5fn1 + fn2 ) ,
24

que tiene un error local O h5 .

Mtodo de Adams-Moulton de cuatro pasos

y0 = 0 , y 1 = 1 , y 2 = 2 , y3 = 3 ,
h
yn+1 = yn + (251fn+1 + 646fn 246fn1 + 106fn2 19fn3 ) ,
720

que tiene un error local O h6 .

A continuacin presentamos la implementacin del siguiente mtodo predictor-


corrector de 3 pasos.

230
10.4 Mtodos multipaso

Mtodo predictor-corrector A-B-M de tres pasos

y0 = 0 , y 1 = 1 , y 2 = 2 ,
[p] h
yn+1 = yn + (23fn 16fn1 + 5fn2 )
12
h !
[p]
yn+1 = yn + 9fn+1 + 19fn 5fn1 + fn2 ,
24
[p] [p]
donde fn+1 = f (tn+1 , yn+1 ). Los primeros 3 pasos se pueden evaluar utilizando un
mtodo de un paso. Nosotros lo haremos utilizando el mtodo RK estndard de 4
pasos y de orden 4. Un algoritmo para implementar este mtodo sobre el ejemplo
del problema de Lotka-Volterra viene dado por:

% EjemploPredictorCorrectorABM3.m
% y = f(t,y)
% Predictor: Adams-Bashforth de 3 pasos
% Corrector: Adams-Moulton de 3 pasos
% Se inicializa con el mtodo RK4
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Tiempo inicial, final y nmero de divisiones
t0=0; tf=10; Npasos = 300;
% Tamao del paso de integracin
h = (tf-t0)/Npasos;
% Condiciones iniciales
y = [4 ; 1];
% PC3 almacena las soluciones obtenidas en cada instante
PC3 = [t0 y];
t = t0;
% Metodo RK4 explicito para los dos primeros pasos
for i2 = 1:2;
t1 = t + h/2; t2 = t + h/2; t3 = t + h;
%%%% Metodo RK-4 estandard %%%%%%%%%%%%%%%%%%%%%%
K1 = fVolt(t,y);
K2 = fVolt(t1,y+h*K1/2);
K3 = fVolt(t2,y+h*K2/2);
K4 = fVolt(t3,y+h*K3);
y = y + ((K1 + 2*(K2 + K3) + K4)*h/6);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t = t + h; PC3 = [PC3 ; t y ];
end
% Primeras 3 evaluaciones del mtodo RK4 almacenados en PC3
y0 = PC3(1,2:3); f0 = fVolt(t0,y0);
y1 = PC3(2,2:3); f1 = fVolt(t0+h,y1);
y2 = PC3(3,2:3); f2 = fVolt(t0+2*h,y2);
231
Captulo 10. Resolucin de problemas de valor inicial con Matlab

for i3 = 3:Npasos;
y2p = y2 + h*(23*f2 - 16*f1 + 5*f0)/12; %Predictor
f2p = fVolt(t,y2p);
y2 = y2 + h*(9*f2p + 19*f2 - 5*f1 + f0)/24; %Corrector
t = t + h;
f0 = f1; f1 = f2; f2= fVolt(t,y2); %para siguiente paso
PC3 = [PC3 ; t y2];
end

10.5 Ejercicios con Matlab

1. Considera el problema del satlite dado por las ecuaciones




x  = vx

x

vx = 2
(x + y 2 )3/2

y  = vy

y

vy = 2
(x + y 2 )3/2

que sirve como un modelo simple para describir su trayectoria alrededor de


la Tierra. Como sabemos, la energa mecnica (cintica ms potencial) se
debe de conservar, y viene dada por:
1 2 1
H= (vx + vy2 ) * . (10.4)
2 x + y2
2

Toma como condiciones iniciales


*
x = 1 e, y = 0, vx = 0, vy = (1 + e)/(1 e)

y comprueba que H = 1/2, siendo ste un valor que debe mantenerse jo


para todos los valores futuros de x, y, vx , vy . La solucin viene dada por una
trayectoria cerrada elptica con excentricidad, e, y de periodo T = 2. Toma
e = 0.5 e integra el sistema para t [0, 100].
a) Dene la nueva funcin vectorial (de dimensin 4) y prepara un nuevo
chero adaptando los mtodos ode23, ode45 y ode113.
b) i) Construye dos cheros que utilicen el mtodo Runge-Kutta de or-
den 4 y el mtodo de Heun. Para ello puedes modicar el programa
EjemploRK4.m y cambiar el nombre adecuadamente.
ii) Integra el sistema utilizando los siguientes pasos de integracin:
1 1 1 2 2 2
h = 10 , 100 , 1000 para el mtodo de Heun, y h = 10 , 100 , 1000 para
el otro, indicando cmo disminuye el error.
232
10.5 Ejercicios con Matlab

c) i) Adapta el mtodo multipaso al problema del satlite.


ii) Modica el programa para que utilice el mtodo predictor-corrector
que utiliza el mtodo de Adams-Bashforth y el de Adams-Moulton,
ambos de cuatro pasos.

2. Considera la ecuacin del pndulo (y1 , y2 ) = (, )


 
y 1 = y2 ,
y1 (0) = 1, y2 (0) = 0,
y2 = sen(y1 ),

cuya energa total (cintica ms potencial) es E = 12 y22 + (1 cos(y2 ))).


a) i) Construye dos cheros implementando el mtodo de Euler y el de
Heun. Para ello puedes modicar el programa EjemploRK4.m y
cambiar el nombre adecuadamente.
ii) Integra el sistema en el intervalo t [0, 10] utilizando los siguientes
1 1 1
pasos de integracin: h = 1, 10 , 100 , 1000 para el mtodo de Euler,
2 2 2
y h = 2, 10 , 100 , 1000 para el mtodo de Heun. Aade una nueva
columna a la matriz RK4 del chero con los errores en la energa
obtenidos en cada paso.
iii) Escribe una tabla que contenga en la primera columna el paso de
integracin utilizado y en segunda el error mximo obtenido.
b) i) Construye un mtodo predictor-corrector que utilice el mtodo de
Adams-Bashforth y el de Adams-Moulton, ambos de cuatro pasos.
Para ello puedes modicar el programa EjemploABM3.m y cambiar
el nombre adecuadamente.
ii) Integra el sistema anterior en el intervalo t [0, 10] utilizando los
siguientes pasos de integracin: h = 12 y h = 20 1
. Compara los
errores mximos obtenidos.

233
Captulo 11

Resolucin de problemas de
contorno con Matlab

11.1 ODEs lineales con condiciones en la frontera

Veamos cmo contruir un algoritmo numrico para resolver la ecuacin diferencial


lineal de segundo orden
y  = p(x)y  + q(x)y + r(x) , a x b , y(a) = , y(b) = ,
que tiene condiciones de contorno en y(a) e y(b). Dividimos el intervalo [a, b] en
N + 1 subintervalos del mismo tamao cuyos extremos son los nodos
xi = a + ix , i = 0, 1, . . . , N + 1 ,
siendo x = (b a)/(N + 1). Esto es, x0 = a y xN +1 = b se corresponden con los
puntos frontera donde la funcin es conocida, y buscaremos soluciones aproximadas
en los N puntos interiores: y(x1 ), . . . , y(xN ). Aproximando la primera y segunda
derivadas por diferencias nitas de segundo orden en estos nodos se llegamos a la
relacin

yi1 2yi + yi+1 yi+1 yi1


2
= p (xi ) + q (xi ) yi + r (xi ) , (11.1)
x 2x
que se pueden expresar en forma matricial de la forma
Ay = b , (11.2)
donde A es la matriz tridiagonal y los vectores y y b dados en (5.6) y (5.7). Por
tanto, la aproximacin numrica viene dada por las componentes del vector, y,
solucin del sistema (11.2).
235
Captulo 11. Resolucin de problemas de contorno con Matlab

Ejemplo 11.1 Resolver el siguiente problema de frontera mediante el mtodo de


diferencias nitas

y  = 4y + 4x(e2 1) , 0 x 1 , y(0) = 0 , y(1) = 0.

Sabiendo que la solucin exacta del problema es

e2x e2x
y(x) = + (1 e2 )x,
1 + e2
hallar el error mximo del mtodo para N = 5 y para N = 50.

Solucin:
Nos construimos el siguiente programa Matlab para resolver el problema:

% Problema: y = p(x) y + q(x) y + r(x)


% Condiciones frontera: y(x0)=alfa, y(xf)=beta
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Intervalo de integracion
x0=0; xf=1;
% Valores en la frontera
alfa=0; beta=0;
% Division del intervalo en Nint partes y paso de integracion
N=5; Nint=N+1; h=(xf-x0)/Nint;
A = zeros(N); b=[];
for i = 1:N;
x(i)=x0 + i*h;
p(i)=0; q(i)=4; r(i)=4*x(i)*(exp(-2)-1);
end
for i = 1:N-1;
A(i,i)= 2 + h^2*q(i);
A(i,i+1)= -1 + (h/2)*p(i);
A(i+1,i)= -1 - (h/2)*p(i+1);
b(i)=-h^2*r(i);
end
A(N,N)=2 + h^2*q(N);
b(1) = b(1) + (1 + (h/2)*p(1))*alfa;
b(N) = -h^2*r(N) + (1 - (h/2)*p(N))*beta;
% Solucion aproximada por diferencias finitas
ylin1 = A\b;
yl1=[ x0 alfa ; x ylin1 ; xf beta];

236
11.2 Diferencias nitas para EDPs de evolucin

Podemos comparar con la solucin exacta aadiendo al programa las siguientes


lneas:

z=[];
for i=1:N;
% Solucion exacta
yz=(exp(-2*x(i))-exp(2*x(i)))/(1+exp(2))+(1-exp(-2))*x(i);
% z: vector que contiene la solucion exacta en el mallado
z = [z ; x(i) yz ];
end
% Incluir las soluciones conocidas en la frontera
z = [ x0 alfa ; z ; xf beta];
% Error maximo cometido
max(abs(yl1(:,2)-z(:,2)))

dando un error mximo de 0.0010. Si adems queremos dibujar en una misma


gura la solucin exacta y la aproximada, ambas evaluada en el mallado, podemos
aadir tambin los siguientes comandos

% Dibujar la solucion
hold on
plot(yl1(:,1),yl1(:,2),r,LineWidth,3)
plot(z(:,1),z(:,2),k,LineWidth,3);
axis([0 1 0 0.2])
xlabel({\fontsize{16}x})
ylabel({\fontsize{16}y(x)})
box

Observamos cmo, efectivamente, ambas prcticamente se solapan. 

11.2 Diferencias nitas para EDPs de evolucin

11.2.1 Diferencias nitas para problemas parablicos


La ecuacin del calor o de difusin sin trmino fuente viene dada por
2
u 2 u

= a ,
t x2
x [0, L], t 0. (11.3)



u(0, t) = f 0 (t), u(L, t) = f L (t),
u(x, 0) = u0 (x),

237
Captulo 11. Resolucin de problemas de contorno con Matlab

Discretizamos el espacio en intervalos igualmente espaciados, x = x0 + ix, i =


0, 1, . . . , Nx +1, y hacemos lo mismo en el tiempo, t = nt, n = 0, 1, 2, . . . Debemos
buscar la solucin en el interior del mallado mostrado en la Figura 5.1.

El mtodo de Euler explcito nos permite ir avanzando la a la con la siguiente


discretizacin

un+1 uni un 2uni + uni+1


i
= a2 i1 ,
t x2
y que se puede escribir en forma matricial de manera compacta
un+1 = (I + rA)un + rbn , (11.4)
2
donde r = axt
2 y siendo I la matriz identidad de dimensin Nx Nx y donde la

matriz A y los vectores un y bn vienen dados por (5.10).

El mtodo obtenido es un mtodo explcito, ya que los valores de un+1 se pueden


calcular directamente conociendo los valores en el instante anterior, un . Vimos
tambin que para garantizar la estabilidad del esquema explcito, es necesario que
se cumpla la condicin de Courant
a2 t 1
0< < ,
x2 2
que limita la longitud del paso temporal que es necesario elegir una vez se ha
elegido un paso espacial.

Para evitar problemas de estabilidad, podemos utilizar el mtodo de Euler impl-


cito, que se corresponde con la discretizacin
un+1 uni un+1 2un+1 + un+1
i
= a2 i1 i
2
i+1
,
t x
y que matricialmente se puede escribir como
(I rA)un+1 = un + rbn+1 (11.5)
donde A es la misma matriz que antes. Por tanto, el algoritmo recursivo que nos
permite obtener un+1 es
!
un+1 = (I rA)1 un + rbn+1 . (11.6)

Otro mtodo que tampoco tiene problemas de estabilidad y es ms preciso que el


mtodo de Euler implcito, es el mtodo de Crank-Nicolson, que viene dado por la
ecuacin
 
un+1
i uni a2 uni1 2uni + uni+1 un+1
i1 2ui
n+1
+ un+1
i+1
= + .
t 2 x2 x2
238
11.2 Diferencias nitas para EDPs de evolucin

Matricialmente se puede escribir en la forma


   
1 n+1 1 r
I rA u = I + rA un + (bn + bn+1 ), (11.7)
2 2 2

y despejando un+1 se tiene


 1   
1 1 r
un+1 = I rA I + rA un + (bn + bn+1 ) . (11.8)
2 2 2

Como vimos en teora, todos estos mtodos se pueden obtener fcilmente a partir
de los mtodos estudiados en el tema anterior para ecuaciones diferenciales ordi-
narias si primeramente discretizamos solamente en espacio y tomamos el vector de
soluciones
u1 (t)
u2 (t)

..
u(t) = . ,

uN 1 (t)
x
uNx (t)
el cual debe satisfacer el sistema de ecuaciones diferenciales ordinarias
du
= sAu + sb(t),
dt
2
a
donde s = x 2 . Se trata de un sistema de ecuaciones diferenciales ordinarias de

la forma y = f (t, y) donde y = u y f (t, u) = sAu + sb(t) y podemos utilizar
cualquiera de los mtodos vistos para EDOs con condiciones iniciales (teniendo en
cuenta que las condiciones de frontera se encuentran en el vector b(t)).

Ejemplo 11.2 Considerar el problema



u 2u

=
t x2
x [0, 1], t [0, 1], (11.9)



u(0, t) = u(1, t) = 0
u(x, 0) = sen(x)
2
cuya solucin exacta es: u(x, t) = e t sen(x). Escribir un programa que resuelva
el problema y en el que se pueda elegir cualquiera de los mtodos: Euler explcito,
Euler implcito o Crank-Nicholson (dependiendo de la eleccin de una determinada
1
variable). Tomar x = 10 y comparar las soluciones obenidas con el mtodo de
1 1
Euler explcito para los pasos de integracin: t = 174 y t = 173 , y comentar
los resultados. Repetir los clculos con el mtodo de Crank-Nicholson utilizando
1
t = 10 .

239
Captulo 11. Resolucin de problemas de contorno con Matlab

Solucin:

% Problema parabolico: du/dt = a2 d^2u/dx^2


% Condiciones frontera: u(t,0)=alfa, u(t,L)=beta
% Condiciones iniciales: u(0,x)=g(x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a=1; a2=a^2;
% Intervalo espacial y temporal
x0=0; xL=1; t0=0; tf=1;
% Discretizacion espacial y temporal
Nx=9; Nxint=Nx+1; hx=(xL-x0)/Nxint; Nt=174; ht=(tf-t0)/Nt;
% imet = Metodo a utilizar:
% 1=Euler explicito, 2=Euler implicito, 3=Crank-Nicholson
imet=1;
% Condiciones iniciales
un=[]; uex=[]; MU=[]; MUex=[];
for i = 1:Nx;
x(i)=x0 + i*hx; un(i)=sin(pi*x(i));
end
% Valores en la frontera
f0(1)=0; fL(1)=0;
for i = 1:Nt+1;
t(i)=t0 + i*ht; f0(i+1)=0; fL(i+1)=0;
end
MU = [ f0(1) un fL(1) ]; MUex = MU;
A =zeros(Nx); b=zeros(Nx,1);
for i = 1:Nx-1;
A(i,i)= -2; A(i,i+1)= 1; A(i+1,i)=1;
end
A(Nx,Nx)=-2; r=a2*ht/hx^2;
for i=1:Nt
if (imet == 1)
b(1) = f0(i); b(Nx) = fL(i);
un = ((eye(Nx)+r*A)*un + r*b);
elseif (imet == 2)
b(1) = f0(i+1); b(Nx) = fL(i+1);
un = ((eye(Nx)-r*A)\(un + r*b));
elseif (imet == 3)
b(1) = (f0(i+1)+f0(i))/2; b(Nx) = (fL(i+1)+fL(i))/2;
un = ((eye(Nx)-r*A/2)\((eye(Nx)+r*A/2)*un + r*b));
end
% MU contiene las soluciones aproximadas por filas junto
% con las condiciones de frontera
240
11.2 Diferencias nitas para EDPs de evolucin

MU = [MU ; f0(i+1) un fL(i+1) ];


% Solucion exacta
for j=1:Nx
uex(j)=exp(-pi^2*t(i))*sin(pi*x(j));
end
MUex = [MUex ;f0(i+1) uex fL(i+1) ];
end
figure(1)
surf(MU)
box
% Error maximo cometido
max(max(abs(MU-MUex)))

Condiciones de frontera variables. Si las condiciones de frontera dependen del


tiempo
u(0, t) = f0 (t), u(L, t) = fL (t),
slo hay que modicar dos lneas del programa. Por ejemplo, si f0 (t) = sen(t) y
fL (t) = sen(2t), habra que cambiar

% Valores en la frontera
f0(1)=0; fL(1)=0;
for i = 1:Nt+1;
t(i)=t0 + i*ht; f0(i+1)=0; fL(i+1)=0;
end

por

% Valores en la frontera
f0(1)=sin(t0); fL(1)=sin(2*t0);
for i = 1:Nt+1;
t(i)=t0 + i*ht; f0(i+1)=sin(t(i)); fL(i+1)=sin(t(i));
end

Trmino fuente independiente del tiempo. Si el problema contiene un tr-


mino fuente independiente del tiempo, F (x), las modicaciones al programa tam-
bin son mnimas. Por ejemplo, si F (x) = x(1 x), podemos denir el vector F en
el bucle donde se denen las condiciones iniciales

% Condiciones iniciales
un=[]; uex=[]; MU=[]; MUex=[];
241
Captulo 11. Resolucin de problemas de contorno con Matlab

for i = 1:Nx;
x(i)=x0 + i*hx; un(i)=sin(pi*x(i)); F(i)=x(i)*(1-x(i));
end

Este vector hay que incluirlo en los mtodos de Euler explcito, implcito y Crank-
Nicholson de la siguiente forma

un = ((eye(Nx)+r*A)*un + F + r*b);
un = ((eye(Nx)-r*A)\(un + F + r*b));
un = ((eye(Nx)-r*A/2)\((eye(Nx)+r*A/2)*un + F + r*b));

Si comparamos con las tcnicas analticas de separacin de variables nos damos


cuenta de la enorme diferencia que existe. Los mtodos numricos permiten abor-
dar problemas ms complejos con pequeas modicaciones en los algoritmos.

11.2.2 Diferencias nitas para problemas hiperblicos


Como ejemplo de un problema de contorno hiperblico consideraremos la ecuacin
de ondas, o sea, un problema de la forma
2

u 2
2 u

= a + F (x, t)

t
2 x2
x [0, L], t 0 . (11.10)

u(0, t) = f0 (t), u(L, t) = fL (t)



u(x, 0) = f (x), u (x, 0) = g(x)
t

En esta prctica resolveremos este problema utilizando el mtodo de lneas. Esto es,
tomamos el mallado espacial con los nodos 0 = x0 , x1 , . . . xNx +1 = L y tomamos
el tiempo como una variable continua, por lo que debemos resolver el sistema de
EDOs

d2 u
= sAu + F (t) + s b(t)
dt2
2
a
donde s = x 2 y la matriz A es la misma que en el problema parablico. El vector
del trmino fuente (fuerza externa que acta sobre el sistema) se corresponde con
la discretizacin espacial, esto es, F (t) = (F (x1 , t), F (x2 , t), . . . , F (xNx , t)), y b(t)
es el vector que contiene las condiciones de frontera. Las condiciones iniciales son

f (x1 ) g(x1 )
f (x2 ) g(x2 )

.. ..
u(0) = . , u (0) = . .

f (xN 1 ) g(xN 1 )
x x
f (xNx ) g(xNx )
242
11.2 Diferencias nitas para EDPs de evolucin

Esto es un sistema de ecuaciones diferenciales lineales de segundo orden con con-


diciones iniciales en la funcin y su derivada. Si transformamos este sistema de
ecuaciones diferenciales de segundo orden en uno de primer orden se obtiene
   
d u v
=
dt v sAu + F (t) + s b(t)

con condiciones iniciales: u(0) y v(0) = u (0). El esquema de segundo orden se


escribe mediante el siguiente algoritmo, correspondiente al mtodo leap-frog,

U = un + t
2 v
n
n+1 n
v = v + t(sAU + F (tn ) + sb(tn )
un+1 = U + t
2 v
n+1

el cual se inicia con: u0 = u(0), v 0 = u (0).

Ejemplo 11.3 Considerar la siguiente ecuacin hiperblica con condiciones ini-


ciales y de frontera
2
u 2u

=
t2 x2
u(0, t) = u(1, t) = 0 x [0, 1], (11.11)

1

u(x, 0) = sen(x) + 2 sen(3x)
u (x, 0) = 0

para t [0, 1] y cuya solucin exacta es:


1
u(x, t) = 2 cos(t) sen(x) + cos(3t) sen(3x).
2
1
Escribir un algoritmo que implemente el mtodo de it leap-frog con x = 100 , t =
1
100 . Dibujar la solucin obtenida en 3 dimensiones y hallar el error mximo co-
metido comparando con la solucin exacta en los puntos del mallado.

Solucin:

% Problema hiperbolico: d^2u/dt^2 = al^2 d^2u/dx^2


% Condiciones frontera: u(t,0)=0, u(t,L)=0
% Condiciones iniciales: u(0,x)=f(x), u(0,x)=g(x)

al=1;
% Intervalo espacial y temporalde
x0=0; xL=1; t0=0; tf=1;
243
Captulo 11. Resolucin de problemas de contorno con Matlab

% Discretizacion espacial y temporal


Nx=99; Nxint=Nx+1; hx=(xL-x0)/Nxint;
Nt=100; ht=(tf-t0)/Nt;

% Valores en la frontera
alfa=0; beta=0;

% Condiciones iniciales
un=[]; vn=[]; uex=[]; MU = []; MUex = [];
for i = 1:Nx;
x(i)=x0 + i*hx;
un(i) = sin(pi*x(i)) + 0.5*sin(3*pi*x(i));
vn(i) = 0;
end
MU = [ alfa un beta ]; MUex = MU;
A = zeros(Nx); b=zeros(Nx,1);
for i = 1:Nx-1;
A(i,i)= -2; A(i,i+1)= 1; A(i+1,i)= 1;
end
A(Nx,Nx)=-2; r=al^2/hx^2;
for i=1:Nt
t(i)=t0 + i*ht;
un = un + vn*ht/2;
vn = vn + ht*r*(A*un);
un = un + vn*ht/2;

% MU contiene las soluciones aproximada por filas


MU = [MU ; alfa un beta ];

% Solucion exacta
for j=1:Nx
uex(j)=cos(pi*t(i))*sin(pi*x(j))+...
cos(3*pi*t(i))*sin(3*pi*x(j))/2;
end
MUex = [MUex ; alfa uex beta ];
end
figure(1)
surf(MU)
box
% Error maximo cometido
max(max(abs(MU-MUex)))


244
11.3 Ejercicios con Matlab

11.3 Ejercicios con Matlab

1. Resuelve la siguiente ecuacin diferencial con condiciones en la frontera


  1  1 2
y + 2 xy x2 /2
2 x y = 2e ,
x [0, 2] ,
2
y(0) = 2, y( 2) = e ,

utilizando el mtodo de diferencias nitas. Compara el resultado



obtenido

x2 /2 2 2 2
con la solucin exacta: y(x) = 2e para los valores h = 10 , 100 , 1000 . En
funcin del resultado obtenido, comenta de qu orden es el mtodo.
2. Considera la siguiente ecuacin parablica con condiciones iniciales y de
frontera

u 1 2u

= ,
t 4 x2
u(0, t) = 0, x [0, 1], t [0, 2] . (11.12)



u(1, t) = 0,
u(x, 0) = sen(x),

Compara los resultados obtenidos utilizando en mtodo de Euler explcito,


1 1
! = 10 y t = 10 .
el de Euler implcito y el de Crank-Nicholson para x
2
Compara con la solucin exacta, u(x, t) = exp 4 t sen(x), y comenta
los resultados.
3. Considera la siguiente ecuacin hiperblica con condiciones iniciales y de
frontera
2
u 2u

= 4 ,
t2 x2
u(0, t) = u(1, t) = 0, x [0, 1], t [0, 10] . (11.13)



u(x, 0) = 2 sen(3x),
u (x, 0) = 12 sen(2x),
1 1
Utiliza el mtodo de leap-frog tomando: (i) x = 25 , t = 50 y (ii) x =
1 1
50 , t = 100 . Compara con la solucin exacta,

3
u(x, t) = 2 cos(6t) sen(3x) sen(4t) sen(2x),

y comenta los resultados.
4. Modica el algoritmo del Ejemplo 11.3 para incluir las condiciones de frontera

u(0, t) = sen(t), u(1, t) = sen(2t),

y el trmino fuente independiente del tiempo, F (x) = x(1 x).


245
Bibliografa

Arndiga, F., R. Donat y P. Mulet (2000). Mtodes Numrics per a llgebra


Lineal. Valencia: Universitat de Valncia.

Aubanell, A., A. Benseny y A. Delshams (1993). tiles Bsicos de Clculo Num-


rico. Barcelona: Labor.

Burden, R.L. y J.D. Faires (2004). Mtodos Numricos. Tercera edicin. Madrid:
Thomson.

Chapra, A.C. y R.P. Canale (2006). Mtodos Numricos para Ingenieros. Quinta
edicin. Mxico: McGraw-Hill.

Coleman, M.P. (2004). An Introduction to Partial Dierential Equations with


Matlab. Boca Raton, Florida: Chapman & Hall/CRC.

Cordero, A. y col. (2005). Mtodos Numricos con Matlab. Valencia: Editorial


Politcnica de Valencia.

(2006). Problemas Resueltos de Mtodos Numricos. Madrid: Thomson.

Eriksson, K. y col. (1996). Computational dierential equations. Cambridge: Cam-


bridge University Press.

Giordano, F.R., M.D. Weir y W.P. Fox (1997). A First Course in Mathematical
Modeling. Segunda edicin. Pacic Grove, CA: Brooks/Cole.

Guardiola, R., E. Hign y J. Ros (2002). Mtodes Numrics per a la Fsica. Va-
lencia: Universitat de Valncia.

Holmes, M.H. (2007). Introduction to Numerical Methods in Dierential Equations.


New York: Springer.
247
Bibliografa

Mathews, J.H. (1992). Numerical Methods: for Mathematics, Science and Engi-
neering. Segunda edicin. Englewood Clis, NJ: Prentice-Hall.

Mathews, J.H. y K.D. Fink (2000). Mtodos Numricos con Matlab. Madrid:
Prentice-Hall.

Moler, C.B. (2004). Numerical Computing with Matlab. Philadelphia: SIAM.

Quarteroni, A. y F. Saleri (2006). Clculo Cientco con Matlab y Octave. Miln:


Springer-Verlag.

Schfer, M. (2006). Computational Engineering - Introduction to numerical met-


hods. Berlin: Springer-Verlag.

Stoer, J. y R. Burlich (1993). Introduction to Numerical Analysis. Segunda edicin.


New York: Springer-Verlag.

248