Sie sind auf Seite 1von 333

Primera edición en español, 2018

Este texto ha sido sometido a un proceso de evaluación por pares


externos con base en la normativa editorial de la UTMACH

Ediciones UTMACH

Gestión de proyectos editoriales universitarios

306 pag; 22X19cm - (Colección REDES 2017)

Título: Métodos Numéricos para el Análisis Matemático con Matlab.

Juan F. Mañas Mañas / Maritza A. Pinta (Coordinadores)

ISBN: 978-9942-24-104 -7
Publicación digital

Título del libro: Métodos Numéricos para el Análisis Matemático con


Matlab.
ISBN: 978-9942-24-104 -7
Comentarios y sugerencias: editorial@utmachala.edu.ec
Diseño de portada: MZ Diseño Editorial
Diagramación: MZ Diseño Editorial
Diseño y comunicación digital: Jorge Maza Córdova, Ms.

© Editorial UTMACH, 2018


© Juan Mañas / Maritza Pinta, por la coordinación
D.R. © UNIVERSIDAD TÉCNICA DE MACHALA, 2018
Km. 5 1/2 Vía Machala Pasaje
www.utmachala.edu.ec
Machala - Ecuador
César Quezada Abad, Ph.D
Rector
Amarilis Borja Herrera, Ph.D
Vicerrectora Académica

Jhonny Pérez Rodríguez, Ph.D


Vicerrector Administrativo

COORDINACIÓN EDITORIAL

Tomás Fontaines-Ruiz, Ph.D


Director de investigación

Karina Lozano Zambrano, Ing .


Jefe Editor

Elida Rivero Rodríguez, Ph.D


Roberto Aguirre Fernández, Ph.D
Eduardo Tusa Jumbo , Msc.
Irán Rodríguez Delgado, Ms.
Advertencia: “Se prohíbe la Sandy Soto Armijos, M.Sc.
reproducción, el registro o
la transmisión parcial o total Raquel Tinóco Egas, Msc.
de esta obra por cualquier Gissela León García, Mgs.
sistema de recuperación de Sixto Chiliquinga Villacis, Mgs.
información, sea mecánico,
fotoquímico, electrónico, Consejo Editorial
magnético, electro-óptico,
por fotocopia o cualquier Jorge Maza Córdova, Ms.
otro, existente o por existir,
sin el permiso previo por Fernanda Tusa Jumbo, Ph.D
escrito del titular de los dere- Karla Ibañez Bustos, Ing.
chos correspondientes”. Comisión de apoyo editorial
Métodos Numéricos para el Análisis
Matemático con MATLAB

Juan F. Mañas-Mañas
Maritza A. Pinta

Coordinadores
Resumen

El objetivo principal de esta obra es introducir al lector en el estudio de los


Métodos Numéricos utilizando la plataforma computacional MATLAB, e im-
pulsar en el estudiante el desarrollo de habilidades para el Análisis Matemático.
Este libro es un trabajo conjunto de docentes de la Universidad Técnica de Ma-
chala (Ecuador) y de la Universidad de Almerı́a (España) empeñados en difundir
los Métodos Numéricos.
Los Métodos Numéricos son de gran importancia porque constituyen hoy en
dı́a en una herramienta fundamental para la solución de muchos problemas de las
ciencias cuya solución exacta no es alcanzable y, es por tanto, necesario obtener
una solución aproximada. Por otro lado, el desarrollo computacional actual, a
través de software como MATLAB, permite resolver rápidamente mediante la
implementación de algoritmos numéricos eficientes problemas que antes tenı́an
una solución numérica poco factible, debido al tiempo que se requerı́a para ello.
Este libro se compone de 6 capı́tulos. En el primero de ellos, se realizará un
repaso de las bases matemáticas necesarias para la comprensión de los temas a
tratar en los capı́tulos subsiguientes; se abordarán conceptos referentes a: funcio-
nes, derivación, integración, ecuaciones diferenciales, matrices y vectores.
MATLAB se fundamenta en cuatro paradigmas básicos de la programación:
la programación secuencial, la programación estructurada, la programación mo-
dular y la programación orientada a objetos. Por ello se ha considerado necesario
en el segundo capı́tulo hacer una presentación de la sintaxis de comandos secuen-
ciales que sean de relevancia significativa para la construcción de algoritmos de
métodos numéricos y la visualización de resultados. Para ello, se empieza con la
caracterización de las variables en el entorno de MATLAB; luego, se presentan los
comandos que implementan diferentes funciones matemáticas. De esta forma, se
aprovecha los recursos disponibles en este paquete computacional para fortalecer
las soluciones numéricas de nuestros algoritmos.
El capı́tulo 3 nos introduce en el estudio de la derivación numérica de funcio-
nes, la cual tiene muchas aplicaciones, especialmente en la resolución numérica
de ecuaciones diferenciales. Además, nos permite determinar la derivada de un
orden determinado de una función en un punto dado, utilizando solamente los
valores que toma la función en una serie de puntos. Se realizará un estudio con
detalle pero con enfoque práctico de estas fórmulas y del error teórico cometido,
prestando atención a un método relevante de aceleración de la convergencia cono-
cido como método de extrapolación de Richardson; haciendo la implementación
de estos métodos en MATLAB a través de ejemplos prácticos.
Posteriormente los capı́tulos 4 y 5 están dedicados a la integración numérica

iii
que tienen como objetivo aproximar numéricamente integrales definidas, las cuales
tienen muchas aplicaciones tanto en matemáticas como en procesos cientı́ficos-
técnicos. Este cálculo suele ser complicado y en la mayorı́a de los casos es inviable
si se pretende expresar el valor de la integral definida como la evaluación de
combinación de funciones elementales.
El capı́tulo 4 tiene por objetivo obtener expresiones, usualmente denomina-
das fórmulas de cuadratura, que permitan aproximar de la forma más exacta
posible una integral definida. Obtendremos fórmulas basadas en polinomios in-
terpoladores, denominadas fórmulas de Newton-Cotes. Como es habitual en el
análisis numérico proporcionaremos expresiones para el error cometido al usar
estas fórmulas. Adicionalmente aplicaremos el proceso de aceleración o método
de Romberg y algunas breves notas sobre cuadraturas adaptativas.
En el capı́tulo 5, dedicado a la integración numérica, se presentarán las fórmu-
las de cuadratura gaussianas. La ventaja de estas fórmulas es que los nodos in-
volucrados no son fijos, sino que van a ser los ceros de determinados polinomios
ortogonales; de esta forma natural, imbricamos la integración numérica con la
Teorı́a de Aproximación a través del uso de los polinomios ortogonales. Haremos
un estudio detallado y práctico de las fórmulas gaussianas, analizando su exac-
titud máxima, el error y el cálculo eficiente de sus nodos y pesos mediante los
valores y vectores propios de la matriz de Jacobi.
Nuestro último capı́tulo está dedicado a las ecuaciones diferenciales, que es
la herramienta matemática más útil a la hora de describir problemas en todos
los ámbitos de las ciencias y también en otras ramas del conocimiento. Es bien
conocido su uso en la modelización matemática en biologı́a, ingenierı́a, medicina,
informática y cualquier área cientı́fico-técnica, pero también en otras áreas como
en el estudio de comportamientos sociales o en economı́a.
En este libro introductorio a los métodos numéricos pretendemos acercar al
lector a la resolución numérica de ecuaciones diferenciales ordinarias (EDO). Las
ecuaciones, o de forma más natural, los sistemas de EDO que aparecen en la mo-
delación matemática, raramente son resolubles utilizando solamente el análisis
matemático y es imprescindible el uso del análisis numérico. Se asumirá que el
lector posee un cierto conocimiento de EDO, y se presentarán de forma práctica
métodos útiles de resolución numérica de problemas de valores iniciales y pro-
blemas de contorno. Se prestará atención a los denominados problemas stiff. La
aplicación de los métodos presentados en este capı́tulo hará uso necesariamente
del ordenador y del programa MATLAB.

iv
Listado de autores por capı́tulos

• Capı́tulo 1:

◦ Maritza A. Pinta.
◦ Fausto F. Redrován.

• Capı́tulo 2:

◦ Eduardo Tusa.
◦ Carlos Loor.

• Capı́tulo 3:

◦ Juan F. Mañas-Mañas.
◦ Maritza A. Pinta.

• Capı́tulo 4:

◦ Juan F. Mañas-Mañas.
◦ Maritza A. Pinta.

• Capı́tulo 5:

◦ Juan F. Mañas-Mañas.
◦ Maritza A. Pinta.

• Capı́tulo 6:

◦ Juan J. Moreno-Balcázar.

v
vi
Dedicatorias
Dedico esta obra a mi amado esposo Eguipto y a mi
hijo Juan José, por su amor y apoyo incondicional.
Maritza A. Pinta

Esta obra es dedicada amis estudiantes, quiénes han


tenido la libertad de compartirme sus inquietudes,
inconformidades y preocupaciones; en torno al área de
la programación y métodos numéricos en MATLAB.
Dedico este trabajo a toda mi familia, mis padres, mis
hermanas, mis sobrinos; quiénes no han dudado en
demostrarme su enorme afecto, cariño y paciencia en
cada acierto y desacierto que se concibe a lo largo de
mi vida. A aquellos grandes amigos y amigas que a
pesar del tiempo, no han renunciado a caminar junto a
mi lado. Finalmente, a todos los grandes soñadores del
mundo que se levantan cada mañana dispuestos a
cambiar el curso de su destino.
Eduardo Tusa

A toda mi familia. En especial, a mi mujer y compañera,


Loli, y a mis hijas, Rocı́o y Mar, por ser tan maravillosas
y a mis padres, Juan José y Rosa, gracias a ellos empezó todo,
siempre serán mis referentes.
Juan J. Moreno-Balcázar

Dedico esta obra a mis padres, Francisco y Rosalı́a, ya


que gracias a ellos he llegado hasta donde estoy hoy en
dı́a. A mi hermana Rosa Marı́a y mi novia Mónica por el
apoyo recibido, y a toda mi familia y amigos
por los ánimos dados.
Juan F. Mañas-Mañas

A mi esposa Rosita, mi consejera e inspiración.


A mis hijos Abigaı́l y Mateo, mi motivación y razón.
A mis padres Fausto y Mirian, mi guı́a y apoyo.
A la memoria de mi abuelito Fausto,
mi primer profesor de matemáticas.
Fausto F. Redrován

vii
viii
Agradecimientos

Los autores compiladores, Maritza A. Pinta y Juan F. Mañas-Mañas agra-


decen en primer lugar a todos los autores su trabajo, perseverancia y todo el
esfuerzo dedicado a la hora de realizar este libro, ya que gracias a ellos el mismo
ha sido posible.
Todos los autores aprovechamos estas lı́neas para agradecer a las principales
autoridades de la Universidad Técnica de Machala, quienes han brindado el tiem-
po, los recursos y el escenario para impulsar la producción cientı́fica de sus prin-
cipales actores. Asimismo, expresamos nuestra gratitud a la Editorial UTMACH
y al Centro de Investigaciones por fortalecer iniciativas orientadas a preservar el
legado cientı́fico de los investigadores.
Los autores de la Universidad Técnica de Machala expresamos también grati-
tud al decano, subdecano, coordinadores y colegas docentes de la Unidad Académi-
ca de Ingenierı́a de Civil, por su cooperación en potenciar los espacios de investiga-
ción alcanzados y a los miembros del Grupo de Investigación de Automatización,
Matemática y Tecnologı́as de la Información y las Comunicaciones, AutoMath-
TIC.
Por parte de la Universidad de Almerı́a, el autor Juan J. Moreno Balcázar
está parcialmente financiado por los siguientes proyectos e instituciones: Gru-
po de Investigación FQM-229 de la Junta de Andalucı́a adscrito al Campus de
Excelencia Internacional del Mar (CEIMAR); Ministerio de Economı́a y Compe-
titividad de España y el Fondo Europeo de Desarrollo Regional (FEDER) con
el proyecto MTM2014-53963-P; Centro para el Desarrollo y la Transferencia de
la Innovación Matemática en la Empresa (CDTIME). El autor Juan F. Mañas-
Mañas está financiado por una beca predoctoral del Plan Propio de la Universidad
de Almerı́a, además, parcialmente financiado por los siguientes proyectos e ins-
tituciones: Grupo de Investigación FQM-229 de la Junta de Andalucı́a adscrito
al Campus de Excelencia Internacional del Mar (CEIMAR); Ministerio de Eco-
nomı́a y Competitividad de España y el Fondo Europeo de Desarrollo Regional
(FEDER) con el proyecto MTM2014-53963-P.
Finalmente, y no por ello menos importante, agradecemos también a los árbi-
tros anónimos la revisión de los capı́tulos, gracias a sus comentarios y aportaciones
esta obra ha ganado valor y relevancia.

ix
x
Índice general

1. CONCEPTOS PRELIMINARES 1
1.1. Teoremas importantes para funciones continuas. . . . . . . . . . . 1
1.1.1. Conservación del signo de las funciones continuas . . . . . 2
1.1.2. Teorema de Bolzano . . . . . . . . . . . . . . . . . . . . . 3
1.1.3. Teorema del valor intermedio (o Propiedad de Darboux) . 5
1.2. Derivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1. Interpretación Geométrica de la Derivada . . . . . . . . . . 6
1.2.2. Fórmulas de derivación . . . . . . . . . . . . . . . . . . . 7
1.2.3. Segunda Derivada y Derivadas Sucesivas . . . . . . . . . . 8
1.3. Valor extremo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4. Teorema de Rolle. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5. Teorema del Valor Medio. . . . . . . . . . . . . . . . . . . . . . . 12
1.6. Integración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6.1. Integral Definida . . . . . . . . . . . . . . . . . . . . . . . 14
1.6.2. Teoremas Fundamentales del Cálculo . . . . . . . . . . . . 14
1.6.3. Integración Por Partes . . . . . . . . . . . . . . . . . . . . 15
1.7. Ecuaciones Diferenciales. . . . . . . . . . . . . . . . . . . . . . . . 15
1.7.1. Tipos de Ecuaciones Diferenciales . . . . . . . . . . . . . 15
1.7.2. Solución de una Ecuación Diferencial . . . . . . . . . . . . 16
1.7.3. Ecuaciones Diferenciales de Primer Orden . . . . . . . . . 16
1.7.4. Ecuaciones Diferenciales Lineales Homogéneas con Coefi-
cientes Constantes de n−ésimo Orden. . . . . . . . . . . . 17
1.8. Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.8.1. Tipos de Matrices . . . . . . . . . . . . . . . . . . . . . . 18
1.8.2. Operaciones entre Matrices . . . . . . . . . . . . . . . . . 18
1.8.3. Determinantes . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.8.4. Inversa de una matriz . . . . . . . . . . . . . . . . . . . . 22
1.8.5. Valores Propios (AutoValores) y Vectores Propios (Auto-
Vectores) . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2. INTRODUCCIÓN A MATLAB 27
2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2. Entorno de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3.1. Tipo de variables . . . . . . . . . . . . . . . . . . . . . . . 30
2.3.2. Jerarquı́a de operaciones artiméticas . . . . . . . . . . . . 31
2.4. Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

xi
2.4.1. Ingreso de vectores . . . . . . . . . . . . . . . . . . . . . . 32
2.4.2. Operaciones con vectores . . . . . . . . . . . . . . . . . . . 34
2.5. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.5.1. Ingreso de matrices . . . . . . . . . . . . . . . . . . . . . . 36
2.5.2. Operaciones con matrices . . . . . . . . . . . . . . . . . . 38
2.6. Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.6.1. Ingreso de polinomios . . . . . . . . . . . . . . . . . . . . . 40
2.6.2. Operaciones con polinomios . . . . . . . . . . . . . . . . . 40
2.7. Script de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.8. Estructuras de control . . . . . . . . . . . . . . . . . . . . . . . . 43
2.8.1. Estructuras de decisión . . . . . . . . . . . . . . . . . . . . 44
2.8.2. Estructuras de repetición . . . . . . . . . . . . . . . . . . . 46
2.9. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.9.1. Funciones en lı́nea . . . . . . . . . . . . . . . . . . . . . . 48
2.9.2. Funciones modulares . . . . . . . . . . . . . . . . . . . . . 50

3. DERIVACIÓN NUMÉRICA 53
3.1. Serie de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2. Error de truncamiento en la serie de Taylor . . . . . . . . . . . . . 56
3.3. Fórmulas de derivación numérica basadas en la Serie de Taylor . . 56
3.3.1. Fórmulas progresivas o de diferencias divididas finitas hacia
delante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.2. Formulas regresivas o de diferencias divididas finitas hacia
atrás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.3.3. Fórmulas de diferencias finitas centradas . . . . . . . . . . 60
3.4. Derivadas de orden superior . . . . . . . . . . . . . . . . . . . . . 62
3.5. Fórmulas basadas en polinomios de interpolación . . . . . . . . . 68
3.5.1. Utilizando el polinomio interpolador de Lagrange . . . . . 69
3.5.2. El polinomio interpolador de Newton . . . . . . . . . . . . 71
3.6. Inestabilidad de las fórmulas de derivación numérica . . . . . . . . 72
3.7. Extrapolación de Richardson . . . . . . . . . . . . . . . . . . . . . 73

4. CUADRATURAS DE NEWTON-COTES 79
4.1. Introducción a la integración numérica . . . . . . . . . . . . . . . 80
4.2. Método de coeficientes indeterminados . . . . . . . . . . . . . . . 81
4.2.1. Regla del Rectángulo a Izquierda . . . . . . . . . . . . . . 81
4.2.2. Regla del Rectángulo a Derecha . . . . . . . . . . . . . . . 82
4.2.3. Regla del Punto Medio . . . . . . . . . . . . . . . . . . . . 83
4.2.4. Regla de los Trapecios . . . . . . . . . . . . . . . . . . . . 84
4.2.5. Regla de Simpson . . . . . . . . . . . . . . . . . . . . . . . 85
4.2.6. Método de coeficientes indeterminados . . . . . . . . . . . 86
4.3. Fórmulas de cuadratura interpolatorias . . . . . . . . . . . . . . . 87
4.3.1. Análisis del error . . . . . . . . . . . . . . . . . . . . . . . 88
4.4. Fórmulas de Newton-Cotes . . . . . . . . . . . . . . . . . . . . . . 92
4.4.1. Fórmulas de Newton-Cotes simples . . . . . . . . . . . . . 92
4.4.2. Fórmulas de Newton-Cotes Compuestas . . . . . . . . . . 94
4.5. Método de Romberg . . . . . . . . . . . . . . . . . . . . . . . . . 100

xii
4.6. Cuadraturas adaptativas . . . . . . . . . . . . . . . . . . . . . . . 101
4.6.1. Trapecios Adaptativo . . . . . . . . . . . . . . . . . . . . . 102
4.6.2. Simpson Adaptativo . . . . . . . . . . . . . . . . . . . . . 102

5. CUADRATURAS GAUSSIANAS 107


5.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.2. Introducción a polinomios ortogonales . . . . . . . . . . . . . . . . 109
5.3. Familias clásicas de polinomios ortogonales . . . . . . . . . . . . . 111
5.3.1. Polinomios ortogonales de Jacobi . . . . . . . . . . . . . . 111
5.3.2. Polinomios ortogonales de Laguerre . . . . . . . . . . . . . 112
5.3.3. Polinomios ortogonales de Hermite . . . . . . . . . . . . . 112
5.4. Fórmulas de cuadratura . . . . . . . . . . . . . . . . . . . . . . . 113
5.5. Algoritmo para cuadraturas gaussianas . . . . . . . . . . . . . . . 115
5.5.1. Paso 1: Transformar la integral convenientemente . . . . . 116
5.5.2. Paso 2: Calculo de los nodos xk . . . . . . . . . . . . . . . 117
5.5.3. Paso 3: Calculo de los pesos λk . . . . . . . . . . . . . . . 119
5.5.4. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.6. Error de las cuadraturas gaussianas . . . . . . . . . . . . . . . . . 121
5.7. Implementación de las cuadraturas gaussianas . . . . . . . . . . . 123
5.7.1. Código para cuadraturas gaussianas . . . . . . . . . . . . . 125
5.7.2. Utilización del código . . . . . . . . . . . . . . . . . . . . . 126

6. ECUACIONES DIFERENCIALES ORDINARIAS 131


6.1. Definiciones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.1.1. Problemas de valores iniciales . . . . . . . . . . . . . . . . 132
6.1.2. Existencia y unicidad de solución de PVI . . . . . . . . . . 133
6.1.3. Estabilidad de un PVI . . . . . . . . . . . . . . . . . . . . 134
6.2. Número de condición de un PVI . . . . . . . . . . . . . . . . . . . 136
6.3. Métodos de un paso para la resolución numérica de PVI . . . . . 138
6.3.1. Un primer acercamiento: el método de Euler . . . . . . . . 138
6.3.2. Métodos de un paso: consistencia, estabilidad, convergencia
y orden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.3.3. Problemas stiff. A−estabilidad . . . . . . . . . . . . . . . . 142
6.3.4. Métodos de Runge–Kutta . . . . . . . . . . . . . . . . . . 144
6.3.5. Algunos métodos RK . . . . . . . . . . . . . . . . . . . . . 146
6.4. Métodos multipaso lineales para la resolución de PVI . . . . . . . 148
6.4.1. Generación de los métodos multipaso: métodos de Adams
y métodos de diferencias regresivas . . . . . . . . . . . . . 151
6.4.2. Orden y A–estabilidad de los métodos multipaso lineales . 152

A. Apéndice A 157
A.1. Derivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
A.2. Valor Extremo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
A.3. Teorema Rolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
A.4. Teorema Valor Medio . . . . . . . . . . . . . . . . . . . . . . . . . 161
A.5. Integración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
A.5.1. Integración Por Partes . . . . . . . . . . . . . . . . . . . . 164

xiii
A.5.2. Teoremas Fundamentales del Cálculo . . . . . . . . . . . . 165
A.6. Ecuaciones Diferenciales . . . . . . . . . . . . . . . . . . . . . . . 165
A.6.1. Solución de una Ecuación Diferencial . . . . . . . . . . . . 166
A.6.2. Ecuaciones Diferenciales de Primer Orden . . . . . . . . . 166
A.6.3. Ecuaciones Diferenciales Lineales Homogéneas con Coefi-
cientes Constantes de Enésimo Orden. . . . . . . . . . . . 166
A.7. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
A.7.1. Tipo de Matrices . . . . . . . . . . . . . . . . . . . . . . . 167
A.7.2. Adición y sustracción de matrices. . . . . . . . . . . . . . . 170
A.7.3. Multiplicación de Matrices . . . . . . . . . . . . . . . . . . 170
A.7.4. Determinantes . . . . . . . . . . . . . . . . . . . . . . . . . 171
A.7.5. Inversa de una matriz . . . . . . . . . . . . . . . . . . . . 171
A.7.6. Valores Propios (Autovalores) y Vectores Propios (Auto-
Vectores) . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
A.8. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . 176

B. Apéndice B 179
B.1. Cuestiones resueltas . . . . . . . . . . . . . . . . . . . . . . . . . . 179
B.1.1. 4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2 . . . . . . . . . . . . . . . . . 179
B.1.2. 7 ∧ 2 + 3 ∗ 4 + (2 ∗ 3 + 5) ∧ 2 . . . . . . . . . . . . . . . . . 179
B.1.3. Seleccione un nombre de variable que no sea reconocido en
MATLAB: . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
B.1.4. Seleccione un nombre de variable que no sea reconocido en
MATLAB: . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
B.1.5. ¿Cuál de las siguientes variables es tipo caracter? . . . . . 180
B.1.6. ¿Cuál de las siguientes variables es tipo lógico?: . . . . . . 180
B.2. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
B.3. Representaciones Gráficas . . . . . . . . . . . . . . . . . . . . . . 183
B.3.1. Comandos para Gráficos 2D . . . . . . . . . . . . . . . . . 183
B.3.2. Comandos para Gráficos 3D . . . . . . . . . . . . . . . . . 189
B.4. Programación con MATLAB . . . . . . . . . . . . . . . . . . . . . 192
B.4.1. Programación Secuencial . . . . . . . . . . . . . . . . . . . 192
B.4.2. Estructuras Condicionales . . . . . . . . . . . . . . . . . . 194
B.4.3. Estructura Repetitivas . . . . . . . . . . . . . . . . . . . . 198
B.5. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

C. Apéndice C 205
C.1. Ejemplo de la Serie de Taylor. . . . . . . . . . . . . . . . . . . . . 205
C.2. Grado de exactitud . . . . . . . . . . . . . . . . . . . . . . . . . . 206
C.3. Derivación númerica utilizando fórmulas de Taylor. . . . . . . . . 207
C.4. Fórmula de Richardson . . . . . . . . . . . . . . . . . . . . . . . . 224
C.5. Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . 226

D. Apéndice D 229
D.1. Implementaciones secciones 4.2.1-4.2.5. . . . . . . . . . . . . . . . 229
D.2. Fórmulas de cuadratura compuestas . . . . . . . . . . . . . . . . . 230
D.2.1. Rectángulo a Izquierda Compuesto . . . . . . . . . . . . . 231

xiv
D.2.2. Rectángulo a Derecha Compuesto . . . . . . . . . . . . . . 231
D.2.3. Punto Medio Compuesto . . . . . . . . . . . . . . . . . . . 231
D.2.4. Trapecios Compuesto . . . . . . . . . . . . . . . . . . . . . 231
D.2.5. Simpson Compuesto . . . . . . . . . . . . . . . . . . . . . 231
D.3. Ejemplos resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . 231
D.4. Método de Romberg . . . . . . . . . . . . . . . . . . . . . . . . . 244
D.5. Ejemplo de Cuadratura de Trapecios Adaptativa . . . . . . . . . . 245
D.6. Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . 246

E. Apéndice E 251
E.1. Ejemplos resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . 251
E.2. Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . 257

F. Apéndice F 263
F.1. Ejemplos (ejercicios resueltos) . . . . . . . . . . . . . . . . . . . . 263
F.2. Implementación en Matlab de los métodos de Runge–Kutta y de
Adams–Basforth. Órdenes ode . . . . . . . . . . . . . . . . . . . 280
F.2.1. Método de Runge–Kutta clásico . . . . . . . . . . . . . . . 281
F.2.2. Método de Adams–Bashforth de 4 pasos . . . . . . . . . . 282
F.2.3. Órdenes ode de Matlab . . . . . . . . . . . . . . . . . . . 283
F.3. Ejemplos usando Matlab . . . . . . . . . . . . . . . . . . . . . . . 284
F.4. Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . . 298
F.5. Algunas demostraciones . . . . . . . . . . . . . . . . . . . . . . . 302
F.5.1. Demostración del Teorema de Lax 6.2. . . . . . . . . . . . 302
F.5.2. Demostración del teorema sobre la convergencia de los méto-
dos de Runge–Kutta explı́citos (Teorema 6.4). . . . . . . . 302
F.6. Generación de los métodos de Adams . . . . . . . . . . . . . . . . 305

xv
xvi
Índice de tablas

1.1. Nomenclaturas de la derivada. . . . . . . . . . . . . . . . . . . . . 7


1.2. Fórmulas de derivación. . . . . . . . . . . . . . . . . . . . . . . . 8
1.3. Derivadas Sucesivas . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4. Clasificación de las ecuaciones diferenciales. . . . . . . . . . . . . 16
1.5. Ecuaciones diferenciales de primer orden. . . . . . . . . . . . . . . 17

2.1. Scripts vs Funciones . . . . . . . . . . . . . . . . . . . . . . . . . 50

3.1. Principales fórmulas de derivación numérica . . . . . . . . . . . . 64

4.1. Tabla de principales cuadraturas simples de Newton-Cotes. . . . . 93

5.1. Tabla de Parámetros para polinomios ortogonales mónicos. . . . . 118

A.1. Fórmulas de integración inmediatas. . . . . . . . . . . . . . . . . . 162

xvii
xviii
Índice de figuras

1.1. Función Continua. . . . . . . . . . . . . . . . . . . . . . . . . . . 2


1.2. Función Discontinua. . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Teorema de Conservación de Signo. . . . . . . . . . . . . . . . . . 3
1.4. Teorema de Bolzano. . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5. Teorema del Valor Intermedio (caso 1) . . . . . . . . . . . . . . . 5
1.6. Teorema del Valor Intermedio (caso 2) . . . . . . . . . . . . . . . 5
1.7. Interpretación Geométrica de la Derivada . . . . . . . . . . . . . . 7
1.8. Valores extremos en un intervalo [a, b] . . . . . . . . . . . . . . . . 9
1.9. Máximos y mı́nimos en un intervalo abierto (a, b) . . . . . . . . . 10
1.10. Teorema de Rolle . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.11. Función no derivable en un punto. . . . . . . . . . . . . . . . . . . 11
1.12. Teorema del Valor Medio . . . . . . . . . . . . . . . . . . . . . . . 13

2.1. Entorno de la interface de MATLAB o Ventana Principal . . . . . 28


2.2. Barra de herramientas del Current Folder . . . . . . . . . . . . . . 28
2.3. Interface de la ventana Command Window en MATLAB . . . . . 29
2.4. Ventana del workspace con 5 tipos de variables inicializadas . . . 29
2.5. Tipo de variables disponibles en MATLAB . . . . . . . . . . . . . 31
2.6. Ingreso de vectores fila y columna en MATLAB . . . . . . . . . . 32
2.7. Creación de un vector fila igualmente espaciado . . . . . . . . . . 33
2.8. Vectores fila de unos y ceros . . . . . . . . . . . . . . . . . . . . . 33
2.9. Transpuesta de un vector fila a un vector columna . . . . . . . . . 34
2.10. Consulta de los elementos de un vector . . . . . . . . . . . . . . . 34
2.11. Suma de un vector con otro vector y un escalar . . . . . . . . . . 35
2.12. Resta de un vector con otro vector y un escalar . . . . . . . . . . 35
2.13. Producto de vectores . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.14. División de vectores . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.15. Potencia de vectores . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.16. ingreso de una matriz 3 × 3 . . . . . . . . . . . . . . . . . . . . . 37
2.17. Creación de matrices 3 × 3 de unos y ceros . . . . . . . . . . . . . 37
2.18. Creación de una matriz identidad 3 × 3 . . . . . . . . . . . . . . . 37
2.19. Suma de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.20. Resta de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.21. Producto de matrices . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.22. Transpuesta de una matriz . . . . . . . . . . . . . . . . . . . . . . 39
2.23. Determinante de una matriz . . . . . . . . . . . . . . . . . . . . . 39
2.24. Inversa de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.25. Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

xix
2.26. Raı́ces de un polinomio . . . . . . . . . . . . . . . . . . . . . . . . 40
2.27. Polinomio a partir de las raı́ces . . . . . . . . . . . . . . . . . . . 41
2.28. Evaluación de un polinomio . . . . . . . . . . . . . . . . . . . . . 41
2.29. Producto de polinomios . . . . . . . . . . . . . . . . . . . . . . . 42
2.30. División de polinomios . . . . . . . . . . . . . . . . . . . . . . . . 42
2.31. Ventana del Editor en MATLAB . . . . . . . . . . . . . . . . . . 43
2.32. Ejemplo de un script editado en MATLAB . . . . . . . . . . . . . 43
2.33. Estructura Condicional Simple: Sı́ntaxis en MATLAB (izquierda)
y Diagrama de flujo (derecha) . . . . . . . . . . . . . . . . . . . . 44
2.34. Estructura Condicional Doble: Sı́ntaxis en MATLAB (izquierda) y
Diagrama de flujo (derecha) . . . . . . . . . . . . . . . . . . . . . 44
2.35. Estructura Condicional Múltiple: Sı́ntaxis en MATLAB (izquierda)
y Diagrama de flujo (derecha) . . . . . . . . . . . . . . . . . . . . 45
2.36. Estructura Condicional Múltiple SWITCH/CASE: Sı́ntaxis en MATLAB
(izquierda) y Diagrama de flujo (derecha) . . . . . . . . . . . . . . 45
2.37. Estructura de Repetición Indexada : Sı́ntaxis en MATLAB (iz-
quierda) y Diagrama de flujo (derecha) . . . . . . . . . . . . . . . 46
2.38. Estructura de Repetición Condicionada : Sı́ntaxis en MATLAB
(izquierda) y Diagrama de flujo (derecha) . . . . . . . . . . . . . . 47
2.39. Interrupción con BREAK: Sı́ntaxis en MATLAB (izquierda) y Dia-
grama de flujo (derecha) . . . . . . . . . . . . . . . . . . . . . . . 47
2.40. Interrupción con CONTINUE: Sı́ntaxis en MATLAB (izquierda)
y Diagrama de flujo (derecha) . . . . . . . . . . . . . . . . . . . . 48
2
2.41. Creación de la función en lı́nea f (x) = e−x . . . . . . . . . . . . . 48
2
2.42. Evaluación de la función en lı́nea f (x) = e−x . . . . . . . . . . . 49
2
2.43. Gráfica de la función en lı́nea f (x) = e−x . . . . . . . . . . . . . 49
2.44. Declaracion de una función en MATLAB . . . . . . . . . . . . . . 50

3.1. Funciones f (x) y T4,0 [ex − sen(x)](x). . . . . . . . . . . . . . . . . 55

4.1. Interpretación geométrica del Rectángulo a Izquierda . . . . . . . 82


4.2. Interpretación geométrica del Rectángulo a Derecha . . . . . . . . 83
4.3. Interpretación geométrica de la Regla del Punto Medio . . . . . . 83
4.4. Interpretación geométrica de la Regla de los Trapecios . . . . . . 85

6.1. Interpretación geométrica del método de Euler . . . . . . . . . . . 139

A.1. Valores máximos y mı́nimos de una función continua en un inter-


valo cerrado [0, 3] . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
A.2. Extremos relativos en una función . . . . . . . . . . . . . . . . . . 159
A.3. Ejemplo de Aplicación del Teorena de Rolle . . . . . . . . . . . . 160
A.4. Ejemplo de aplicación del Teorema del Valor medio. . . . . . . . . 161

B.1. Matriz de 3 × 3 de números aleatorios enteros entre 0 y 10 . . . . 181


B.2. Rango y norma de una matriz . . . . . . . . . . . . . . . . . . . . 181
B.3. Valores y vectores propios . . . . . . . . . . . . . . . . . . . . . . 182
B.4. Descomposición QR . . . . . . . . . . . . . . . . . . . . . . . . . . 182
B.5. Descomposición LU . . . . . . . . . . . . . . . . . . . . . . . . . . 183

xx
B.6. Comando plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
B.7. Función y = sen(x) . . . . . . . . . . . . . . . . . . . . . . . . . . 184
B.8. Comando hold on . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
B.9. Funciones y = sen(x) y z = cos(x) . . . . . . . . . . . . . . . . . 185
B.10.Comando hold off . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
B.11.Grafica de la función w = tan(x) . . . . . . . . . . . . . . . . . . 186
B.12.Comando plot con tres argumentos . . . . . . . . . . . . . . . . . 186
B.13.Trazada con asteriscos rojos . . . . . . . . . . . . . . . . . . . . . 187
B.14.Comandos grid, xlabel, ylabel y title . . . . . . . . . . . . . . . . 187
B.15.Función y = sen(x) con cuadrı́cula, tı́tulo y etiquetas en los ejes . 188
B.16.Comando area para presentar el área bajo la curva . . . . . . . . 188
B.17. Área bajo la curva de una función . . . . . . . . . . . . . . . . . . 189
B.18.Uso del comando plot3 . . . . . . . . . . . . . . . . . . . . . . . . 189
B.19.Gráfica de una Hélice . . . . . . . . . . . . . . . . . . . . . . . . . 190
B.20.Rejilla en el plano xy para el dominio 0 ≤ x ≤ 5 y 0 ≤ y ≤ 5 . . . 190
B.21.Uso de los comandos meshgrid y mesh . . . . . . . . . . . . . . . 191
B.22.Gráfica de una superficie en 3D . . . . . . . . . . . . . . . . . . . 191
B.23.Rectángulo inscrito en una parábola . . . . . . . . . . . . . . . . . 192
B.24.Cálculo del área máxima de un rectángulo inscrito en una parábola 192
B.25.Ejecución del Programa de la Figura B.24 . . . . . . . . . . . . . 193
B.26.Forma de la ventana . . . . . . . . . . . . . . . . . . . . . . . . . 193
B.27.Cálculo de las dimensiones de la ventana de la Figura B.26 . . . . 194
B.28.Ejecución del Programa B.27 . . . . . . . . . . . . . . . . . . . . 194
B.29.Descomposición de un número de 3 cifras . . . . . . . . . . . . . . 195
B.30.Ejecución del Programa de la Figura B.29 . . . . . . . . . . . . . 195
B.31.Clasificación de triángulos basado en las dimensiones de sus lados 196
B.32.Ejecución del Programa de la Figura B.31 . . . . . . . . . . . . . 196
B.33.Conversion entre temperaturas Celsius y Farenheit . . . . . . . . . 197
B.34.Ejecución del Programa de la Figura B.33 . . . . . . . . . . . . . 197
B.35.Descomposición de factores primos . . . . . . . . . . . . . . . . . 198
B.36.Ejecución del Programa de la Figura B.35 . . . . . . . . . . . . . 198
B.37.Conteo de lanzamientos de un dado hasta obtener un 5 . . . . . . 199
B.38.Ejecución del Programa de la Figura B.37 . . . . . . . . . . . . . 199
B.39.Sumatoria den números pares hasta un número divisible para 5 . 200
B.40.Ejecución del Programa de la Figura B.39 . . . . . . . . . . . . . 200
B.41.Función que calcula las raı́ces de un polinomio de la forma ax2 +
bx + c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
B.42.Aplicación del comando help para la función raı́ces y su invoca-
ción desde la Ventana de Comandos. . . . . . . . . . . . . . . . . 201
B.43.Función que calcula calcula el área y el volumen de un cilindro . . 202
B.44.Aplicación del comando help para la función calcula cilindro y
su invocación desde la Ventana de Comandos. . . . . . . . . . . . 202
B.45.Cilindro de radio r = 5 y altura h = 10 . . . . . . . . . . . . . . . 203

C.1. Funciones f (x) y T3,π/2 [4x · sen(x)](x). . . . . . . . . . . . . . . . 206

D.1. Representación de f 00 (t) = −2e−t (5 cos(5t) + 12sen(5t)). . . . . . . 234

xxi
D.2. Representación de |f 00 (t)|. . . . . . . . . . . . . . . . . . . . . . . 235
D.3. Representación de f (4) (t) = e−t (480 cos(5t) + 476sen(5t)). . . . . . 236
D.4. Representación de |f (4) (t)|. . . . . . . . . . . . . . . . . . . . . . . 236
D.5. Cuadratura RIC con 6 nodos . . . . . . . . . . . . . . . . . . . . . 238
D.6. Cuadratura RIC con 11 nodos . . . . . . . . . . . . . . . . . . . . 238
D.7. Cuadratura RDC con 11 nodos . . . . . . . . . . . . . . . . . . . 239
D.8. Punto Medio Compuesto con 11 nodos . . . . . . . . . . . . . . . 240
D.9. Trapecios Compuesto con 5 nodos . . . . . . . . . . . . . . . . . . 241
D.10.Trapecios Compuesto con 11 nodos . . . . . . . . . . . . . . . . . 241

E.1. Gráfica de |f (10) (t)| en el intervalo [−1, 1]. . . . . . . . . . . . . . 252


E.2. Gráfica de |f (10) (t)| en el intervalo [0, 10]. . . . . . . . . . . . . . . 257

F.1. Región de A-estabilidad del método de Euler modificado . . . . . 266


F.2. Región de A-estabilidad del método de Runge–Kutta clásico . . . 268
F.3. Dibujo de la solución (y de su derivada) del PVI planteado en
Ejemplo F.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
F.4. Dibujo de la región A-Estabilidad del método de Adams–Moulton
de 3 pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
F.5. Solución del PVI (F.4). . . . . . . . . . . . . . . . . . . . . . . . 285
F.6. Solución del PVI con ode23t . . . . . . . . . . . . . . . . . . . . . 286
F.7. Población de linces y conejos en un periodo de 10 años . . . . . . 289
F.8. Ciclo de la vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
F.9. Plano fase en [0,10] . . . . . . . . . . . . . . . . . . . . . . . . . . 290
F.10.Plano fase en [0,20] . . . . . . . . . . . . . . . . . . . . . . . . . . 290
F.11.Región de A–estabilidad del método de Adams–Bashforth de 4 pasos.291
F.12.Solución numérica del PVI usando el método AB de 4 pasos. . . . 292
F.13.Solución numérica del PVI (F.6). . . . . . . . . . . . . . . . . . . 293
F.14.Evolución de las poblaciones del PVI (F.8). . . . . . . . . . . . . . 297
F.15.Evolución de las poblaciones con datos diferentes. . . . . . . . . . 297

xxii
Capı́tulo 1

CONCEPTOS PRELIMINARES

Autores: Maritza A. Pinta1 , Fausto F. Redrován2


1,2 Unidad Académica de Ingenierı́a Civil, Universidad Técnica de Machala, Ecuador.
1 mpinta@utmachala.edu.ec, 2 fredrovan@utmachala.edu.ec

El presente capı́tulo, tiene como propósito hacer un repaso de conceptos pre-


paratorios, necesarios para el estudio de Derivación e Integración numérica, y
de los métodos numéricos para resolver ecuaciones diferenciales ordinarias. Para
ello, durante este capı́tulo se abordarán conceptos básicos de funciones continuas,
derivación, integración, ecuaciones diferenciales y matrices.
En cada temática se hará en primer lugar una exposición teórica, incluyendo
en unos casos, gráficas, tablas y demostraciones. Luego se presentarán ejemplos
y ejercicios propuestos, los mismos que, por cuestión de espacio, se los ha hecho
constar en el apéndice correspondiente a este capı́tulo.

1.1. Teoremas importantes para funciones con-


tinuas.
Una función continua se utiliza para representar valores que en el mundo real
cambian de manera continua, es decir, sin que haya saltos entre un valor a otro,
como por ejemplo la temperatura con respecto al tiempo, en la que llegar de 23◦
en un tiempo t1 a 25◦ en un tiempo t2 , los valores de esta variable T (t) tuvie-
ron que haber pasado por toda la extensión de números reales en el intervalo
t1 < t < t2 , tal como se muestra en la Figura 1.1, no se puede concebir que la
temperatura simplemente haya saltado de un valor a otro porque ese no es su
comportamiento natural (ver Figura 1.2).

Entonces, por definición [12], una función T (t) es continua en un punto tc si


se satisfacen las tres condiciones siguientes:

1. T (t) está definida en c.


2. lı́m T (t) existe.
t→tc
3. lı́m T (t) = T (tc ).
t→tc

1
Figura 1.1: Función Continua.

T(t) es continua en t1 < t < t2


Fuente: Elaboración propia.

Figura 1.2: Función Discontinua.

Existen tres condiciones para las que T (t) no es continua en t = c.

Fuente: Tomado de [12]

En consecuencia y en general, según [12], una función f (x) es continua en un


intervalo abierto (a, b) si es continua en cada punto entre a y b, es decir, si cada
punto en el intervalo cumple las tres condiciones establecidas.
Uno de los primeros teoremas que se debe enunciar, conocida la definición de
función continua, es el de Bolzano; desde esta afirmación se fundamentan otros
resultados importantes de funciones continuas, [6].

1.1.1. Conservación del signo de las funciones continuas


Antes de demostrar el teorema de Bolzano, se necesita demostrar el teorema
de conservación del signo en funciones continuas que indica:

Teorema 1.1. [1] Si f es una función continua en c y suponemos que f (c) 6= 0,


entonces existe un intervalo (c − δ, c + δ) en el que f tiene el mismo signo que

2
f (c).

Demostración: Supóngase primero que f (c) > 0, como f es continua, ∀ε >


0, ∃δ > 0, tal que: f (c) − ε < f (x) < f (c) + ε, siempre que c − δ < x < c + δ.

f (c)
Tomando el δ correspondiente a ε = entonces la desigualdad anterior se
2
transforma en:
f (c) f (c)
f (c) − < f (x) < f (c) + , siempre que c − δ < x < c + δ.
2 2
f (c) 3f (c)
< f (x) < , siempre que c − δ < x < c + δ . Ver Figura 1.3:
2 2

Figura 1.3: Teorema de Conservación de Signo.


Aquı́ f (x) > 0 para x próximo a c pues f (c) > 0.

Fuente: Tomado de [1]

De lo anterior se deduce que f (x) > 0 en este intervalo, y por tanto, f (x) y f (c)
tienen el mismo signo, que es lo que se querı́a demostrar. Para la segunda parte,
f (c)
si f (c) < 0 se toma δ correspondiente δ = − y se llega a la misma conclusión.
2
Esto implica además, según [1], que si existe continuidad a un lado de c, entonces
existe el correspondiente intervalo unilateral [c, c + δ) o (c − δ, c] en el cual f tiene
el mismo signo que f (c), sin importar la forma de la curva de la función, tal y
como se aprecia en la Figura 1.3.

1.1.2. Teorema de Bolzano


Lo que demuestra este teorema es que si se tiene una función continua en un
intervalo dado [a, b], de tal forma que f (a) y f (b) tienen signos diferentes, es decir,
f (a) f (b) < 0, entonces la función debe cortar el eje x en al menos un punto entre
a y b (es lo que se denomina un teorema de existencia, pues no proporciona un
método para determinar dicho punto) para más detalle ver [1], [12].

Teorema 1.2. Sea f continua en el intervalo [a, b] y dado que f (a)f (b) < 0, ∃ c
∈ (a, b), f (c) = 0

Demostración: Para la demostración se siguen las ideas de [1], por lo que se


tiene una función f (x) que cumple tres condiciones como en la Figura 1.4:

3
Figura 1.4: Teorema de Bolzano.

Fuente: Tomado de [1].

1. f (x) es continua en [a, b].

2. f (a) > 0.

3. f (b) < 0.

Nota 1.1. Se obvia la demostración cuando f (a) < 0 y f (b) > 0 por ser de igual
resolución.

Se define un conjunto C = {x ∈ [a, b]/f (x) ≥ 0}, que representa a todos los
puntos del intervalo que hacen que la función sea positiva, f (x) ≥ 0.
Al ser C 6= ∅ y C ⊂ [a, b], se dice que C es acotado, y por lo tanto tiene un
elemento c ∈ [a, b] que es la mı́nima cota superior o supremo de dicho conjunto,
c = Sup(C).
Como c ∈ [a, b], y dado que f (x) es continua en [a, b], entonces f (x) es continua
en c, y por el Teorema 1.1 se asegura que ∃(c − δ, c + δ) donde f (x) y f (c) tienen
el mismo signo.
Ahora, si suponemos que f (c) < 0, entonces por el Teorema 1.1 , f (x) < 0
en (c − δ, c + δ), lo que implicarı́a que el conjunto C, cuyos puntos hacen que
f (x) > 0, no podrı́a incluir al intervalo (c − δ, c + δ) pues aquı́ la función es
negativa, y por tanto como mucho tendrı́amos que el punto c − δ serı́a ahora su
mı́nima cota superior, y dado que c − δ < c < c + δ, harı́a que el punto c deje de
ser el supremo, lo que contradice nuestro supuesto inicial de que c = Sup(c). De
esto se deduce que f (c) < 0 es falso.
Ahora vamos a suponer por el contrario que f (c) > 0, entonces por el Teorema
1.1, f (x) > 0 en (c − δ, c + δ), lo que implicarı́a que el conjunto C, cuyos puntos
hacen que f (x) > 0, incluye al intervalo (c−δ, c+δ), y por tanto tendrı́amos que el
punto c+δ serı́a ahora su nueva mı́nima cota superior, y dado que c−δ < c < c+δ,
harı́a que el punto c deje de ser el supremo, lo que también contradice nuestro
supuesto inicial de que c = Sup(C). De esto se deduce que f (c) > 0 es falso
también.
En consecuencia, si f (c) < 0 y f (c) > 0 son afirmaciones falsas, entonces
f (c) = 0, con lo que queda demostrado el teorema de Bolzano. (Para más detalle
ver [1], [14]). Otro resultado de las propiedades de una función continua es el
Teorema del valor intermedio.

4
1.1.3. Teorema del valor intermedio (o Propiedad de Dar-
boux)
Este teorema es uno de los más importantes también respecto a la continuidad
de las funciones, y asegura la existencia de al menos un número c que cumple lo
siguiente (también es un teorema de existencia), (Ver [12]):

Teorema 1.3. Si f (x) es continua en el intervalo [a, b], donde f (a) 6= f (b) y k
es cualquier número tal que f (a) < k < f (b) (ver Figura 1.5) o f (b) < k < f (a)
(ver Figura 1.6), entonces existe al menos un número c en (a, b) tal que f (c) = k.

Este teorema establece que si x recorre todos los valores desde a hasta b,
entonces f (x) debe asumir todos los valores entre f (a) y f (b), debido a que f es
continua en el intervalo.
En las figuras 1.5 y 1.6 se puede apreciar los posibles casos en los que una
función puede ser continua en un intervalo [a, b].

Figura 1.5: Teorema del Valor Intermedio (caso 1)

f continua en [a, b], f (a) < k < f (b).


Fuente: Elaboración propia.

Figura 1.6: Teorema del Valor Intermedio (caso 2)

f continua en [a, b], f (b) < k < f (a).


Fuente: Elaboración propia.

5
Demostración: Sea f (x) continua en [a, b] y f (a) < k < f (b), entonces supone-
mos que (Ver [1]):
g(x) = f (x) − k, y por tanto también g(x) será continua en [a, b].
Por tanto, dado que f (a) < k, y como g(a) = f (a) − k, entonces g(a) < 0.
Ası́ mismo, dado que f (b) > k, y como g(b) = f (b) − k, entonces g(b) > 0.
Entonces, como tenemos que:

1. g(x) es continua en [a, b].


2. g(a) < 0.
3. g(b) > 0.

Aplicando el teorema 1.2 (teorema de Bolzano), podemos concluir que:

∃c ∈ [a, b], g(c) = 0.


y como sabemos que:
g(c) = f (c) − k.
Tenemos, reemplazando
0 = f (c) − k.
De donde:
f (c) = k
Cabe señalar, y como se puede apreciar, el teorema del valor intermedio es una
generalización del teorema de Bolzano.

Nota 1.2. Se puede hacer una demostración similar cuando f (b) < k < f (a)

1.2. Derivación
Definicion 1.1. Se define a la derivada de una función y = f (x) en el punto
x = a, como la razón de cambio instantáneo de y con respecto a x, cuando x = a.
(Ver [17]).

1.2.1. Interpretación Geométrica de la Derivada


Para explicar el concepto geométrico de derivada, haremos uso de la estrategia
utilizada por Pierre de Fermat y Newton [8]. Sea la función real f , continua en
un intervalo abierto que contiene a los puntos A y B, y, AB una secante a la
misma, como consta en la Figura 1.7.

En la medida que el punto A se acerca al punto B, la distancia horizontal h


disminuye, hasta que, cuando h tiende a ser cero, la secante BA se convierte en
la tangente a la curva en el punto A, y su pendiente viene a ser la derivada de la
función en A.

df f (x + h) − f (x)
= lı́m (1.1)
dx h→0 h

6
Figura 1.7: Interpretación Geométrica de la Derivada

Fuente: Elaboración propia

Por lo que, geométricamente se define a la derivada de una función en un punto


dado, como la pendiente de la tangente a la función en ese punto.

Las nomenclaturas más utilizadas y heredadas de los precursores del cálculo


diferencial, son:

Tabla 1.1: Nomenclaturas de la derivada.

Notacion Se lee Matemático


dy
La derivada de y con respecto a x Gottfried
dx
df Leibniz
La derivada de la función f con respecto a x
dx0
y y prima Jhoseph-Louis
0
f (x) f prima Lagrange
D, y La derivada de y con respecto a x Leonhard
D, f La derivada de la función f con respecto a x Paul Euler
Fuente: Tomado de [16]

1.2.2. Fórmulas de derivación


En la Tabla 1.2 se resumen las principales fórmulas de derivación, siendo: a y
k constantes; u(x), v(x) y w(x) son funciones de x, pero; para ahorrar la notación
vamos a obviar la dependencia en x y solamente vamos a escribir u, v y w.

(Ver Ejemplos A.1 - A.5)

7
Tabla 1.2: Fórmulas de derivación.
f(x) f ’(x) f(x) f ’(x)
u0
k 0 loga u u lna
u0
x 1 ln u u
xn nx n−1
uv v.u u + uv . ln u.v 0
v−1 0
0 0 0
u±v±w u ± v ± w senu cos u.u0
u.v u.v 0 + v.u0 cos u −senu.u0
v.u0 −u.v 0
u
v v2
tan u sec2 u.u0
n−1 0
un n.u .u cot u − csc2 u.u0
0
au u
a ln a.u sec u sec u. tan u.u0
eu eu .u0 csc u − csc u. cot u.u0
Fuente: Elaboración propia.

1.2.3. Segunda Derivada y Derivadas Sucesivas


Definicion 1.2. Sea y 0 la primera derivada de la función y = f (x), la segunda
derivada y 00 , se define como la derivada de esta primera derivada. Es decir:

d(y 0 )
y 00 =
dx
Si aplicamos la misma definición, y derivamos a la segunda derivada, obten-
dremos la tercera derivada de la función original, y ası́ sucesivamente. En la Tabla
1.3 sintetizaremos la nomenclatura y definición de las derivadas sucesivas:

Tabla 1.3: Derivadas Sucesivas


Definición Notación Se lee
dy df 0 0
, , y , f (x), D xy, La primera derivada de y con
dx dx respecto a x
Dx f
d2 y d

dy
 d2 y d2 f 00 00
, , y , f (x), La segunda derivada de y
= dx2 dx22 2
dx 2 dx dx Dx y, Dx f con respecto a x

d3 y d

d2 y
 d3 y d3 f 000 000
, , y , f (x), La tercera derivada de y
= dx3 dx33
dx 3 dx dx2 Dx y, Dx3 f con respecto a x
4 4
d4 y d d3 y
  d y d f IV IV
, , y , f (x), La cuarta derivada de y
= dx4 dx44
dx4 dx dx3 Dx y, Dx4 f con respecto a x
n n
d y d f n n
dn y d dn−1 y
 
, , y , f (x), La enésima derivada de y
= dxn dxnn n
dxn dx dxn−1 Dx y, Dx f con respecto a x
Fuente: Tomado de [16]

(Ver Ejemplo A.6)

8
1.3. Valor extremo
Se debe indicar que los mı́nimos y máximos de una función en un intervalo se
denominan valores extremos de dicha función en el intervalo, y también se conocen
como mı́nimo absoluto y máximo absoluto en el intervalo, respectivamente, [12].
Entonces, si f es continua en un intervalo I y definida en un punto c y en un
punto d, tenemos:
Definicion 1.3.
1. Si ∀x ∈ I, f (x) ≥ f (c) ⇒ f (c) es el mı́nimo de f en I (mı́nimo absoluto).

2. Si ∀x ∈ I, f (x) ≤ f (d) ⇒ f (d) es el máximo de f en I (máximo absoluto).


En la Figura 1.8 se puede apreciar lo enunciado: si I = [a, b], entonces f (x)
tiene un mı́nimo absoluto en c y un máximo absoluto en d.

Figura 1.8: Valores extremos en un intervalo [a, b]

Fuente: Elaboración Propia

Con esta definición, el teorema del valor extremo queda enunciado de la si-
guiente manera:

Teorema 1.4. ([12, Th. 3.1]) Si f es continua en el intervalo cerrado [a, b], en-
tonces f tiene tanto un mı́nimo como un máximo en el intervalo (ver Figura 1.8).

Este teorema, al igual que el del valor intermedio, es un teorema de existencia


pues solo indica que existen valores máximos y mı́nimos mas no cómo determi-
narlos, para más detalle ver [12].

(Ver Ejemplo A.7)

Definicion 1.4. Extremos Relativos o Locales (Ver [18])


Una función f tiene un valor máximo relativo (máximo local) en un
punto interior c de su dominio si f (x) ≤ f (c), ∀x en algún intervalo abierto
que contenga a c.

9
Una función f tiene un valor mı́nimo relativo (mı́nimo local) en un punto
interior d de su dominio si f (x) ≥ f (d)∀x en algún intervalo abierto que
contenga a d.

La Figura 1.9 describe esta definición:

Figura 1.9: Máximos y mı́nimos en un intervalo abierto (a, b)

Fuente: Tomado de [18]

Estos puntos c y d, donde se localizan un máximo relativo o un mı́nimo relati-


vo, respectivamente, se denominan puntos crı́ticos. En estos puntos, la función
puede tener una tangente, en cuyo caso su derivada en ese punto serı́a cero,
f 0 (d) = 0, o puede no ser derivable en ese punto c (ver más información en [12]).
Dicho de otra forma:

Si f no es derivable en x = c, entonces, por definición, c es un punto crı́tico.

Si f es derivable en x = d y f 0 (d) = 0, entonces, por definición, d es un


punto crı́tico.

(Ver Ejemplo A.8)

1.4. Teorema de Rolle.


El Teorema 1.4 (Teorema del valor extremo) indica que una función continua
en un intervalo cerrado [a, b] debe tener un mı́nimo y un máximo absoluto en
dicho intervalo, pero estos pueden ocurrir en los puntos extremos [12], como se
puede apreciar en la Figura A.1 del Apéndice A.2, donde el máximo absoluto está
en el punto (3, 5), es decir, en el extremo del intervalo [0, 3].

Teorema 1.5. El teorema de Rolle establece las condiciones para que un valor
extremo esté en el interior y no en los puntos terminales del intervalo cerrado
(ver [10] [12]), es decir, la función f tiene una tangente horizontal en dicho punto

10
interior, como se puede apreciar en la Figura 1.10:

Sea f ,

1. Continua sobre un intervalo cerrado [a, b].

2. Derivable en el intervalo abierto (a, b).

3. Y f (a) = f (b).

Entonces ∃c ∈ (a, b), tal que f 0 (c) = 0, por donde pasa la tangente horizontal.

Figura 1.10: Teorema de Rolle

Valor extremo (c, f (c)) en el interior de (a, b)


Fuente: Elaboración propia

Cabe señalar que la continuidad de una función en un intervalo [a, b] no garan-


tiza que sea derivable como se puede apreciar en la Figura 1.11 donde la función
f (x) = |x − 2| es continua en [1, 3], y f (1) = f (3), pero f no es derivable en x = 2
puesto que los lı́mites de la derivada por la izquierda y derecha de este punto son
∂|x − 2| ∂|x − 2|
diferentes lı́m− = −1 y lı́m+ = 1.
x→2 ∂x x→2 ∂x

Figura 1.11: Función no derivable en un punto.

Fuente: Elaboración Propia.

Entonces se pueden tener funciones con máximos y mı́nimos relativos (loca-


les) como en la Figura 1.11, es decir, con puntos crı́ticos (x = 2), pero que no

11
produzcan tangentes horizontales, (ver [12]).

Demostración:
1. Si f (a) = f (b) = d ∧ f (x) es constante, es decir, f (x) = d ∀ x ∈ [a, b],
entonces f 0 (x) = 0 (la derivada de una constante es cero) y por tanto si
c ∈ (a, b) ⇒ f 0 (c) = 0.
2. Si f (a) = f (b) = d ∧ ∃x ∈ (a, b), f (x) > d, por el teorema del valor extremo
(teorema 1.4) f tiene un máximo en algún punto c en el intervalo (a, b) y
dado que f (c) > d, este máximo no podrı́a estar en d, es decir, f tiene un
máximo en el interior del intervalo (a, b) además de que c es punto crı́tico
de f , y por tal razón, f 0 (c) = 0 debido a que f es derivable en (a, b).
3. Si f (a) = f (b) = d ∧ ∃x ∈ (a, b), f (x) < d, por el teorema del valor extremo
(Teorema 1.4) f tiene un mı́nimo en algún punto c en el intervalo (a, b) y
dado que f (c) < d, este mı́nimo no podrı́a estar en d, es decir, f tiene un
mı́nimo en el interior del intervalo (a, b) además de que c es punto crı́tico
de f , y por tal razón, f 0 (c) = 0 debido a que f es derivable en (a, b).
(Ver Ejemplo A.9)

1.5. Teorema del Valor Medio.


Teorema 1.6. Si f es continua en el intervalo cerrado [a, b] y derivable en el
intervalo abierto (a, b), entonces existe un número c en (a, b) tal que (ver [12]):

f (b) − f (a)
f 0 (c) = (1.2)
b−a
Geométricamente el teorema del valor medio garantiza la existencia de una
recta tangente paralela a la secante que pasa por (a,f(a)) y (b,f(b))” (Para más
información ver [5] [12]).

Demostración [12]:
Según la Figura 1.12 la ecuación de la recta secante que pasa por (a, f (a)) y
(b, f (b)) es:

f (b) − f (a)
y= (x − a) + f (a),
b−a
Sea
g(x) = f (x) − y.
1.
f (b) − f (a)
g(x) = f (x) − (x − a) − f (a).
b−a
Evaluando a y b en g(x), se tiene:

f (b) − f (a)
g(a) = f (a) − (a − a) − f (a) = 0.
b−a

12
Figura 1.12: Teorema del Valor Medio

Fuente: Elaboración Propia

f (b) − f (a)
g(b) = f (b) − (b − a) − f (a) = 0.
b−a
Por lo que:
2. g(a) = g(b) = 0.
3. Y como f es continua en [a, b] y derivable en (a, b), entonces g es continua
en [a, b] y derivable en (a, b).

Entonces, por las condiciones (2) y (3) se puede aplicar el teorema de Rolle (Teo-
rema 1.5) sobre la función g(x) en (1), es decir, entonces ∃c ∈ (a, b), tal que
g 0 (c) = 0, y de ahı́ que derivando g(x) en (1) se tiene:

f (b) − f (a)
g 0 (x) = f 0 (x) − .
b−a
Evaluando en c y según el teorema de Rolle, se tiene

f (b) − f (a)
g 0 (c) = f 0 (c) − = 0.
b−a
Despejando,
f (b) − f (a)
f 0 (c) =
b−a
Que es lo que se querı́a demostrar.

(Ver Ejemplo A.10)

1.6. Integración.
Definicion 1.5. La integración es un proceso contrario a la derivación, siendo
la función F (x) la primitiva o antiderivada de la función f (x) en un intervalo I,

13
si F 0 (x) = f (x) para todo x del intervalo I. La integral indefinida se representa
por (Ver [18]): Z
f (x)dx = F (x) + c.

Donde:
cR = Constante de integración.
= Signo de integración.
f (x) = Integrando.
dx = Diferencial de la variable independiente.

(Ver en Apéndice A la Tabla A.1 de las principales fórmulas de


integración inmediatas)

(Ver Ejemplos A.11- A.14)

1.6.1. Integral Definida


Teorema 1.7. ([17, Th. 3]) Si f es continua sobre [a, b], o si f tiene solo un
número finito de discontinuidades de saltos, entonces f es integrable sobre [a, b];
Rb
es decir, existe la integral definida si a f (x)dx < +∞.

Definicion 1.6. [18] Sea f una función continua en el intervalo [a, b], y n subin-
tervalos de igual ancho, ∆x = (b − a)/n. Sean x0 (= a), x1 , x2 , ..., xn (= b) los
puntos extremos de estos subintervalos y sean x∗1 , x∗2 , ..., x∗n los puntos muestra
en estos subintervalos, de modo que x∗i se encuentre en el i−ésimo subintervalo
[xi−1 , xi ]. Entonces la integral definida de f , desde a hasta b, es:
Z b n
X
f (x)dx = lı́m f (x∗i )∆x
a n→∞
i=1

El resultado de la integral definida es un número y abordaremos su resolución


a continuación, al tratar el segundo problema fundamental del cálculo.

1.6.2. Teoremas Fundamentales del Cálculo


Primer Teorema Fundamental del Cálculo
Rx
Teorema 1.8. [19] Si f es continua en [e, b] entonces, f (x) = e
f (t)dt es con-
tinua en [e, b] y diferenciable en (e, b) y su derivada es f (x).
Z x
0 d
F (x) = f (x)dt = f (x).
dx e

(Ver Ejemplo A.17)

14
Segundo Teorema Fundamental del Cálculo

Teorema 1.9. ([18, Th. 4]) Si f es continua en todos los puntos de [a, b] y F
es cualquier primitiva de f en [a, b], entonces,
Z b
f (x)dx = F (b) − F (a).
a

(Ver Ejemplo A.18)

1.6.3. Integración Por Partes


La integración por partes, es una de la técnica más utilizada, cuando no es
posible integrar directamente con las formulas inmediatas.
R
Definicion 1.7. Sea las funciones u(x), v(x), la integral u.dv es igual, al pro-
ducto de las dos funciones menos la integral de v por du. Es decir:

Z Z
u.dv = u.v − v.du. (1.3)

Se debe elegir adecuadamente u yRdv, considerando que dv debe ser siempre


posible de integrar y que, la integral v.du, sea menos compleja que la integral
original. De no ser ası́, posiblemente escogimos erróneamente u y dv, ó, no es
posible integrar con esta técnica.

(Ver Ejemplo A.15, A.16)

1.7. Ecuaciones Diferenciales.


Una ecuación, se llama diferencial, cuando contiene derivadas o diferenciales,
y, tiene dos elementos importantes: el orden y el grado.
Orden de una ecuación diferencial: Está dado por la derivada de mayor orden
presente en la ecuación.
Grado de una ecuación diferencial: Está dado por el mayor exponente al que
está elevado la derivada de mayor orden.

(Ver Ejemplo A.19)

1.7.1. Tipos de Ecuaciones Diferenciales


En la Tabla 1.4 tenemos las clases más importantes de ecuaciones diferenciales:

15
Tabla 1.4: Clasificación de las ecuaciones diferenciales.

Clasificación
Nombre Caracterı́stica
Según
Contiene derivadas de una o más variables
Tipo Ordinarias dependientes con respecto a una sola,variable
independiente.
Contiene derivadas parciales de una o más
Parciales variables dependientes con respecto a dos
o más,variables independientes.
Los coeficientes de la variable dependiente y
sus derivadas son constantes o funciones de x.
Lineales
Grado La variable dependiente y todas sus derivadas
son de primer grado.
No lineales Las que no cumplen las condiciones de las lineales.
Primer orden,
De acuerdo con la derivada de mayor orden
Orden Segundo orden,
presente en la ecuación diferencial.
Tercer orden, etc
Fuente: Tomado de [3]

A continuación nos ocuparemos especı́ficamente de las Ecuaciones Diferencia-


les Ordinarias (EDO).

1.7.2. Solución de una Ecuación Diferencial


Solución general: Es el conjunto de todas las funciones que la verifican, y,
que en general son familias n-paramétricas de curvas, para más detalles ver [15].
En estas soluciones aparecen tantas constantes como orden tiene la ecuación.

(Ver Ejemplo A.20)

Solución particular: Es la función que satisface a la ecuación diferencial,


siendo una de las soluciones generales, en la que se ha definido el valor de las
constantes. En el ejemplo anterior una solución particular seria y = 2e−x , donde
C = 2, lo cual se puede igualmente verificar con el proceso anterior.

1.7.3. Ecuaciones Diferenciales de Primer Orden


En la Tabla 1.5 sintetizamos los principales tipos de E.D.O. de primer orden,
su forma y solución.

16
Tabla 1.5: Ecuaciones diferenciales de primer orden.

Tipo Forma Solución


1
dy Hacer p(y) = (y),
Variables h
= g(x)h(y) separar e integrar ambos lados de:
Separables [20] dx
p(y)dy = g(x)dx
y
Sea, = v, hacer
x
dy y = vx, ó x = vy,
Homogéneas [3] + f (x, y) = 0
dx reemplazar en la ecuación y resolver como
ecuación de
Zvariables separables. 
Lineal no dy R R
+ P (x)y = Q(x) y = e− P (x)dx
(Q(x)e P (x)dx
dx + C)
homogénea[9] dx
Fuente: Elaboración propia.

(Ver Ejemplo A.21)

1.7.4. Ecuaciones Diferenciales Lineales Homogéneas con


Coeficientes Constantes de n−ésimo Orden.
Son ecuaciones de la forma:

an y (n) + an−1 y (n−1) + · · · + a2 y 00 + a1 y 0 + a0 y = 0.

Para resolverlas, de acuerdo con [3], se realizan los siguientes pasos:


1. Se escribe la ecuación algebraica caracterı́stica:

an rn + an−1 rn−1 + · · · + a2 r2 + a1 r + a0 = 0.

2. Obtenemos las raı́ces de esta ecuación caracterı́stica.


3. Si las raı́ces son reales e iguales, la solución es:

y = erx (C1 + C2 x + C3 x2 + · · · + Cn xn−1 ).

4. Si las raı́ces son reales, pero no todas iguales, por ejemplo si tenemos 6
raı́ces r1 , r2 , r3 , r4 , r5 , r6 verificando:

r1 6= r2 = r3 6= r4 , r1 6= r4 = r5 = r6 .

Entonces, la solución es:

y = c1 er1 x + c2 er2 x + c3 xer3 x + c4 er4 x + c5 xer5 x + c6 x2 er6 x .

Si las raı́ces son complejas, para cada par conjugado, r = ±bi, la solución
es:
y = eax (A cos bx + Bsenbx).

17
Si hay otro par igual → y = eax (A cos bx) + Bsenbx).

(Ver Ejemplo A.22)

1.8. Matrices.
Una matriz es un conjunto de elementos ordenados en filas y columnas. Se
suelen denotar por letras mayúsculas (por ejemplo, A), y aij representa un ele-
mento individual de la matriz. La coordenada i se refiere a la fila del elemento, y
la coordenada j a la columna. En esta sección se sigue principalmente la notación
y principales resultados de [13].
 
a11 a12 . . . a1j . . . a1n
 a21 a22 . . . a2j . . . a2n 
 . .. .. .. .. .. 
 .
 . . . . . . 

A=
 ai1 ai2 . . . aij . . . ain 

 . .. .. .. .. .. 
 .. . . . . . 
am1 am2 . . . amj . . . amn

Cada elemento se distingue de otro por la posición que ocupa en la matriz, es


decir la fila y la columna donde se encuentra situado (para mas detalle ver [13]).

1.8.1. Tipos de Matrices


Según la forma y los elementos de la matriz existen varios tipos de matrices
y en el Apéndice A.7.1 se describen las más importantes.

1.8.2. Operaciones entre Matrices


Adición y sustracción de matrices.
Para sumar y restar dos matrices (ver [2]), estas deben ser de igual tamaño
(mismo número de filas m y columnas n), y se suman o restan sus elementos
correspondientemente, es decir,
   
a11 a12 . . . a1n b11 b12 . . . b1n
 a21 a22 . . . a2n   b21 b22 . . . b2n 
si A =  .. y B = ..  entonces
   
.. ..   .. ..
 . . .   . . . 
am1 am2 . . . amn bm1 bm2 . . . bmn
 
a11 ± b11 a12 ± b12 ... a1n ± b1n
 a21 ± b21 a22 ± b22 ... a2n ± b1n 
A±B =
 
.. .. .. 
 . . . 
am1 ± bm1 am2 ± bm2 . . . amn ± bmn

18
Propiedades.

Asociativa: A + (B + C) = (A + B) + C

Elemento neutro: A + 0 = A

Elemento opuesto: A + (−A) = O

Conmutativa: A + B = B + A

(Ver Ejemplo A.26, A.27)

Multiplicación por un Escalar.

Se multiplica cada elemento de la matriz por el escalar dado.[2]


Sea la matriz A y el escalar K:
 
a11 a12 . . . a1n
 a21 a22 . . . a2n 
A =  ..
 
.. .. 
 . . . 
am1 am2 . . . amn
 
k ∗ a11 k ∗ a12 . . . k ∗ a1n
 k ∗ a21 k ∗ a22 . . . k ∗ a2n 
k ∗ A =  ..
 
.. .. 
 . . . 
k ∗ am1 k ∗ am2 . . . k ∗ amn

Multiplicación de Matrices.

Si A = [aij ] es una matriz de m × p, y B = [bij ] es una matiz de p × n, el


producto de A y B, que se denota mediante AB, es la matriz C = [cij ] de m × n,
definida como (ver [2]):

cij = ai1 b1j + ai2 b2j + ... + aip bpj


p
X
= aik bkj (1 ≤ i ≤ m, 1 ≤ j ≤ n)
k=1

Es decir, los elementos que ocupan la posición ij, en la matriz producto, se ob-
tienen sumando los productos que resultan de multiplicar los elementos de la fila
i en la primera matriz por los elementos de la columna j de la segunda matriz.
Es decir,

19
   
a11 a12 . . . a1p b11 b12 . . . b1n
 a21 a22 . . . a2p  b21 b22 . . . b2n 
si A =  .. y B = ..  entonces
   
.. ..   .. ..
 . . .   . . . 
am1 am2 . . . amp bp1 bp2 . . . bpn
 
c11 c12 . . . c1n
 c21 c22 . . . c2n 
AB = C =  ..
 
.. .. 
 . . . 
cm1 cm2 . . . cmn

Como se observa, según [2], para que se pueda realizar el producto AB, el
número de columnas p de A debe ser igual al número de filas p de B. Se revisa
en detalle como se obtiene el elemento cij de la matriz C en el siguiente ejemplo:

(Ver Ejemplo A.28)

Propiedades [13]

1. A(B + C) = AB + AC

2. (A + B)C = AC + BC

3. A(BC) = (AB)C

4. A0n = 0n A = 0n (Matriz cuadrada de n × n)

5. BIn = In B = B (Matriz cuadrada de n × n)

6. En general, AB 6= BA (La multiplicación no es conmutativa)

7. AB = 0 no implica necesariamente que A = 0 o B = 0

8. AB = AC no implica necesariamente que B = C

(Ver Ejemplo A.29)

1.8.3. Determinantes
Definicion 1.8. El determinante es una función que establece una corresponden-
cia entre el conjunto de matrices cuadradas y el campo de los números reales o
complejos.
f : Mn×n → K
A → f (A) = det(A)

Notación. Sea A = (aij ) una matriz de n × n, el determinante de A se nota


ası́:
|A| = det(A)
o también:

20

a11 a12 . . . a1n

a21 a22 . . . a2n
|A| = ..


.

an1 an2 . . . amn

De acuerdo con [2]:


X
det(A) = |A| = (±)a1j1 , a2j2 . . . anjn ,

donde la suma varı́a sobre las permutaciones j1 , j2 , ..., jn del conjunto S = {1, 2, ..., n}.
El signo es (+) si la permutación es par o (−) si es impar.
De acuerdo con [2], Se dice que una permutación tiene una inversión si un
entero mayor jr precede a uno menor js , y se dice que es par o impar de acuerdo
al numero total de inverisones en ella.
Por ejemplo, la permutación 3412 de S = {1, 2, 3, 4} tiene cuatro inversiones
y por tanto es par: 3 antes de 1, 3 antes de 2, 4 antes de 1, 4 antes de 2; en cambio
la permutación 1243 tiene una inversión y por tanto es impar: 4 antes de 3.

(Ver Ejemplo A.30)

Propiedades.

1. Sean A y B dos matrices de n × n. Entonces

det (AB) = (det A)( det B).

Es decir: el determinante del producto es el producto de los determinantes.

2. det(AT ) = det(A).

3. El det(A) puede calcularse, según [13], como:

n
X
det(A) = aik Aik
k=1

(Ver Definición 1.9)

Definicion 1.9. Menores y cofactores de una matriz


Según la [13], si A es una matriz cuadrada, entonces el menor Mij del elemen-
to aij es el determinante de la matriz que resulta de eliminar la i-ésima fila y la j-
ésima columna de A. Y con esto el cofactor Aij se define como Aij = (−1)i+j Mij .

Por lo que el determinante de la matriz A está dado por:


n
X
det(A) = ai1 Ai1 + ai2 Ai2 + ... + ain Ain = aik Aik .
k=1

21
para i = 1, 2, . . . , n. Es decir, se puede calcular det A expandiendo por cofactores
en cualquier renglón de A. Más aún
n
X
det(A) = a1j A1j + a2j A2j + ... + anj Anj = akj Akj
k=1
 
a1j
 a2j 
como la columna j de A es  ..  se puede calcular det(A) expandiendo por
 
 . 
anj
cofactores en cualquier columna de A.

(Ver Ejemplo A.31)

1.8.4. Inversa de una matriz


Definicion 1.10. Una matriz cuadrada A de n × n es invertible (no singular) si
existe una matriz cuadrada B de n × n y el producto de AB y BA es igual a la
matriz Identidad In [11], [13], es decir:

AB = BA = In

La matriz B se denomina inversa de la matriz A, y por tanto, también la


matriz A es la inversa de B. Si no existe tal matriz, entonces se dice que A es
una matriz no invertible o singular.

(Ver Ejemplo A.32 )

Teorema 1.10. Si A es una matriz invertible, entonces su inversa es única. La


inversa de una matriz A se la denota como A−1 [11][13].

Demostración:
Si A es invertible, entonces existe B tal que:

AB = BA = In

Vamos a suponer que la inversa de la matriz A no es única, es decir, existe otra


inversa C tal que:
AC = CA = In
De acuerdo con [13]:
AB = In (B es inversa de A)
C(AB) = CIn
(CA)B = C(propiedad asociativa y matriz por Identidad)
In B = C(C es inversa de A)
B=C

22
Por lo tanto, si B = C, y dado que ambas se definieron como inversas de A,
la inversa de A es una matriz única, que era lo que se querı́a demostrar, y con lo
que se acepta que:
AA−1 = A−1 A = In
Método para Determinar la inversa de una matriz
Para determinar la inversa de una matriz A, se resuelve la ecuación matricial
AX = I para X, donde A−1 = X.
 
−1 2
Por ejemplo, si A = para determinar su inversa planteamos la ecua-
−1 1
ción matricial:

        
−1 2 x11 x12 1 0 −x11 + 2x21 −x12 + 2x22 1 0
AX = I ⇒ = ⇒ =
−1 1 x21 x22 0 1 −x11 + x21 −x12 + x22 0 1

Cuando se igualan los elementos correspondientes se obtiene dos sistemas de


ecuaciones de dos incógnitas:

−x11 + 2x21 = 1 −x12 + 2x22 = 0


−x11 + x21 = 0 −x12 + x22 = 1

Resolviendo por el método de reducción a los dos sistemas de ecuaciones te-


nemos que x11 = 1 y x21 = 1, ası́ como x12 = −2 y x22 = −1, respectivamente.

Por lo que,    
x11 x12 −1 1 −2
X= =A =
x21 x22 1 −1
Si alguno de los sistemas de ecuaciones lineales que se forman no tienen solución
o tienen infinitas soluciones, entonces la matriz A es no invertible o singular. [13]

Teorema 1.11. ([13, Th. 3.7]) Determinante de una matriz invertible


Una matriz cuadrada A tiene inversa A−1 si y sólo si det(A) 6= 0.

(Ver Ejemplo A.33 )

Método para determinar la Inversa de una matriz por su adjunta


Según la Definición 1.9, el adjunto de aij es el determinante que se obtiene al
eliminar la fila i y la columna j, con el respectivo signo en función de la posición
i, j, es decir Aij = (−1)i+j Mij . Veamos el siguiente ejemplo:

Ejemplo 1.1. Obtener el elemento adjunto de la posición 2, 3 de la matriz A,


siendo  
1 −1 −3
A=  2 4 1 .
−2 5 0

23
Solución: El procedimiento es sencillo, si quitamos la fila 2 y la columna 3 nuestra
matriz de partida y obtenemos
 
1 −1
−2 5

Ahora realizamos el determinante



1 −1
A23 =
= 3.
−2 5

Por último, es necesario tener en cuenta la posición del elemento que hemos
seleccionado, en este caso, a2,3 por lo tanto, el valor del elemento adjunto es

2+3 1
−1
M23 = (−1) = −3.
−2 5

Definicion 1.11. Matriz adjunta. Es la matriz formada por todos los ele-
mentos adjuntos definidos anteriomente. [13]

(Ver Ejemplo A.34 )

Teorema 1.12. ([13, Th. 3.10]) Inversa de una matriz por su adjunta
Si A es una matriz invertible n × n, entonces su inversa viene dada por:
1
A−1 = adj(A)T
det(A)

Hay que recordar por el Teorema 1.11 que para que una matriz A sea invertible
o no singular, det(A) 6= 0.
(Ver Ejemplo A.35 )

1.8.5. Valores Propios (AutoValores) y Vectores Propios


(AutoVectores)
Un vector propio o autovector asociado a una matriz A cuadrada n × n y
correspondiente a un valor escalar λ (λ ∈ R), es un vector x distinto de cero tal
que Ax = λx. λ se denomina valor propio o autovalor asociado a la matriz A (Ver
[13]). En otras palabras, si Ax = λx, entonces existen vectores x distintos de cero
en Rn tales que Ax sea un múltiplo escalar de x. [13]
¿Cómo encontrar x y λ? Según [13], sea I la matriz identidad n × n, se puede
escribir la ecuación Ax = λx en la forma Ax = λIx donde se obtiene:

(A − λI)x = 0, luego x ∈ N (A − λI).

Como x 6= 0, necesitamos que el sistema tenga soluciones no triviales; es decir:


λ es valor propio A si y solo si det(A−λI) = 0. De acuerdo con [13], el subespacio
propio de A correspondiente a λ, V (x), es el conjunto de todas las soluciones de
(A − λI)x = 0, es decir V (x) = N (A − λI). (Ver Ejemplo A.36)

24
Bibliografı́a

[1] Apostol, T. M. (2012) Calculus I. Barcelona, España: Reverté.

[2] Bernard, K., Hill, D. R. (2006) Álgebra lineal. Mexico: Pearson Educación.

[3] Carmona, I. (2011) Ecuaciones diferenciales. México: Pearson.

[4] Casteleiro, J. M. (2004) Introducción al Algebra Lineal, Primera Edición.


Madrid: ESIC Editorial

[5] Chapra, S. C., Canale R. P. (2015) Métodos numéricos para Ingenieros, Sépti-
ma Edición. México: D.F.: Mc Graw-Hill/Interamericana Editores.

[6] Conejo, L. y Ortega T. (2014) Las demostraciones de los teoremas de con-


tinuidad en los libros de texto Números - Revista de Didáctica de las Ma-
temáticas, vol (87), 5-23.

[7] Del Valle Sotelo, J. D. (2011) Álgebra lineal: Para estudiantes de Ingenierı́a
y Ciencias. Monterrey, México: Mc Graw Hill.

[8] Pérez, F. (2017) Cálculos diferencial e integral de funciones en una


variable. Obtenido de http://www.ugr.es/~fjperez/textos/calculo_
diferencial_integral_func_una_var.pdf

[9] Henry Edwards, D. P. (2009) Ecuaciones diferenciales y problemas con va-


lores en la frontera. México: Pearson.

[10] Hernández, E. (2016) Cálculo Diferencial e Integral con Aplicaciones. Car-


tago, Costa Rica: Escuela de Matemática, Instituto Tecnológico de Costa
Rica.

[11] Kolman, B. y Hill, D. R. (2006) Álgebra Lineal. México: Pearson Eduación.

[12] Larson, R. y Edwards B. (2016) Cálculo, vol. 1. México D.F.: Cengage Lear-
ning Editores S.A.

[13] Larson, R (2013) Fundamentos de Algebra Lineal. Septima Edición. México:


Cengage Learning Editores.

[14] Gonzáles, A. (2003) Calculo I, Madrid, 54-55.

[15] López, A. I. (2009) Ecuaciones diferenciales: Teorı́a y problemas. Madrid:


Editorial Tébar Flores.

25
[16] Pinta, M., Castillo E. (2015) Derivación de funciones en una variable. Ma-
chala, Ecuador: Universidad Técnica de Machala.

[17] Stewart, J. (2012) Calculo de una variables, trascendentes tempranas. Méxi-


co: Cengage Learning Editores.

[18] Thomas, G. (2015) Cálculo. Una variable, Decimotercera Edición. México:


Pearson Education.

[19] Wisniewski, P. y Otros (2015) Cálculo diferencial e integral, Matemáticas


IV. México: Editorial Trillas.

[20] Zill, D., Cullen M. (2009) Ecuaciones diferenciales con problemas con valores
de frontera México: Cengage Learning Editores, S. A.

26
Capı́tulo 2

INTRODUCCIÓN A MATLAB

Autores: Eduardo Tusa1 , Carlos Loor2

1,2 Unidad Académica de Ingenierı́a Civil, Universidad Técnica de Machala, Ecuador.


1 etusa@utmachala.edu.ec, 2 cloor@utmachala.edu.ec

2.1. Introducción
La evolución del hardware computacional tuvo una importante incidencia en
el desarrollo de los lenguajes de programación. La invención de los microproce-
sadores ofreció las condiciones para que los lenguajes de programación de cuarta
generación brindaran soporte para la gestión de bases de datos, la generación de
reportes, el desarrollo de interfaces de usuario y la optimización matemática [8].
La plataforma computacional de MATLAB se constituye en uno de los principales
representantes de esta generación debido a las facilidades que ofrece su entorno
computacional numérico.
MATLAB se fundamenta en cuatro paradigmas básicos de la programación:
la programación secuencial, la programación estructurada, la programación mo-
dular y la programación orientada a objetos. Este capı́tulo centra sus esfuerzos
en la presentación de la sintaxis de comandos secuenciales que sean de relevan-
cia significativa para la construcción de algoritmos de métodos numéricos y la
visualización de resultados.
Para ello, se empieza con la caracterización del entorno de MATLAB, sabiendo
que la fortaleza de MATLAB reside en la manipulación de matrices, a continua-
ción se definen matrices y sus operaciones. La manipulación de arreglos de datos
posee una considerable aplicación al momento de realizar gráficas en 2 y 3 dimen-
siones mediante los comandos de MATLAB. Además, se hace una descripción de
las estructuras de control para acciones de decisión y repetición. Finalmente, se
presenta la sintaxis para la elaboración de funciones con el fin de aprovechar los
recursos disponibles en este paquete computacional para fortalecer las soluciones
numéricas de los diferentes algoritmos.

27
2.2. Entorno de MATLAB
Una vez que se inicia MATLAB, se presenta una interface dividida en tres
ventanas [1] como se observa en la Figura 2.1, las cuales se detallan a continuación:

Current Folder (Ventana Izquierda)

Command Window (Ventana Central)

Workspace (Ventana Derecha)

Figura 2.1: Entorno de la interface de MATLAB o Ventana Principal

Fuente: Elaboración propia.

Current Folder: Esta ventana es un explorador de los archivos contenidos


en la ubicación descrita en la barra de herramientas del Current Folder [4]. En la
Figura 2.2, se aprecia la barra de herramientas del Current Folder y la ubicación
o raı́z de la carpeta que se visualiza en esta ventana.

Figura 2.2: Barra de herramientas del Current Folder

Fuente: Elaboración propia.

28
Si se desea cambiar a una carpeta de trabajo, se debe modificar la raı́z o el
search path en la barra de herramientas del Current Folder. Para la ejecución de
un programa en MATLAB, el archivo debe tener la extensión .m y visualizarse en
la ventana del Current Folder, o cualquier otra carpeta que contenga un archivo
con la extensión .m creado por el usuario.
Command Window: La Figura 2.3 es la Ventana Command Window donde
se solicita ejecutar la suma de dos números enteros y se muestra el correspondiente
resultado de la ejecución. Por defecto, la variable ans representa la respuesta
(answer, en inglés) y almacena el resultado de la operación.

Figura 2.3: Interface de la ventana Command Window en MATLAB

Command Window
>> 5 + 6
ans =
11
fx >>

Fuente: Elaboración propia.

El sı́mbolo >> indica que esta ventana está disponible para la escritura de
comandos. En la esquina inferior izquierda de la ventana principal de MATLAB
(ver Figura 2.1), se despliega un mensaje con las palabras Ready o Busy, cada
vez que el programa está esperando por datos a ser ingresados por el usuario, o
el programa esté realizando cálculos.
Workspace: Presenta las variables que se definen en la ventana Command
Window (ver Figura 2.4), como resultado de la ejecución de los programas de
MATLAB. El Workspace muestra la información de cada variable, incluyendo
sus dimensiones, valores mı́nimos o valores máximos [10]. En la parte superior de
la ventana, se presentan botones que permiten realizar varias tareas básicas como
crear, guardar, eliminar, entre otras. Todas las variables que se han definido en
una sesión de trabajo, se pueden guardar utilizando File > Save Workspace
As (Ctrl-S). La extensión para un archivo del Workspace es .mat [11].

Figura 2.4: Ventana del workspace con 5 tipos de variables inicializadas

Fuente: Elaboración propia.

29
2.3. Variables
El análisis de los modelos matemáticos requiere la caracterización de los ele-
mentos de estudio. A menudo, estas caracterı́sticas tienen una naturaleza variable
debido a los diferentes valores que pueden asumir. Ası́, las variables se consideran
como sı́mbolos que representan valores. Las variables están asociadas a porciones
de memoria que almacenan estos valores. El nombre de una variable represen-
ta todos los valores posibles que puede contener. Por esta razón, existen ciertas
nomenclaturas para la definición del nombre de variables [12]:

MATLAB es sensible a las letras mayúsculas con respecto a las variables.


Por lo tanto las variables x = 2 y X = 3 se consideran dos variables
diferentes.

Todos los nombres de variables deben empezar con una letra.

MATLAB utiliza sólo los primeros 31 caracteres para el nombre de variables.

Los signos de puntuación no están permitidos en el nombre de las variables.

El signo de subguión “ ” está permitido en el nombre de variables.

Tanto letras como dı́gitos pueden conformar el nombre de una variable.

No puede contener espacios en blanco. Por ejemplo: constante gravitacional


no es un nombre de variable permitido.

Todas las variables deben estar definidas o inicializadas con un valor,


de lo contrario se produce errores de indefinición.

2.3.1. Tipo de variables


Existen algunos tipos de variables en MATLAB que están asociados al tipo de
datos que almacenan. La Figura 2.5 obtenida del sitio de [15] presenta los tipos
de datos o clases con los que puede trabajar en MATLAB.
Se puede crear matrices y arreglos de datos de punto flotante y enteros (varia-
bles numéricas o en inglés, numeric), caracteres y cadenas (variables tipo caracter
o en inglés, char), y estados lógicos de verdadero y falso (variables lógicas o en
inglés, logical) [20]. Las funciones handle es un tipo de dato en MATLAB que
almacena una asociación a una función. El tema de funciones se tratará en la
sección 2.9. Los arreglos de tablas (table), de estructuras (struct) y de celdas
(cell) proporcionan una alternativa para almacenar diferentes tipos de datos en
una mismo entidad.
Hay 16 clases fundamentales en MATLAB. Cada una de estas clases está en
la forma de una matriz o arreglo. Con la excepción de las funciones handles, las
matrices o arreglos son de un tamaño mı́nimo de 0 por 0 y puede crecer hasta
una matriz n-dimensional de cualquier tamaño. Una función handle es siempre
escalar (1 por 1).

30
Figura 2.5: Tipo de variables disponibles en MATLAB

Fuente: Obtenida de [15].

2.3.2. Jerarquı́a de operaciones artiméticas


Las operaciones más básicas con MATLAB se realizan con variables numéri-
cas, cuyos operadores aritméticos son +, −, /, ∗ y ∧ potencia. Estos operadores
se combinan con paréntesis () para agrupar operaciones. MATLAB brinda una
atención especial a la manera en que se escribe una expresión matemática. Por
ejemplo, 10+48/2∗4 = 10+(48/2)∗4 = 106 no es igual a 10+48/(2∗4) = 10+6.
En general, MATLAB ejecuta las operaciones en el siguiente orden:

1. Se da atención a las operaciones dentro de los paréntesis ()


2. La exponenciación, ∧, de izquierda a la derecha.
3. La multiplicación y división, ∗, /, de izquierda a derecha.
4. La suma y la resta, +, −, de izquierda a derecha.

Un ejemplo se presenta a continuación. En el lado izquierdo, se presenta la


operación a desarrollar, mientras que en lado derecho; se presenta paso a paso,
el resultado de la operación a la cual se ha dado prioridad, de acuerdo al orden
jerárquico establecido previamente.

2 + 5/2 ∗ 4 − 2 ∧ 3 + (5 ∗ 2) = 2 + 5/2 ∗ 4 − 2 ∧ 3 + 10
2 + 5/2 ∗ 4 − 2 ∧ 3 + (5 ∗ 2) = 2 + 5/2 ∗ 4 − 8 + 10
2 + 5/2 ∗ 4 − 2 ∧ 3 + (5 ∗ 2) = 2 + 2,5 ∗ 4 − 8 + 10
2 + 5/2 ∗ 4 − 2 ∧ 3 + (5 ∗ 2) = 2 + 10 − 8 + 10
2 + 5/2 ∗ 4 − 2 ∧ 3 + (5 ∗ 2) = 14

En el apéndice B1 se presentan cuestiones resueltas en relación a la jerarquı́a


de operacionalización y reconocimiento de variables.

31
2.4. Vectores
El vector, al igual que la matriz, forman el tipo de datos más común dentro del
entorno de MATLAB [3]. El vector está formado por una fila y n columnas (vector
fila de 1 × n) o m filas y una columna (vector columna m × 1). La dimensión del
vector fila se denota como 1 × n y m × 1 para el vector columna.

2.4.1. Ingreso de vectores


La forma de ingresar un vector en la ventana Command Window es escribiendo
el nombre del vector (variable) y luego del signo igual, se ingresan los elementos
del vector entre corchetes y separados por espacios o comas, si es un vector fila
o punto y coma, si es un vector columna. El signo igual (=) asigna valores a las
variables, se puede ver en la Figura 2.6 que el vector fila a sido asignado a la
variable A y el vector columna a la variable B.

Figura 2.6: Ingreso de vectores fila y columna en MATLAB

Command Window
>> x = [ 2 4 5 7 8 1 0 ] % Vector f i l a
x =
2 4 5 7 8 10
>> y = [ 2 ; 1 ; 5 ; 4 ; 3 ] % Vector columna
y =
2
1
5
4
fx 3

Fuente: Elaboración propia.

MATLAB ofrece comandos y estructuras que definen un vector y que operan


con elementos de un vector. Por ejemplo, para crear un vector con elementos
igualmente espaciados se usa la siguiente estructura

variable=inicio:incremento:fin

Si el incremento es 1 es suficiente la estructura

variable=inicio:fin

Se puede usar el comando linspace siguiendo la siguiente estructura,

variable=linspace(inicio, fin, número de elementos)

La Figura 2.7 presenta un ejemplo de creación de vectores igualmente espa-


ciados.

32
Figura 2.7: Creación de un vector fila igualmente espaciado

Command Window
>> x1 = 0 : 2 : 1 0 % v e c t o r de 0 a 10 con i n c r e m e n t o de 2

x1 =
0 2 4 6 8 10

>> x2 =0:10 % v e c t o r de 0 a 8 con i n c r e m e n t o de 1

x2 =
0 1 2 3 4 5 6 7 8

>> x3=l i n s p a c e ( 0 , 1 0 , 6 ) % v e c t o r de 0 a 10 con i n c r e m e n t o de


%( 1 0 - 0 ) / ( 6 - 1 )
x3 =
fx 0 2 4 6 8 10

Fuente: Elaboración propia.

Se puede crear un vector solo de unos con el comando ones, y de ceros con
el comando zeros
variable=ones(número de filas, número de columnas)

variable=zeros(número de filas, número de columnas)

Un ejemplo de cada comando se aprecia en la Figura 2.8.

Figura 2.8: Vectores fila de unos y ceros

Command Window
>> x2=o n e s ( 1 , 8 ) % v e c t o r de 1 f i l a y 8 columnas de unos
x2 =

1 1 1 1 1 1 1 1

>> x3=z e r o s ( 1 , 1 0 ) % v e c t o r de 1 f i l a y 10 columnas de c e r o s


x3 =

fx 0 0 0 0 0 0 0 0 0 0

Fuente: Elaboración propia.

En MATLAB el apostrofe simple (’) es utilizado para determinar la trans-


puesta de un vector fila a un vector columna, o un vector columna a un vector
fila, por ejemplo en la Figura 2.9 se a transpuesto el vector fila a vector columna.
Para no mostrar los resultados en pantalla se usa el ”;”

33
Figura 2.9: Transpuesta de un vector fila a un vector columna

Command Window
>> x=[2 4 6 8 ] ; % i n g r e s o vector s i n mostrar r e s u l t a d o
>> x1=x ' % t r a n s p u e s t a de un v e c t o r

x1 =
2
4
6
fx 8

Fuente: Elaboración propia.

Después de ingresar o crear un vector, es posible acceder a cada uno de sus


componentes y cambiarlos si fuera el caso. Algunos ejemplos se dan en la Figura
2.10.

Figura 2.10: Consulta de los elementos de un vector

Command Window
>> x=[2 4 6 8 ] ; % i n g r e s o d e l vector s i n mostrar
% r e s u l t a d o por p a n t a l l a
>> c=x ( 2 ) % a s i g n a a l a v a r i a b l e c e l segundo
% elemento del vector x
c =
4

>> x ( 3 ) =7 % modifica e l valor del tercer


x = % elemento
2 4 7 8
>> y=x ( 2 : 4 ) % asigna a la variable y los
y = % elementos 2 a 4
fx 4 7 8

Fuente: Elaboración propia.

2.4.2. Operaciones con vectores


Las operaciones entre vectores se realizan elemento a elemento, y en con-
secuencia, deben tener la misma dimensión y están sujetas a la jerarquı́a de
operaciones aritméticas mencionadas anteriormente [19].
Suma En la Figura 2.11, en primer lugar se introducen los vectores filas x
y y sin mostrar sus resultados en pantalla mediante el signo de “;” al final de la
instrucción, y luego se realiza la suma.

34
Figura 2.11: Suma de un vector con otro vector y un escalar

Command Window
>> x=[2 4 6 ] ;
>> y=[1 3 5 ] ;
>> c =2;
>> z=x+y % suma de v e c t o r e s
z =
3 7 11
>> u=x+c % suma de un v e c t o r con un e s c a l a r
u =
fx 4 6 8

Fuente: Elaboración propia.

Resta Un ejemplo se presentea en la Figura 2.12.

Figura 2.12: Resta de un vector con otro vector y un escalar

Command Window
>> xx=x - y % r e s t a de v e c t o r e s
xx =
1 1 1
>> yy=x - c % r e s t a de un v e c t o r con un e s c a l a r
yy =
fx 0 2 4

Fuente: Elaboración propia.

En MATLAB el punto (.) es necesario siempre que se quieran realizar las ope-
raciones de producto, división y potencia entre vectores.

Producto La Figura 2.13 presenta ejemplos de productos con vectores.

Figura 2.13: Producto de vectores

Command Window
>> z z =3∗y % p r o d u c t o de un e s c a l a r por un v e c t o r
zz =
3 15 27
>> uu=x . ∗ y % p r o d u c t o de v e c t o r e s
uu =
fx 2 12 30

Fuente: Elaboración propia.

35
División La Figura 2.14 presentan ejemplos de división de vectores.

Figura 2.14: División de vectores

Command Window
>> xx=x/ c % d i v i s i o n de un v e c t o r e n t r e un e s c a l a r
xx =
1.0000 2.0000 3.0000
>> yy=x . / y % d i v i s i o n de v e c t o r e s
yy =
fx 2.0000 1.3333 1.2000

Fuente: Elaboración propia.

Potencia La Figura 2.15 presenta ejemplos de potenciación de vectores.

Figura 2.15: Potencia de vectores

Command Window
>> xx=x . ˆ c % v e c t o r e l e v a d o a un e s c a l a r
xx =
4 16 36
>> yy=x . ˆ y % v e c t o r e l e v a d o a un v e c t o r
yy =
fx 2 64 7776

Fuente: Elaboración propia.

2.5. Matrices
La matriz es un conjunto de vectores formado por m filas y n columnas, la
dimensión de una matriz se denota con m × n [13]. Al igual que con vectores,
MATLAB ofrece comandos para definir matrices con ciertas caracterı́sticas. A
continuación, se especifican los comandos para obtener matrices de unos, ceros y
la matriz identidad.

2.5.1. Ingreso de matrices


En la Figura 2.16 se da un ejemplo de como ingresar una matriz 3 × 3.

36
Figura 2.16: ingreso de una matriz 3 × 3

Command Window
>> m a t r i z 1 =[1 2 3 ; 4 5 6 ; 7 8 9 ]
matriz1 =
1 2 3
4 5 6
fx 7 8 9

Fuente: Elaboración propia.

Se pueden crear matriz de unos y ceros con los comandos ones y zeros, un
ejemplo de matriz 3 × 3 se muestra en la Figura 2.17.

Figura 2.17: Creación de matrices 3 × 3 de unos y ceros

Command Window
>> m a t r i z u n o s=o n e s ( 3 , 3 )
matriz unos =
1 1 1
1 1 1
1 1 1
>> m a t r i z c e r o s=z e r o s ( 3 , 3 )
matriz ceros =
0 0 0
0 0 0
fx 0 0 0

Fuente: Elaboración propia.

En la Figura 2.18, se puede crear la matriz identidad usando el comando eye


y la siguiente estructura.
I=eye(número de filas, número de columnas)

Figura 2.18: Creación de una matriz identidad 3 × 3

Command Window
>> I=eye ( 3 , 3 )
I =
1 0 0
0 1 0
fx 0 0 1

Fuente: Elaboración propia.

37
2.5.2. Operaciones con matrices
Las operaciones entre matrices se rigen por las reglas del algebra matricial.

Suma La Figura 2.19 presenta un ejemplo.

Figura 2.19: Suma de matrices

Command Window
>> A=[2 10 8 ; 4 12 6 ; 1 8 14 1 6 ] ; % i n g r e s o de l a m a t r i z A
>> B=[3 11 9 ; 1 5 7 ; 1 7 13 1 9 ] ; % i n g r e s o de l a m a t r i z B
>> C=A+B % A mas B
C =
5 21 17
5 17 13
fx 35 27 35

Fuente: Elaboración propia.

Resta En la Figura 2.20, se describe un ejemplo.

Figura 2.20: Resta de matrices

Command Window
>> C=A-B % A menos B
C =
-1 -1 -1
3 7 -1
fx 1 1 -3

Fuente: Elaboración propia.

Producto En la Figura 2.21, se describe un ejemplo de A × B.

Figura 2.21: Producto de matrices

Command Window
>> C=A∗B % A por B
C =
152 176 240
126 182 234
fx 340 476 564

Fuente: Elaboración propia.

Transpuesta Un ejemplo de transposición se aprecia en la Figura 2.22.

38
Figura 2.22: Transpuesta de una matriz

Command Window
>> A=[2 10 8 ; 4 12 6 ; 1 8 14 1 6 ] ; % i n g r e s o de l a m a t r i z A
>> C=A' % t r a n s p u e s t a de l a m a t r i z A

C =
2 4 18
10 12 14
fx 8 6 16

Fuente: Elaboración propia.

Determinante El comando det se presenta en la Figura 2.23.

Figura 2.23: Determinante de una matriz

Command Window
>> c=d e t (B) % d e t e r m i n a n t e de l a m a t r i z B
c =
fx 464.0000

Fuente: Elaboración propia.

Inversa El comando inv se presenta en la Figura 2.24.

Figura 2.24: Inversa de una matriz

Command Window
>> C=i n v (A) %i n v e r s a de l a m a t r i z A
C =
-0.1731 0.0769 0.0577
-0.0705 0.1795 -0.0321
fx 0.2564 -0.2436 0.0256

Fuente: Elaboración propia.

En el apéndice B2, se presentan comandos con ejemplos para generar matrices


con diferentes caracterı́sticas. Además, se calcula el rango, la norma, la descom-
posición QR, los valores y vectores propios de una matriz, entre otras operaciones.

2.6. Polinomios
El manejo de polinomios en MATLAB resulta de mucha utilidad en la de-
rivación numérica con Polynomios de Taylor que son tratados en el capı́tulo 3.

39
Asimismo, los polinomios son importantes para las cuadraturas interpolarias tra-
tadas en el capı́tulo 4 y los polinomios ortogonales, cubiertos en el capı́tulo 5. En
MATLAB, los polinomios son vectores fila cuyos elementos son los coeficientes
del polinomio en orden de potencia decreciente. Si un término del polinomio no
existe se coloca un cero en la posición correspondiente [18].

2.6.1. Ingreso de polinomios


Por ejemplo, para los siguientes polinomios:
p1 = 2x3 + 5x2 − 6x + 8
p2 = 2x3 − x − 5
El ingreso en MATLAB es como se presenta en la Figura 2.25.

Figura 2.25: Polinomios

Command Window
>> p1 =[2 5 -6 8 ] ; % p o l i n o m i o de grado 3
p1 =
2 5 -6 8
>> p2 =[2 0 -1 - 5 ] ; % p o l i n o m i o de grado 3
p2 =
fx 2 0 -1 -5

Fuente: Elaboración propia.

2.6.2. Operaciones con polinomios


Raı́ces Se obtiene con el comando roots y la siguiente estructura.
variable=roots(variable asignada al polinomio)
En la Figura 2.26 se ilustra el uso del comando roots para el polinomio p1 de
la Figura 2.26. Hay que aclarar que MATLAB devuelve las raı́ces en un vector
columna, en el ejemplo de la Figura 2.27 el vector columna es r1.

Figura 2.26: Raı́ces de un polinomio

Command Window
>> r 1=r o o t s ( p1 )

r1 =

-3.6300 + 0.0000 i
0.5650 + 0.8847 i
fx 0.5650 - 0.8847 i

Fuente: Elaboración propia.

40
Creación Un polinomio se puede formar si se conocen las raı́ces del mismo
con el comando poly y la siguiente estructura (ver ejemplo en Figura 2.27).

variable=poly (variable asignada al vector con las raı́ces del polinomio)

Figura 2.27: Polinomio a partir de las raı́ces

Command Window
>> r 1 = [ - 3 . 6 ; 0 . 5 6 5 + 0 . 8 8 4 7 i ; 0 . 5 6 5 - 0 . 8 8 4 7 i ] ; % r a i c e s d e l p o l i n o m i o
>> p3=p o l y ( r 1 ) % cracion del polinomio

p3 =

fx 1.0000 2.4700 -2.9661 3.9669

Fuente: Elaboración propia.

El resultado que MATLAB entrega es un vector fila con las coeficientes, por
lo tanto el polinomio es:

p3 = x3 + 2,47x2 − 2,9661x + 3,9669

Evaluación MATLAB puede evaluar un polinomio para un determinado


valor, en la Figura 2.28 se muestra un ejemplo y el uso de la estructura:

variable=polyval ( nombre del polinomio, valor a evaluar)

Figura 2.28: Evaluación de un polinomio

Command Window
>> p1 =[1 0 -8 6 - 1 0 ] ;
>> x=p o l y v a l ( p1 , 2 ) % p o l i n o m i o p1 e v a l u a d o en 2 ; p1 ( 2 )= -14
x =
fx -14

Fuente: Elaboración propia.

Producto La estructura para calcular el producto de polinomios en MATLAB


es mediante la utilización de la función conv (de producto de convolución):

variable=conv (primer polinomio, segundo polinomio)

La Figura 2.29 presenta un ejemplo.

41
Figura 2.29: Producto de polinomios

Command Window
>> p1 =[1 -2 4 ] ;
>> p2 =[1 0 3 - 4 ] ;
>> p3=conv ( p1 , p2 )
p3 =
fx 1 -2 7 -10 20 -16

Fuente: Elaboración propia.

División Para dividir polinomios existe la función deconv , con la que se


obtiene el cociente y el resto de dos polinomios, siguiendo la estructura.

[cociente, resto]=deconv (primer polinomio, segundo polinomio)

La Figura 2.30 presenta un ejemplo.

Figura 2.30: División de polinomios

Command Window
>> p1 =[1 0 -8 6 - 1 0 ] ;
>> p2 =[1 0 3 - 4 ] ;
>> [ c o c i e n t e , r e s t o ]= deconv ( p1 , p2 )
cociente =
1 0
resto =
fx 0 0 -11 10 -10

Fuente: Elaboración propia.

2.7. Script de MATLAB


En MATLAB, se utiliza archivos con la extensión .m [16] que poseen conjuntos
de instrucciones o definición de funciones. Estos archivos se ejecutan al teclear
su nombre en el Command Windows y presionar enter, si éste se encuentra en el
Current Folder. También se ejecutan al presionar la tecla RUN. Un archivo .m o
script puede invocar funciones y ejecutar otros achivos .m. Para la creación de un
archivo .m, también conocido como fichero se utiliza el Editor de MATLAB [14].
Para ello, Editor > New > Script (Ctrl-N) y se desplegará la ventana que se
aprecia en la Figura 2.31.

42
Figura 2.31: Ventana del Editor en MATLAB

Fuente: Elaboración propia.

El editor presenta los diferentes tipos de comandos que se escriben en un


programa (ver ejemplo en la Figura 2.32.) de acuerdo a lo siguiente nomenclatura:
Los comentarios se pintan de color verde y van precedidos del signo %.
Las cadenas de caracteres están de color violeta.
Las sentencias se colocan de color negro.
Las sentencias de estructuras de control se colorean de azul.

Figura 2.32: Ejemplo de un script editado en MATLAB

1 % Esta linea ilustra la edicion de un comentario


2 % Los comentarios en MATLAB comienzan con el signo %
3 x = 'La cadena de caracteres se escribe entre comillas simples'
4 n = 10; % Esta sentencia va con color negro
5 % if-else-end es una sentencia de estructuras de control condicional
6 if n > 5
7 disp('n es mayor que 5'); % disp presenta los caracteres
8 else
9 disp('n es menor o igual que 5');
10 end

Fuente: Elaboración propia.

2.8. Estructuras de control


Son parte fundamental de cualquier lenguaje de programación porque permi-
ten que las instrucciones de un programa no sólo se ejecuten en el orden en que
están escritas (orden secuencial),sino que permiten modificar esta secuencia; para
lo cual existen dos categorı́as de estructuras de control [9]:
Estructuras de decisión o condicionales
Estructuras de repetición

43
2.8.1. Estructuras de decisión
Durante la resolución de cualquier problema de ingenierı́a, es normal tener en
consideración el uso de condiciones que influyan sobre la secuencia de nuestras
instrucciones. Para ello, las estructuras de decisión o condicionales son una he-
rramienta para la selección de lo que se deberı́a ejecutar o no en un programa
[5]. MATLAB considera tres tipos de estructuras condicionales: Simple, doble y
múltiple.

Estructura condicional simple


Este tipo de estructura se caracteriza porque utiliza una sentencia if que
permite elegir si se ejecuta o no un bloque de instrucciones, tal como se aprecia
en la Figura 2.33.

Figura 2.33: Estructura Condicional Simple: Sı́ntaxis en MATLAB (izquierda) y


Diagrama de flujo (derecha)

1 % Condicional simple
2
3 if condicion
4 instrucciones;
5 end

Fuente: Obtenida de [17].

Estructura condicional doble


La estructura condicional doble se compone además de la cláusula if, de la
sentencia else, la cual permite ejecutar un bloque de instrucciones si la condición
es verdadera. Si la condición es falsa entonces ejecuta otro bloque de instrucciones
diferente (ver Figura 2.34).

Figura 2.34: Estructura Condicional Doble: Sı́ntaxis en MATLAB (izquierda) y


Diagrama de flujo (derecha)

1 % Condicional Doble
2
3 if condicion
4 instrucciones1;
5 else
6 instrucciones2;
7 end

Fuente: Obtenida de [17].

44
Estructura condicional múltiple
En su forma más general, la estructura if − elseif − else permite imple-
mentar condicionales más complejas (ver Figura 2.35), en las que se encadenan
condiciones de la siguiente forma:
Si se verifica la condición 1, se ejecuta el conjunto de instrucciones del
bloque 1.
Si no se verifica la condición 1, pero si se verifica la condición 2, se ejecuta
el conjunto de instrucciones del bloque 2.
Si no, lo que significa que no se ha verificado ninguna de las condiciones
anteriores, se ejecuta el conjunto de instrucciones del bloque 3.

Figura 2.35: Estructura Condicional Múltiple: Sı́ntaxis en MATLAB (izquierda)


y Diagrama de flujo (derecha)

1 % Condicional Multiple
2 if condicion1
3 instrucciones1;
4 elseif condicion2
5 instrucciones2;
6 else
7 instrucciones3;
8 end

Fuente: Obtenida de [17].

Otra variante de la estructura condicional múltiple, se presenta en la sentencia


switch, la cual es un tipo de estructura que permite decidir entre varios caminos
posibles, en función del valor que tome una determinada instrucción, tal como se
aprecia en la Figura 2.36

Figura 2.36: Estructura Condicional Múltiple SWITCH/CASE: Sı́ntaxis en


MATLAB (izquierda) y Diagrama de flujo (derecha)

1 % Estructura Condicional ...


SWITCH/CASE
2 switch valor
3 case 1
4 instrucciones caso1;
5 case 2
6 instrucciones caso2;
7 otherwise
8 instrucciones otro caso;
9 end

Fuente: Obtenida de [17].

45
2.8.2. Estructuras de repetición
Este tipo de sentencias permiten la ejecución reiterada de un conjunto de
instrucciones, ya sea un número predeterminado de veces, o bien hasta que se
verifique una determinada condición. En general, MATLAB utiliza dos tipos de
estructuras de repetición: Estructura de Repetición Indexada y Condicionada.

Estructura de Repetición Indexada

Este tipo de estructura permite implementar la repetición de un cierto conjun-


to de instrucciones un número pre-determinado de veces (ver Figura 2.37). Para
ello se utiliza una variable de control del bucle, llamada también ı́ndice, que va
recorriendo un conjunto prefijado de valores en un orden determinado. Para cada
valor del ı́ndice en dicho conjunto, se ejecuta el mismo conjunto de instrucciones
una vez.

Figura 2.37: Estructura de Repetición Indexada : Sı́ntaxis en MATLAB (izquier-


da) y Diagrama de flujo (derecha)

1 % Estructura Repetitiva FOR


2
3 for i=1:n
4 instrucciones;
5 end

Fuente: Obtenida de [17].

Estructura de Repetición Condicionada

Permite implementar la repetición de un mismo conjunto de instrucciones


mientras se verifique una determinada condición. El número de veces que se repe-
tirı́a el ciclo no está definido previamente, sino que está definido por una condición
(ver Figura 2.38).

1. Al comienzo de cada iteración se evalúa la condición.

2. Si el resultado es verdadero, se ejecuta el conjunto de instrucciones y se


vuelve a iterar, es decir, se repite el paso 1.

3. Si el resultado es falso, se detiene la ejecución del ciclo while y el programa


se sigue ejecutando por la instrucción siguiente al end

46
Figura 2.38: Estructura de Repetición Condicionada : Sı́ntaxis en MATLAB (iz-
quierda) y Diagrama de flujo (derecha)

1 % Estructura Repetitiva WHILE


2
3 while condicion
4 instrucciones;
5 end

Fuente: Obtenida de [17].

Interrupción con BREAK

En ocasiones es necesario interrumpir la ejecución de un ciclo de repetición en


algún punto interno del bloque de instrucciones que se repiten. Esta interrupción
está vinculada a la verificación o no de alguna condición. La sentencia break
abandona el ciclo de repetición definitivamente como se aprecia en la Figura
2.39.

Figura 2.39: Interrupción con BREAK: Sı́ntaxis en MATLAB (izquierda) y Dia-


grama de flujo (derecha)

1 % Interrupcion con BREAK


2
3 while condicion1
4 instrucciones
5 if condicion2
6 break;
7 end
8 end

Fuente: Obtenida de [17].

Interrupción con CONTINUE

La interrupción del bucle o lazo con la sentencia continue garantiza que se


abandone la iteración en curso, pero comenzando la siguiente como se muestra
en la Figura 2.40.

47
Figura 2.40: Interrupción con CONTINUE: Sı́ntaxis en MATLAB (izquierda) y
Diagrama de flujo (derecha)

1 % Interrupcion con CONTINUE


2
3 while condicion1
4 instrucciones
5 if condicion2
6 continue;
7 end
8 end

Fuente: Obtenida de [17].

En al apéndice B4 se desarrollan varios programas utilizando estructuras con-


dicionales y repetitivas en sus diferentes variantes.

2.9. Funciones
La programación modular es un paradigma de programación que pretende
dividir nuestros programas en componentes que contengan un conjunto de ins-
trucciones que realice la ejecución de algún proceso determinado [7]. Una función
comprende un conjunto de instrucciones que se escriben separadamente del pro-
grama para realizar alguna tarea especı́fica En MATLAB, los usuarios pueden
definir dos tipos de funciones: Funciones en lı́nea y modulares.

2.9.1. Funciones en lı́nea


Las funciones en lı́nea (inline functions, en inglés) se crean en la misma venta-
na de comandos que puede ser llamada de forma repetida. Por ejemplo, la creación
2
de la función en lı́nea f (x) = e−x , resulta de escribir el nombre la función, segui-
damente el signo igual (=) y luego el comando inline. Dentro de este, el cuerpo
de la función debe ser escrito entre comillas simples (’ ’) como si estuviésemos
definiendo una cadena de caracteres como se aprecia en la Figura 2.41.

2
Figura 2.41: Creación de la función en lı́nea f (x) = e−x

Command Window
>> f=i n l i n e ( ' exp ( - x ˆ 2 ) ' )
f =
Inline function :
f ( x ) = exp ( - x ˆ 2 )
fx >>

Fuente: Elaboración propia.

48
De este modo, cuando ingresemos un valor, este será evaluado en la función y
retornará el valor respectivo al terminar la ejecución de la misma como se observa
a continuación en la Figura 2.42.

2
Figura 2.42: Evaluación de la función en lı́nea f (x) = e−x

Command Window
>> f ( 4 )
ans =
1.1254 e -07

>> f ( 0 . 0 2 )
ans =
fx 0.9996

Fuente: Elaboración propia.

Esta misma función se puede graficar utilizando el comando fplot, en un


intervarlo de interés; por ejemplo, serı́a suficiente ejecutar la sentencia
fplot(función,[mı́nimo máximo])
para graficar la función f (x) en el intervalo de [−3, 3] como se aprecia en la Figura
2.43.

2
Figura 2.43: Gráfica de la función en lı́nea f (x) = e−x

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
−3 −2 −1 0 1 2 3

Fuente: Elaboración propia.

En el apéndice B3, se presentan ejemplos de varios comandos de graficación en


dos y tres dimensiones; asi como también, se puede encontrar implementaciones
de funciones en el apéndice B5.

49
2.9.2. Funciones modulares
Este tipo de funciones se crean del mismo modo que un fichero o script, a través
del menú File>New >Function. El archivo de la función se guarda en un fichero
que tiene el mismo nombre de la función con extensión .m. Los datos son evaluados
en las funciones mediante el uso de una lista de variables que se denominan
parámetros o argumentos de la función. No obstante, es necesario señalar que
las variables que se usan dentro de una función, no estarán disponibles fuera de
ella [2]. La sintaxis utilizada para la declaración de una función se presenta a
continuación en la Figura 2.44

Figura 2.44: Declaracion de una función en MATLAB

1 function [variables salida] = nombre (variables entrada)


2 instrucciones
3 % variables salida: contienen los valores que
4 % entrega la funcion
5 % variables entrada: son variables que reciben los datos que
6 % ingresan a la funcion.
7 % nombre: identificacion de la funcion
8 % instrucciones: describen las tareas que realiza
9 % la funcion

Fuente: Elaboración propia.

El nombre asignado a una función debe coincidir con el nombre usado para
identificar al archivo que contiene la función.
Las funciones se escriben en la ventana de edicion de MATLAB. En la
ventana de comandos, se debe especificar la ubicación de la carpeta que
contiene la función.
La función modular se usa similarmente a las funciones comunes en MATLAB.
Los argumentos poseen nombres diferentes, pero su uso debe ser coherente.
Las principales diferencias entre un script o fichero de MATLAB con una
función, se puede apreciar en la Tabla 2.1 [6].

Tabla 2.1: Scripts vs Funciones


Scripts o Ficheros Funciones
No reciben argumentos de entrada ni Reciben argumentos de entrada y pro-
producen resultados de salida. ducen resultados
Se trabaja sobre las variables en el Las variables internas son locales a la
workspace. función.
Automatiza una serie de pasos que se Se extiende a diferentes aplicaciones
repiten con bastante frecuencia. que puedan ser implementadas en
MATLAB.

Fuente: Elaboración propia.

50
Bibliografı́a

[1] Ataurima, M. (2013) MATLAB & Simulink para Ingenierı́a Nivel I. Peru:
Universidad de Ciencias y Humanidades.

[2] Attaway, S. (2016) Matlab: A Practical Introduction to Programming and


Problem Solving. Elsevier Science. https://goo.gl/gLL8MX

[3] Bermúdez, E. P. and Espada, F. M. (2010) Fundamentos de control con


MATLAB. Pearson Educación.

[4] Chapman, S. J. (2015) MATLAB Programming for Engineers. Cengage Lear-


ning. https://goo.gl/skvwup

[5] Chapman, S. J. (2016) Essentials of MATLAB programming. Cengage Lear-


ning.

[6] Garcı́a de Jalón, J. Rodrı́guez, J. and Vidal, J. (2005) Aprenda Matlab 7.0
como si estuviera en primero [on line]. Madrid: Universidad Politécnica de
Madrid. Escuela Técnica Superior de Ingenieros Industriales.

[7] Gdeisat, M. and Lilley, F. (2012) MATLAB® by Example: Programming


Basics. Elsevier Science: Elsevier insights. https://goo.gl/6JqwaT

[8] Gilat, A. (2006) Matlab: Una introducción con ejemplos prácticos. Reverté.

[9] Hahn, B. and Valentine, D. T. (2016) Essential MATLAB for engineers and
scientists. Academic Press.

[10] Higham, D. J. and Higham, N. J. (2005) MATLAB guide. SIAM.

[11] Hunt, B. R. Lipsman, R. L. and Rosenberg, J. M. (2014) A guide to


MATLAB: for beginners and experienced users. Cambridge, Reino Unido:
Cambridge University Press.

[12] Kattan, P. (2008) Matlab for Beginners: A gentle approach. Petra Books.

[13] Lee, H. (2016) Programming with MATLAB 2016. SDC Publications. https:
//goo.gl/WFznYE

[14] Lockhart, S. and Tilleson, E. (2017) An Engineer’s Introduction to Program-


ming with MATLAB 2017. SDC Publications. https://goo.gl/siHzEy

51
[15] MathWorks (2017) Fundamental MATLAB Classes. https://goo.gl/
fr5tNi

[16] Moler, C. B. (2004) Numerical computing with MATLAB. SIAM.

[17] San Martı́n Cuenca, H. D. and Tusa Jumbo, E. A. (2015) Fundamentos de


programación para ciencias e ingenierı́a. Machala, Ecuador.

[18] Sayood, K. (2007) Learning Programming Using MATLAB. CMorgan &


Claypool Publishers: Online access: IEEE (Institute of Electrical and Elec-
tronics Engineers) IEEE Morgan & Claypool Synthesis eBooks Library.
https://goo.gl/j9kEhY

[19] SINGH, Y. K. and CHAUDHURI, B. B. (2007) MATLAB PROGRAM-


MING. PHI Learning. https://goo.gl/peD2bP

[20] Venkataraman, P. (2009) Applied Optimization with MATLAB Program-


ming. Wiley. https://goo.gl/W1BWD1

52
Capı́tulo 3

DERIVACIÓN NUMÉRICA

Autores: Juan F. Mañas–Mañas1 , Maritza A. Pinta2

1 Departamento de Matemáticas, Universidad de Almerı́a, España.


2 Unidad Académica de Ingenierı́a Civil, Universidad Técnica de Machala, Ecuador.
1 jmm939@ual.es, 2 mpinta@utmachala.edu.ec

El uso de los métodos numéricos para calcular la derivada de una función,


se justifica en los casos en que la función a derivar es muy compleja, o, solo se
conoce los valores de la función en ciertos puntos. En el resto de casos, basta con
utilizar las reglas de derivación analı́tica, repasadas en el Capı́tulo 1, ó, software
matemáticos como Matlab, Mathematica, Maple ó Maxima (este último gratuito).
El principal objetivo de este capı́tulo es obtener aproximaciones del valor de la
derivada de una función en un punto solamente usando evaluaciones de la función
de partida. La principal razón es porque la derivación es un concepto del cálculo
infinitesimal, que se define por medio de un proceso de paso al lı́mite. Puesto
que este proceso no puede ser reproducido por un ordenador digital, necesitamos
sustituirlo por otro proceso finito o de discretización.
Para ello usaremos principalmente el desarrollo de Taylor de una función.
Otros métodos consistiran en usar el polinomio interpolador de una función y
finalmente veremos mejoras de estos métodos como es la Extrapolación de Ri-
chardson. El lector podrá encontrar gran variedad de ejemplos resueltos (ver
Apéndice C) y todos los códigos asociados a los métodos de derivación numérica
son implementados en Matlab.
Para el desarrollo de este capı́tulo vamos a necesitar un nuevo concepto ma-
temático que es el Desarrollo de Taylor ó Serie de Taylor ó Polinomio de
Taylor de una función.

3.1. Serie de Taylor


La serie de Taylor nos permite manipular funciones complejas como las lo-
garı́tmicas, exponenciales y trigonométricas, aproximando el valor de una función
en un entorno de un punto a, en términos del valor de la función y sus derivadas

53
en dicho punto, basándonos en la teorı́a de interpolación (ver teorı́a y prácticas
sobre interpolación en [2], [4, Cap. 2], [8, Cap. 1] ó [11, Cap. 8]).

Definición 3.1. Llamaremos Polinomio de Taylor de grado n de una fun-


ción f suficientemente derivable en el punto a, y lo denotaremos por Tn,a [f ] al
polinomio:

f 0 (a) f 00 (a) f (n) (a)


Tn,a [f ](x) = f (a) + (x − a) + (x − a)2 + · · · + (x − a)n . (3.1)
1! 2! n!

Nota 3.1. Se puede escribir la fórmula (3.1) más compacta de la siguiente forma:
n
X f (i) (a)
Tn,a [f ](x) = (x − a)i . (3.2)
i=0
i!

Teorema 3.1. [1] Sea “f ” una función suficientemente derivable en un punto a,


se puede construir el polinomio de Taylor, Tn,a [f ], de tal forma que Tn,a [f ](k) (a) =
f (k) (a), siendo k = 1, 2, . . . , n., es decir, este polinomio tiene la propiedad de que
él y sus derivadas hasta del orden n coinciden con la función “f ” y sus derivadas
hasta orden n en el punto a.

Ejemplo 3.1. Calcular el polinomio de Taylor de grado 4 que se ajusta a la


función f (x) = ex − sen(x) en el punto a = 0 y estimar el valor en la misma
función cuando x = 1.

Solución: El ejercicio pide encontrar la Serie de Taylor de grado 4, para ello es


necesario obtener hasta la cuarta derivada y determinar el valor de las mismas
en a = 0:

Función Valor en a = 0
f (x) = ex − sen(x) f (0) = e0 − sen(0) = 1 − 0 = 1
f 0 (x) = ex − cos(x) f 0 (0) = e0 − cos(0) = 1 − 1 = 0
f 00 (x) = ex + sen(x) f 00 (0) = e0 + sen(0) = 1 + 0 = 1
f 000 (x) = ex + cos(x) f 000 (0) = e0 + cos(0) = 1 + 1 = 2
f iv (x) = ex − sen(x) f IV (0) = e0 − sen(0) = 1 − 0 = 1

54
Figura 3.1: Funciones f (x) y T4,0 [ex − sen(x)](x).
7

6
f(x)
Taylor

1
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

Fuente: Elaboración propia.

Reemplazamos estos valores y a = 0, en la fórmula (3.2):


4
x
X f i (x0 )
T4,0 [e − sen(x)](x) = (x − x0 )i
i=0
i!
f (x0 ) f 0 (x0 ) f 00 (x0 )
= + (x − x0 ) + (x − x0 )2
0! 1! 2!
f 000 (x0 ) f IV (x0 )
+ (x − x0 )3 + (x − x0 )4
3! 4!
f (0) f 0 (0) f 00 (0) 2 f 000 (0) 3 f IV (0) 4
= + x+ x + x + x
0! 1! 2! 3! 4!
1 2 1
= 1 + 0(x) + (x)2 + (x)3 + (x)4
2 6 24
2 3 4
x x x
=1+ + + .
2 3 24
Por lo que en un entorno de 0 podemos aproximar f (x) por T4,0 [ex −sen(x)](x),
veamos como por ejemplo en x = 1 el valor es muy próximo:

x2 x3 x4
f (x) = ex − sen(x) ≈ 1 + + + ,
2 3 24
f (1) = 1,876810843651149,
x
T4,0 [e − sen(x)](1) = 1,875.

En la Figura 3.1 se presenta la gráfica de la función f (x) = ex − sen(x) y


T4,0 [ex − sen(x)](x) para verificar que en un intervalo alrededor del punto a = 1
obtenemos una buena aproximación de la función.
El código de Matlab ha sido (la leyenda se ha añadido desde las opciones de
la ventana gráfica de Matlab):

xx=(-2:0.001:2);

55
yy=exp(xx)-sin(xx);
zz=1+xx.^2/2+xx.^3/3+xx.^4/24;
plot(xx,yy,xx,zz), grid on

3.2. Error de truncamiento en la serie de Taylor


Definición 3.2. [1] El error de truncamiento en la Serie de Taylor, producido
al finalizar prematuramente el desarrollo de la misma, se puede expresar como el
residuo Rn (x) y viene dado por:

(x − a)2
f (x) = f (a) + f 0 (a)(x − a) + f 00 (a)
2! (3.3)
3
000 (x − a) n (x − a)n
+ f (a) + · · · + f (a) + Rn (x),
3! n!
donde Rn (x) en la fórmula (3.3) viene dado por

(x − a)n+1
Rn (x) = f n+1 (ξ) , (3.4)
(n + 1)!
con ξ ∈ (a, x).

3.3. Fórmulas de derivación numérica basadas


en la Serie de Taylor
Si recordamos, la derivada f 0 (x) de la función f (x), viene dada por la fórmula
vista en el Capı́tulo 1:

f (x + h) − f (x)
f 0 (x) = lı́m .
h→0 h
La aproximación numérica más sencilla de la derivada corresponde entonces
a la siguiente fórmula, llamada “diferencia finita” [12], donde h tiene valor fijo y
finito, denominado por lo general “paso”, la idea intuitiva es muy sencilla, solo
es dar pequeños valores de h y esa será nuestra aproximación,

f (x + h) − f (x)
f 0 (x) ≈ , (3.5)
h

Ejemplo 3.2. Calcular una aproximación de f 0 (0) para distintos valores de h,


siendo f (x) = ex − sen(x).

Solución: En este caso sencillo es facil ver que f 0 (0) = 0, veamos las aproxima-
ciones:

56
Valor de h Cálculos Aproximación
f (1+0)−f (0)
h=1 1
0,876811
f (0,5+0)−f (0)
h = 0,5 0,5
0,338591
f (0,1+0)−f (0)
h = 0,1 0,1
0,053375
f (0,01+0)−f (0)
h = 0,01 0,01
0,00503338
f (0,001+0)−f (0)
h = 0,001 0,001
0,000500333

Parece que cuanto más pequeño es h mejor es la aproximación. Más adelante


veremos que esto no es del todo cierto por los errores de cancelación (ver más
información sobre errores de cancelación en [8]). 2
Para que esta fórmula (3.5) sea exacta, habrı́a que sumarle el error que con-
lleva, o sea:

f (x + h) − f (x)
f 0 (x) = + Error,
h
donde:

f (x + h) − f (x)
Error = f 0 (x) − .
h
Debido a la imposibilidad de calcular el error con esta fórmula, por los errores
de cancelación que pueden darse al restar dos valores muy similares [8] o porque
no se conoce el valor real, se han desarrollado a partir de la serie de Taylor, una
serie de fórmulas de alta exactitud, llamadas fórmulas de diferencias divididas
finitas [12], las cuales demostraremos a continuación:

3.3.1. Fórmulas progresivas o de diferencias divididas fi-


nitas hacia delante
Cuando no se tienen datos a la izquierda del punto en que se debe calcular
la derivada, se utilizan las fórmulas progresivas. Para el desarrollo de las mis-
mas, se considera la función f (x), sus puntos, x0 , x0 + h (punto delante), y, la
correspondiente Serie de Taylor, truncada en el tercer término.

Nota 3.2. Truncaremos la Serie de Taylor en el término que nos interese en


función de la derivada y el orden que queramos calcular, veremos ejemplos durante
el desarrollo del capı́tulo.

La fórmula de la Primera diferencia progresiva [7], con error de truncamiento


O(h), de orden 1 es:

f (x0 + h) − f (x0 )
f 0 (x0 ) = + O(h). (3.6)
h
Demostración: Para obtener la fórmula (3.6) solamente es necesario desarrollar
la Serie de Taylor en el punto a = x0 + h y luego truncar en el término que
necesitemos, para ello usamos (3.4):

57
f (x0 ) f 0 (x0 ) f 00 (x0 )
f (x0 + h) = + (x0 + h − x0 ) + (x0 + h − x0 )2 + . . .
0! 1! | 2! {z }
f 00 (ξ) 2
Rn (x)= 2
h

f 00 (ξ) 2
f (x0 + h) = f (x0 ) + f 0 (x0 )h + h.
2

Despejando f 0 (x0 ) que es el valor que nos interesa aproximar, se tiene

f (x0 + h) f (x0 ) f 00 (ξ) 2


f 0 (x0 ) = − − h,
h h 2h
f (x0 + h) − f (x0 ) f 00 (ξ)
= − h ,
h | {z 2 }
Error O(h)

f (x0 + h) − f (x0 )
= + O(h),
h
con ξ ∈ (x0 , x0 + h). 2

3.3.2. Formulas regresivas o de diferencias divididas fini-


tas hacia atrás

Cuando no se tienen datos a la derecha del punto en que se debe calcular la


derivada, se utilizan las fórmulas regresivas. Para el desarrollo de las mismas, se
considera la función f (x), sus puntos, x0 , x0 − h (punto atrás), y, la correspon-
diente Serie de Taylor en el punto a = x0 − h truncada en el tercer término.

La fórmula de la Primera diferencia regresiva [7], con error de truncamiento


O(h), de orden 1 es:

f (x0 ) − f (x0 − h)
f 0 (x0 ) = + O(h). (3.7)
h

Demostración: La demostración para obtener (3.7) es análoga al caso anterior,


hacemos el desarrollo de Taylor en el punto a = x0 − h, truncamos y despajamos
f 0 (x0 ) que es lo que queremos aproximar.

58
f 00 (ξ)
f (x0 − h) = f (x0 ) + f 0 (x0 )(x0 − h − x0 ) + (x0 − h − x0 )2 + . . .
2
f 00 (ξ) 2
= f (x0 ) − hf 0 (x0 ) + h,
2

f 00 (ξ) 2
hf 0 (x0 ) = f (x0 ) − f (x0 − h) + h,
2
f (x0 ) − f (x0 − h) f 00 (ξ) 2
f 0 (x0 ) = + h
h 2h
f (x0 ) − f (x0 − h) f 00 (ξ)
= + h
h | {z 2 }
Error O(h)

f (x0 ) − f (x0 − h)
= + O(h),
h
con ξ ∈ (x0 − h, x0 ). 2

Nota 3.3. Las fórmulas que hemos obtenido del error son muy importantes, hay
que pensar que en casos reales no conocemos el valor exacto de la derivada, por
tanto es necesario controlar el error que estamos cometiendo. Este error en las
fórmulas de derivación (3.6) y (3.7) viene dado por la expresión

f 00 (ξ)
h.
2
Si conseguimos acotar f 00 (ξ) en el intervalo donde varı́a ξ tendremos una cota del
error cometido.

Veamos un ejemplo de lo que queremos calcular:

Ejemplo 3.3. Una cota del error cometido en el Ejemplo 3.2.

Puesto que en el Ejemplo 3.2 se han usado fórmulas progresivas, se tiene que
acotar f 00 (ξ) en el intervalo (0, 1) en el primer caso.

f 00 (x) = ex + sen(x).
Es fácil ver que f 00 (x) en el intervalo (0, 1) es estrictamente creciente, por
tanto el máximo de f 00 (x) se encuentra en f 00 (1) = 3,55975. Ası́, el error cometido
es menor o igual a
f 00 (1)
Error ≤ · 1 = 1,77988.
2
Siempre el error real va a ser menor que el error teórico, veamos para el resto
de valores de h:

59
Valor de h Cálculos Error Teórico
f 00 (0,5)
h = 0,5 2
· 0,5 0,532037
f 00 (0,1)
h = 0,1 2
· 0,1 0,0602502
f 00 (0,001)
h = 0,01 2
· 0,01 0,00510025
f 00 (0,0,001)
h = 0,001 2
· 0,001 0,000501

3.3.3. Fórmulas de diferencias finitas centradas


La idea es usar la Serie de Taylor en más de un punto y hacer una combinación
lineal de ambas expresiones, en este primer caso tomamos el punto x0 en el centro,
se considera un punto delante, x0 + h, y, un punto atrás, x0 − h. La fórmula de
la primera derivada [7], con error de truncamiento O(h2 ), de orden 2, es:

f (x0 + h) − f (x0 − h)
f 0 (x0 ) = + O(h2 ). (3.8)
2h
Demostración: Como se ha introducido anteriomente, los pasos para obtener
(3.8) son sencillos, primero desarrollamos la Serie de Taylor en los puntos a =
x0 +h y a = x0 −h y luego hacemos una combinación lineal de ambas expresiones.
Sea la fórmula adelantada:
f 00 (x0 )h2 f 000 (ξ1 )h3
f (x0 + h) = f (x0 ) + f 0 (x0 )h + + , (3.9)
2! 3!
con ξ1 ∈ (x0 , x0 + h). Por otro lado, sea la fórmula atrasada:

f 00 (x0 )(−h)2 f 000 (ξ2 )(−h)3


f (x0 − h) = f (x0 ) + f 0 (x0 )(−h) + + + ...,
2! 3!
h2 f 00 (x0 ) h3 000
f (x0 − h) = f (x0 ) − hf 0 (x0 ) + − f (ξ2 ), (3.10)
2 6
con ξ2 ∈ (x0 − h, x0 ).
Multiplicando por −1 toda la expresión (3.10) y posteriormente sumando la
expresión (3.9) obtenemos:

2 3
f (x0 + h) = f (x0 ) +h.f 0 (x0 ) + h2 f 00 (x0 ) + h6 f 000 (ξ1 )
2 3
−f (x0 − h) = −f (x0 ) +h.f 0 (x0 ) − h2 f 00 (x0 ) + h6 f 000 (ξ2 )
3
f (x0 + h) − f (x0 − h) = 2hf 0 (x0 ) + h6 [f 000 (ξ1 ) + f 000 (ξ2 )]

Ası́, nos queda que

h3 000
2hf 0 (x0 ) = f (x0 + h) − f (x0 − h) − [f (ξ1 ) + f 000 (ξ2 )].
6
Por otro lado, aplicando el teorema del valor intermedio es sencillo probar

60
que:

f 000 (ξ1 ) + f 000 (ξ2 )


= f 000 (ξ),
2
con ξ ∈ (x0 − h, x0 + h). Finalmente, despejando f 0 (x0 ) tenemos que:

f (x0 + h) − f (x0 − h) h3 f 000 (ξ)


f 0 (x0 ) = −
2h 6h
2
f (x0 + h) − f (x0 − h) h 000
= − f (ξ)
2h | 6 {z }
Error O(h2 )

f (x0 + h) − f (x0 − h)
= + O(h2 ).
2h
Nota 3.4. Es muy importante darse cuenta que para obtener fórmulas de orden
superior es necesario realizar combinaciones lineales de manera que al sumar
varios desarrollos de Taylor se vayan cancelando las potencias de h. En otras
palabras, la serie de Taylor se puede ver como un polinomio en la variable h, si
nosotros queremos obtener una fórmula para la primera derivada, es cuando h
está elevado a 1, para obtener una fórmula de orden 2 (como la que acabamos
de obtener) tenemos que cancelar el factor h2 y pasar a h3 , por ello, si miramos
los desarrollos (3.9) y (3.10) y especialmente el término h2 de cada uno de ellos,
vemos que son iguales, por eso, al cambiar de signo la expresión (3.10) y sumar,
ese término se cancela y pasamos al término h3 , y nuestra aproximación es de
orden 2.
Esto mismo que se ha explicado se puede hacer para obtener fórmulas de ma-
yor orden, o para aproximar distintas derivadas, veremos ejemplos durante el
desarrollo del capı́tulo y en el Apendice C.

Ejemplo 3.4. Obtener una fórmula de derivación centrada de orden 4 [6].

Solución: La idea, ya que en el ejercicio se indica que es centrada, es probar en


los puntos x−2h, x−h, x+h y x+2h. Para asegurar que es de orden 4 necesitamos
llegar hasta el desarrollo de h5 (ya que la primera derivada tiene término h y al
despejar y dividir perdemos un orden). Con esta información hacemos la Serie de
Taylor en cada punto:

4h3 000 2h4 (IV ) 4f (V ) (ξ1 ) 5


f (x + 2h) = f (x) + 2hf 0 (x) + 2h2 f 00 (x) + f (x) + f (x) + h , (3.11)
3 3 15
h2 h3 h4 f (V ) (ξ2 ) 5
f (x + h) = f (x) + hf 0 (x) + f 00 (x) + f 000 (x) + f (IV ) (x) + h , (3.12)
2 6 24 120
h2 h3 h4 f (V ) (ξ3 ) 5
f (x − h) = f (x) − hf 0 (x) + f 00 (x) − f 000 (x) + f (IV ) (x) − h , (3.13)
2 6 24 120
4h3 000 2h4 (IV ) 4f (V ) (ξ4 ) 5
f (x − 2h) = f (x) − 2hf 0 (x) + 2h2 f 00 (x) − f (x) + f (x) − h . (3.14)
3 3 15

donde ξi con i ∈ {1, 2, 3, 4} pertenece al intervalo asociado a cada desarrollo de


Taylor.

61
En este momento, en el cual tenemos todos los desarrollos, tenemos que ob-
tener una combinación lineal de todas las expresiones desde (3.11) hasta la ex-
presión (3.14), de manera que al hacer la combinación lineal los términos h2 ,
h3 y h4 desaparezcan (o analogamente que los términos f 00 (x), f 000 (x) y f (IV ) (x)
desaparezcan).
¿Cómo se puede obtener esta combinación lineal? Pues solamente es necesario
escribir este pequeño sistema de ecuacionees sobredeterminado (es decir, con
más incognitas que ecuaciones y por tanto siempre tiene infinitas soluciones).
Sean a, b, c y d los coeficientes que multipliquen a las expresiones (3.11)-(3.14),
respectivamente. Entoces el sistema a resolver es:
1 1


 2a + b + c + 2d = 0



 2 2


4 1 1 4

a + b − c − d = 0


 3 6 6 3


 2a + 1 b + 1 c + 2d = 0



3 24 24 3
Es importante destacar que la primera ecuación es la formada por los coeficientes
del término h2 en todas las expresiones. Una de las infinitas soluciones puede ser

a = 1, b = −8, c=8 y d = −1.

Ahora, realizando la siguiente combinación lineal:


(3.11)−8·(3.12)+8·(3.13)−(3.14)
se obtiene que el término de la izquierda de la igualdad vale

f (x + 2h) − 8f (x + h) + 8f (x + h) − f (x + 2h),

y por otro lado, los términos de h2 , h3 y h4 es fácil ver que se han cancelado, y
solo nos queda
1
−12hf 0 (x) + (4f (V ) (ξ1 ) − f (V ) (ξ2 ) − f (V ) (ξ3 ) + 4f (V ) (ξ4 ))h5 .
15

De donde se obtiene la siguiente fórmula de la primera derivada, con error de


cuarto orden:

−f (x + 2h) + 8f (x + h) − 8f (x − h) + f (x − 2h)
f 0 (x) = + O(h4 ). (3.15)
12h

3.4. Derivadas de orden superior


De manera análoga, puede utilizarse también la Serie de Taylor, para obte-
ner derivadas de orden superior, como la segunda y tercera derivada, las cuales

62
sintetizaremos en esta sección.

Ejemplo 3.5. Obten una fórmula para aproximar la f 00 (x) con orden 2.

Solución: Desarrollamos la Serie de Taylor en los puntos x − h y x + h.

h2 00 h3 h4
f (x + h) = f (x) + hf 0 (x) + f (x) + f 000 (x) + f (IV ) (ξ1 ),
2 6 24
2 3
h h h4
f (x − h) = f (x) − hf 0 (x) + f 00 (x) − f 000 (x) + f (IV ) (ξ2 ),
2 6 24

Sumando ambas expresiones, claramente los términos h y h3 se cancelan, por


lo que nos queda:

h4 (IV )
f (x + h) + f (x − h) = 2f (x) + f 00 (x)h2 + (f (ξ1 ) + f (IV ) (ξ2 )),
24
f (x + h) + f (x − h) − 2f (x)
f 00 (x) = + O(h2 ). (3.16)
h2

Ejemplo 3.6. Utilizar las formulas para la primera derivada, y derivadas de


orden superior vistas en la Tabla 3.4 para aproximar las primeras derivadas de la
función

f (x) = ( x + 2x − 5)ln(x+1)
en el punto x1 = 2 y con paso h = 0,01.

Primera derivada hacia delante.

f (x1 + h) − f (x1 )
f 0 (x1 ) ≈
h

f (2 + 0,01) − f (2)
f 0 (2) ≈
0,01
√ √
( 2,01 + 2(2,01) − 5)ln(2,01+1) − ( 2 + (2(2) − 5)ln(2+1)
=
0,01
ln(3,01)
(0,437744687) − (0,414213562)ln(3)
=
0,01
0,402389753 − 0,379732639 0,022657114
= =
0,01 0,01
= 2,2657114

63
Tabla 3.1: Principales fórmulas de derivación numérica

Orden
Tipo de del
Derivada Fórmula error
fórmula

f (x+2h)−2f (x+h)+f (x) O(h)


Hacia h2
Adelante
O(h2 )
f 00 (x) −f (x+3h)+4f (x+2h)−5f (x+h)+2f (x)
h2

f (x+h)−2f (x)+f (x−h) O(h2 )


Centrada h2

−f (x+2h)+16f (x+h)−30f (x)+16f (x−h)−f (x−2h) O(h4 )


12h2

f (x)−2f (x+h)+f (x−2h) O(h)


Hacia h2
atrás
2f (x)−5f (x−h)+4f (x−2h)−f (x−3h) O(h2 )
h2

f (x+3h)−3f (x+2h)+3f (x+h)−f (x) O(h)


Hacia h3
Adelante
O(h2 )
f 000 (x) −3f (x+4h)+14f (x+3h)−24f (x+2h)+18f (x+h)−5f (x)
2h3

f (x+h)−2f (x+h)+2f (x−h)−f (x−2h) O(h2 )


Centrada 2h3

−f (x+3h)+8f (x+2h)−13f (x+h)+13f (x−h)−8f (x−2h)+f (x−3h) O(h4 )


8h3

f (x)−3f (x−h)+3f (x−2h)−f (x−3h) O(h)


Hacia h3
atrás
5f (x)−18f (x−h)+24f (x−2h)−14f (x−3h)+3f (x−4h) O(h2 )
2h3

Fuente: Elaboración propia

64
Primera derivada hacia atrás

f (x1 ) − f (x1 − h)
f 0 (x1 ) ≈
h

f (2) − f (2 − 0,01)
f 0 (2) ≈
0,01
√ √
( 2 + 2(2) − 5)ln(2+1) − ( 1,99 + 2(1,99) − 5)ln(1,99+1)
=
0,01
0,379732639 − 0,357210984 0,022521654
= =
0,01 0,01
= 2,252165452

Primera derivada central

f (x1 + h) − f (x1 − h)
f 0 (x1 ) ≈
2h

f (2 + 0,01) − f (2 − 0,01)
f 0 (2) ≈
2(0,01)
√ √
( 2,01 + 2(2,01) − 5)ln(2,01+1) − ( 1,99 + 2(1,99) − 5)ln(1,99+1)
=
2(0,01)
0,402389753 − 0,357210984 0,045178769
= =
0,02 0,02
= 2,25893845

Segunda derivada hacia delante

f (x1 + 2h) − 2f (x1 + h) + f (x1 )


f 00 (x1 ) ≈
h2

f (2 + 2(0,01)) − 2f (2 + 0,01) + f (2)


f 00 (2) ≈
(0,01)2
√ √
( 2,02 + 2(2,02) − 5)ln(2,02+1) − 2( 2,01 + 2(2,01) − 5)ln(2,01)+1
=
(0,01)2

( 2 + 2(2) − 5)ln(2+1)
+
(0,01)2
0,425188118 − 2(0,402389753) + 0,379732639 0,000141251
= =
0,0001 0,0001
= 1,41251

65
Segunda derivada hacia atrás

f (x1 ) − 2f (x1 − h) + f (x1 − 2h)


f 00 (x1 ) ≈
(h)2

f (2) − 2f (2 − 0,01) + f (2 − 2(0,01))


f 00 (2) ≈
(0,01)2
√ √
( 2 + 2(2) − 5)ln(2+1) − 2( 1,99 + 2(1,99) − 5)ln(1,99+1)
=
0,0001
√ ln(1,98+1)
( 1,98 + 2(1,98) − 5)
+
0,0001
0,379732639 − 2(0,357210984) + 0,334818827 0,000129498
= =
0,0001 0,0001
= 1,294982895

Segunda derivada centrada

f (x1 + h) − 2f (x1 ) + f (x1 − h)


f 00 (x1 ) ≈
h2

f (2 + 0,01) − 2f (2) + f (2 − 0,01)


f 00 (2) ≈
(0,01)2
√ √
( 2,01 + 2(2,01) − 5)ln(2,01+1) − 2( 2 + 2(2) − 5)ln(2+1)
=
(0,01)2

( 1,99 + 2(1,99) − 5)ln(1,99)+1
+
0,0001
0,402389753 − 2(0,379732639) + 0,357210984 0,000135459
= =
0,0001 0,0001
= 1,35459

Tercera derivada hacia delante

f (x1 + 3h) − 3f (x1 + 2h) + 3f (x1 + h) − f (x1 )


f 000 (x1 ) ≈
h3

66
f (2 + 3(0,01) − 3f (2 + 2(0,01)) + 3f (2 + 0,01) − f (2)
f 000 (2) ≈
(0,01)3
√ √
( 2,03 + 2(2,03) − 5)ln(2,03+1) − 3( 2,02 + 2(2,02) − 5)ln(2,02−1)
=
(0,01)3
√ √
3( 2,01 + 2(2,02) − 5)ln(2,01+1) − ( 2 + 2(2) − 5)ln(2+1)
+
(0,01)3
0,448133368 − 3(0,425188118) + 3(0,402389753) − 0,379732639
=
0,000001
0,000005634
= = 5,634
0,000001

Tercera derivada hacia atrás

f (x1 ) − 3f (x1 − h) + 3f (x1 − 2h) − f (x1 − 3h


f 000 (x1 ) ≈
(h)3

f (2) − 3f (2 − 0,01) + 3f (2 − 2(0, 01)) − f (2 − 3(0,01)


f 000 (2) ≈
(0,01)3
= 6,133343368

Tercera derivada centrada

f (x1 + 2h) − 2f (x1 + h) + 2f (x1 − h) − f (x1 − 2h)


f 000 (x1 ) ≈
2h3

f (2 + 2(0,01)) − 2f (2 + 0,01) + 2f (2 − 0,01) − f (2 − 2(0,01))


f 000 (2) =
2h3
= 5,8765

Cuarta derivada hacia delante

f (x1 + 4h) − 4f (x + 3h) + 6f (x1 + 2h) − 4f (x1 + h) + f (x1 )


f (IV ) (x1 ) ≈
h4

67
f (2 + 4(0,01)) − 4f (2 + 3(0,01)) + 6f (2 + 2(0,01))
f (IV ) (2) ≈
(0,01)4
4f (2 + 0,01) + f (2)

(0,01)4
= −15,5

Cuarta derivada hacia atrás

f (x1 ) − 4f (x1 − h) + 6f (x1 − 2h) − 4f (x1 − 3h) + f (x1 − 4h)


f (IV ) (x1 ) ≈
h4

f (2) − 4f (2 − 0,01) + 6f (2 − 2(0,01)) − 4f (2 − 3(0,01))


f (IV ) (2) ≈
(0,01)4
f (2 − 4(0,01))
+
(0,01)4
= −17,2756033

Cuarta derivada centrada

f (x1 + 2h) − 4f (x1 + h) + 6f (x1 ) − 4f (x1 − h) + f (x1 − 2h)


f (IV ) (x1 ) ≈
h4

f (2 + 2(0,01)) − 4f (2 + 0,01) + 6f (2) − 4f (2 − 0,01)


f (IV ) (2) =
(0,01)4
f (x1 − 2(0,01))
+
(0,01)4
= -16.9

(Ver codificación en Matlab en Apéndice C)

3.5. Fórmulas basadas en polinomios de inter-


polación
Estas fórmulas sirven tanto si los datos están equiespaciados, o no, y, utilizan
entre otros, los polinomios de interpolación de Lagrange y Newton. La idea es muy
sencilla, sabemos que un polinomio es muy facil de derivar, por lo tanto, si tenemos
un polinomio que aproxima a la función f (x) (ver capı́tulos de interpolación en

68
[2], [4, Cap. 2], [8, Cap. 1] ó [11, Cap. 8]) tenemos que

f (x) = p(x) + e(f (x)),

por lo tanto,

f (k) (x) = p(k) (x) + e(k) (f (x)), ∀k = 0, 1, 2 . . .

y vamos a tomar como aproximación

f (k) (x) ≈ p(k) (x), ∀k = 0, 1, 2 . . .

Con esta sencilla idea vamos a redescubrir algunas de las fórmulas de deriva-
ción más utilizadas (muchas de ellas son las anteriores).

3.5.1. Utilizando el polinomio interpolador de Lagrange


Dada una función f (x), podemos obtener sus fórmulas de derivación, constru-
yendo su polinomio de interpolación, y, tomando sus derivadas como aproxima-
ciones a las derivadas de la función original [13]. Ası́:
n
X f (n+1) (ξ)
f (x) = pn (x) + e(f (x)) = f (xi )`i (x) + w(x), (3.17)
i=0
(n + 1)!
donde pn (x) es el polinomio interpolador de Langrange, que viene dado por
n
X
pn (x) = f (xi )`i (x),
i=0

y los polinomios `i (x) son los polinomios básicos de Lagrange que están definidos
por
n  
Y x − xk
`i (t) = .
k=0
xi − xk
k6=i

Por otro lado, si miramos cualquier libro de la bibliografı́a sobre interpolación,


sabemos que el error de interpolación que cometemos viene dado por la fórmula
de Cauchy, esto es:

f (n+1) (ξ)
e(f (x)) = w(x),
(n + 1)!
con w(x) el polinomio nodal dado por w(x) = (x − x0 )(x − x1 ) . . . (x − xn ).
Derivando la expresión (3.17) tenemos:
n
∂f (n+1) (ξ)
 
0
X 1
f (x) = f (xi )`0i (x) + f (n+1) 0
(ξ)w (x) + w(x) ,
i=0
(n + 1)! ∂x

Particularizando para x = xk con k = 0, 1, . . . , n,

69
n n
!
X 1 Y
f 0 (xk ) = f (xi )`0i (xk ) + f (n+1) (ξ) (xk − xj ) .
i=0
(n + 1)! j=0,j6=k

Obtención de algunas fórmulas de derivación numérica usando el poli-


nomio interpolador de Lagrange

Utilizando el polinomio de Lagrange, vamos a deducir las fórmulas para la


primera y segunda derivada. Usamos tres puntos: x0 = x–h, x1 = x y x2 = x + h.

P2 (t) = f (x0 )`0 (t) + f (x1 )`1 (t) + f (x2 )`2 (t)
(t − x1 )(t − x2 ) (t − x0 )(t − x2 )
= f (x0 ) + f (x1 )
(x0 − x1 )(x0 − x2 ) (x1 − x0 )(x1 − x2 )
(t − x0 )(t − x1 )
+ f (x2 )
(x2 − x0 )(x2 − x1 )
(t − x)(t − x − h) (t − x + h)(t − x − h)
= f (x − h) + f (x)
(x − h − x)(x − h − x − h) (x − x + h)(x − x − h)
(t − x + h)(t − x)
+ f (x + h)
(x + h − x + h)(x + h − x)
(t − x)(t − x − h) (t − x + h)(t − x − h)
= f (x − h) 2
− f (x)
2h h2
(t − x + h)(t − x)
+ f (x + h) ,
2h2
Ahora, derivando en la expresión obtenida respecto de la variable t y posterior-
mente evaluando en x, que es donde queremos obtener la aproximación de la
derivada, tenemos:
2t − 2x − h 2t − 2x 2t − 2x + h
P20 (t) = f (x − h) 2
− f (x) 2
+ f (x + h) ,
2h h 2h2
2x − 2x − h 2x − 2x 2x − 2x + h
P20 (x) = f (x − h) 2
− f (x) 2
+ f (x + h) ,
2h h 2h2
f (x − h) f (x + h)
P20 (x) = − + .
2h 2h
Por lo tanto, hemos obtenido que

f (x + h) − f (x − h)
P20 (x) = , (3.18)
2h
y podemos aproximar

f (x + h) − f (x − h)
f 0 (x) ≈ .
2h
Nota 3.5. Hemos recuperado la fórmula de derivación por el método de Tay-

70
lor (3.8), lo siguiente que vamos a hacer es derivar dos veces P2 (t) y vamos a
recuperar la fórmula para la segunda derivada de la página 64.

Derivamos dos veces P2 (x) y evaluamos en x para obtener:

2(1) − 0) 2(1) − 0 2(1) − 0


P200 (t) = f (t − h) 2
− f (t) 2
+ f (t + h) ,
2h h 2h2
f (x − h) 2f (x) x + h
P200 (x) = − +
h2 h2 h2
f (x − h) 2f (x) f (x + h)
= − + .
h2 h2 h2
Con ello tenemos:
f (x − h) − 2f (x) + f (x + h)
f 00 (t) ≈ . (3.19)
h2

3.5.2. El polinomio interpolador de Newton


Vamos a deducir, manera de ejemplo, las fórmulas de la primera derivada,
utilizando dos y tres puntos, y, el polinomio interpolador de Newton [8].
Fórmula con dos puntos:
Sean los puntos x0 y x1 :

p(x) = f (x0 ) + f [x0 , x1 ](x − x0 ), (3.20)

donde f [x0 , x1 ] es la diferencia dividida de Newton definida por

f [xk ] = f (xk ),
f (xk+1 ) − f (xk )
f [xk , xk+1 ] = ,
xk+1 − xk
f [xk+1 , xk+2 ] − f [xk , xk+1 ]
f [xk , xk+1 , xk+2 ] = ,
xk+2 − xk
..
.
f [xk+1 , xk+2 , . . . , xk+i ] − f [xk , xk+1 , . . . , xk+i−1 ]
f [xk , xk+1 , . . . , xk+i ] = .
xk+i − xk

Derivando (3.20) nos queda:

f (x1 ) − f (x0 )
p0 (x) = f [x0 , x1 ] = .
x1 − x0

Si hacemos x1 = x0 + h, al reemplazar en la ecuación anterior, nos quedarı́a


la formula (3.6) de la primera derivada, obtenida mediante la serie de Taylor.
Fórmula con tres puntos:
Sean los puntos x0 , x1 y x2 , su polinomio interpolador es:

71
p(x) = f (x0 ) + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 ).

Derivando:

p0 (x) = f [x0 , x1 ] + f [x0 , x1 , x2 ](2x − (x0 + x1 ))0 ,

finalmente, evaluando los puntos x0 = x − h, x1 = x y x2 = x + h obtenemos la


fórmula de derivación centrada y de orden 2 para la primera derivada.
Se deja al lector como ejercicio obtener nuevas fórmulas usando distintos po-
linomios interporladores.

3.6. Inestabilidad de las fórmulas de derivación


numérica
En las fórmulas de derivación numérica antes vistas, se cometen errores. Ası́
por ejemplo, considerando la formula progresiva para la primera derivada, al
calcular los valores de f (x + h) y f (x), se cometen errores de redondeo: e(h) y
e(−h), respectivamente [13].
Para ejemplificarlo, vamos a seguir el contenido y el ejemplo de [8, Pags.
160-162]. Sabemos que para la primera derivada tenemos

f 00 (ξ) f (x + h) − f (x)
f 0 (x) = Dh (f ) − h, Dh (f ) = .
2 h
Asi, sı́ existe |f 00 (ξ)| ≤ M2 , entonces teoricamente el error vendrı́a dado por

M2
|f 0 (x) − Dh (f )| ≤ h,
2
lo que nos lleva a pensar que mientras menor sea el paso h, menor es el error,
llegando a pensar que el error será 0 cuando h → 0.
Pero no podemos evitar errores de cancelación, por lo que no evaluamos la fun-
ción f , sino una pertubarción dada por f (x) = f˜(x) + e(x). Usando la linealidad
del operador derivada Dh (f ) tendrı́amos:

f 0 (x) − Dh (f˜) = f 0 (x) − Dh (f ) − Dh (e).

Si asumimos que máx{e(x) : x ∈ [x, x + h]} := ||e||∞ ≤ ε, entonces



e(x + h) − e(x) 2ε
|Dh (e)| ≤ ≤ .
h h

De esta manera, la cota real serı́a:

M2 2ε
|f 0 (x) − Dh (f˜)| ≤ h+ .
2 h
72
Para valores muy pequeños de h, tenemos un valor O(1/h) que domina, por
lo tanto, hay un valor mı́nimo de h que es el error más pequeño al que podemos
aspirar. Vamos a ver esto con un ejemplo (ver [8, Ej. 1.4]).

Ejemplo 3.7. Vamos a comprobar las conclusiones anteriores por medio del
siguiente experimento. Sea f (x) = sen(x) y vamos a aproximar f 0 (π/3,2) =
cos(π/3,2) usando la derivada progresiva vista en (3.6). Vamos a usar los pa-
sos h = 10−4 , 10−5 , . . . , 10−12 .

Solución: Vamos a usar Matlab, con este pequeño código Matlab nos devuelve
todos los valores requeridos:

format long
p=(4:12);
paso=10.^(-p);
aprox=(sin(pi/3.2+paso)-sin(pi/3.2))./paso;
error=aprox-cos(pi/3.2)

Los resultados obtenidos son:

h Error cometido
10−4 −0,0000415744072991275
10−5 −0,0000041573645016557
10−6 −0,0000004157574774455
10−7 −0,0000000420564073567
10−8 0,0000000012422906037
10−9 0,0000000234467510962
10−10 −0,0000001985978538288
10−11 −0,0000035292669278153
10−12 −0,0000146314971739558

Como vemos, el error más pequeño es cuando h = 10−8 , lo que coincide con
el análisis anterior. 2

3.7. Extrapolación de Richardson


La extrapolación de Richardson, es un método de derivación numérica que
busca mejorar la precisión del cálculo de la derivada, disminuyendo el error li-
mitado por el parámetro h [9]. Si pensamos en los métodos obtenidos por el
desarrollo de Taylor, al truncar la serie tenemos un error que viene dado por

e(f ) = c0 h + c1 hn+1 + c2 hn+2 + . . .

¿Podrı́amos modificar el método numérico para pasar de un O(hn ) a un paso


O(hn+1 )?, en otras palabras, ¿podemos cancelar el término O(hn )? SI, para verlo
se hará lo siguiente: Considérese la función N (h):

73
N (h) = N0 + αhm + O(hm+1 ), (3.21)
Siendo N (h) una aproximación a N0 de orden m y h → 0. Sustituyendo h por
τ h, siendo 0 < τ y τ 6= 1, nos queda:

N (τ h) = N0 + αhm τ m + O(hm+1 ), (3.22)


Multiplicando por τ m la expresión (3.21) y restándole la (3.22), tenemos:

τ m N (h) = τ m N0 + τ m αhm + τ m O(hm+1 )


−N (τ h) = −N0 − τ m αhm − O(hm+1 )
τ m N (h) − N (τ h) = τ m N0 − N0 + τ m O(hm+1 ) − O(hm+1 )

Con esto, obtenemos que:

τ m N (h) − N (τ h) = (τ m − 1)N0 + (τ m − 1)O(hm+1 )


τ m N (h) − N (τ h) = (τ m − 1)[N0 + O(hm+1 )]
τ m N (h)−N (τ h)
τ m −1
= N0 + O(hm+1 )

¿Qué acabamos de obtener? Pues hemos obtenido un método numérico

τ m N (h) − N (τ h)
τm − 1
que converge a una cantidad N0 con un orden O(hn+1 ). Es importante fijarnos
que este proceso se puede repetir y pasar a obtener otro nuevo método numérico
de orden O(hn+2 ), O(hn+3 ), etc... En realidad, acabamos de probar el siguiente
teorema:

Teorema 3.2 (Extrapolación de Richardson reiterada). [10] Supongamos


que para la función N (h) es válido el desarrollo asintótico

N (h) = N0 + n1 hp1 + n2 hp2 + . . . , 0 < p1 < p2 . . . , h → 0.


Sean τ > 0 y τ 6= 1, y la sucesión Nn (h), dada recursivamente por:

N1 (h) = N (h),
τ pn Nn (h) − Nn (τ h)
Nn+1 (h) = , n ∈ N. (3.23)
τ pn − 1
Entonces
Nn (h) = N0 + O(hpn ), h → 0.

Nota 3.6. Es muy importante destacar que este método que acabamos de desa-
rrollar es válido para cualquier fórmula de derivación numérica, incluso en el
capı́tulo siguiente, lo podremos usar para integración numérica.

74
En el Apéndice C veremos su implementación en Matlab y más ejemplos, pero
ahora vamos a ver este método usando los datos del Ejemplo 3.7 y realizandolo
a mano:
Ejemplo 3.8. Usando los datos obtenidos en el Ejemplo 3.7, para h = 10−4 , h =
10−5 y h = 10−6 que son respectivamente 0,555528658612303, 0,555566075655101
y 0,555569817262125. Aplicar la fórmula (3.23) con τ = 10 y obtener una mejor
aproximación de cos(π/3,2).
Solución: Claramente usando el Teorema de la Extrapolación de Richardson,
rapidamente tenemos:

N1 (10−4 ) = 0,555528658612303,
N1 (10−5 ) = 0,555566075655101,
N1 (10−6 ) = 0,555569817262125.

Ahora necesitamos calcular N2 (h), para ello usamos (3.23):


10 × N1 (10−5 ) − N1 (10 × 10−5 )
N2 (10−5 ) = = 0,555570233104301,
10 − 1
10 × N1 (10−6 ) − N1 (10−5 )
N2 (10−6 ) = = 0,555570232996239.
10 − 1
Por último,

−6102 × N2 (10−6 ) − N2 (10−5 )


N3 (10 ) = = 0,555570232995148.
100 − 1
Por tanto, la mejor aproximación es N3 (10−6 ) = 0,555570232995148. Los datos
se pueden escribir en forma de matriz triangular inferior, y esto nos va a ayudar
a la hora de implementarlo en Matlab de forma eficiente (ver implementación en
Matlab en Apéndice C):

N1 (10−4 ) = 0,555528658612303
N1 (10−5 ) = 0,555566075655101 N2 (10−5 ) = 0,555570233104301
N1 (10−6 ) = 0,555569817262125 N2 (10−6 ) = 0,555570232996239 N3 (10−6 ) = 0,555570232995148

Nota 3.7. La forma de llenar esta matriz es muy sencilla, la primera columna
es aplicar el método numérico que queramos, por ejemplo, la derivada progresiva
con distintos valores de h, en realidad, lo valores de h son h/τ i−1 donde i indica
la posición o fila de la matriz, es decir, eligiendo el h de partida en la posición
de la matriz a1,1 , en este caso h = 10−4 , el resto vienen prefijados.
Para el resto de columnas, la posición ai,j con j ≤ 2, se llenan usando unica-
menente ai,j−1 y ai−1,j−1 y la fórmula (3.23).
Nota 3.8. En la práctica se suele usar τ = 2 por estabilidad computacional (ver
[8, Cap. 3]).

75
76
Bibliografı́a

[1] Bartle, R. (2004) Introducción al Análisis Matemático de una variable. Méxi-


co D. F. México: Limusa S.A.

[2] Chapra, S. C. (2011) Métodos Numéricos para ingenieros. Mexico D. F.,


México: Editorial McGraw Hill.

[3] Garcı́a, J. (23 de julio de 2017) Interpolación y Aproxima-


ción, Integración. Ediciones Universidad de Lleida. Obtenido de
http://numat.net/mat/an vol 1.pdf

[4] Gautschi, W. (2002) Numerical Analysis. New York, Estados Unidos: Sprin-
ger.

[5] Infante del Rı́o, J. y Rey-Cabezas, J. M. (2015) Métodos numéricos: teorı́a,


problemas y prácticas con MATLAB (4a. ed.). Madrid, España: Ediciones
Pirámide ProQuest ebrary.

[6] Issac A. y Garcı́a, S. M. (2009) Métodos numéricos: problemas resueltos y


prácticas. Lleida, España: Ediciones de la Universidad de Lleida.

[7] Jerves, A. (2008) Elementos de cálculo numérico. Cuenca, Ecuador: Edicio-


nes Abya-Yala.

[8] Martı́nez-Finkelshtein, A. y Moreno-Balcázar, J. J. (1999) Métodos Numéri-


cos: Aproximación en R. Almerı́a, España: Servicio de Publicaciones de la
Universidad de Almerı́a.

[9] Moreno, C. (2007) Introducción al cálculo numérico. Madrid, España: Uni-


versidad Nacional de Educación a distancia.

[10] Moreno-Balcázar, J. J. (2017) Apuntes de Métodos Numéricos II. Almerı́a,


España: Grado en Matemáticas de la Universidad de Almerı́a.

[11] Quarteroni, A. Sacco, R. y Saleri, F. (2000) Numerical Mathematics. New


York, Estados Unidos: Springer.

[12] Vázquez, L. y Jiménez, S. (2009) Métodos numéricos para la fı́sica y la in-


genierı́a. Madrid, España: Editorial McGraw-Hill España.

[13] Vigo Aguilar, J. R. (22 de julio de 2016) Utilización de nuevas tecnologı́as


en la asignatura de Análisis Numérico en el grado de Matemáticas.

77
78
Capı́tulo 4

INTEGRACIÓN NUMÉRICA:
CUADRATURAS DE NEWTON
- COTES, MÉTODO DE
ROMBERG Y CUADRATURAS
ADAPTATIVAS

Autores: Juan F. Mañas–Mañas1 , Maritza A. Pinta2 .

1 Departamento de Matemáticas, Universidad de Almerı́a, España.


2 Unidad Académica de Ingenierı́a Civil, Universidad Técnica de Machala, Ecuador.
1 jmm939@ual.es, 2 mpinta@utmachala.edu.ec

El propósito de este capı́tulo es presentar diferentes métodos de integración


numérica de una función f : [a, b] → R, es decir, aproximar
Z b
I(f ) = f (t)dt. (4.1)
a

En multitud de problemas matemáticos, fı́sicos, estadisticos, quı́micos, . . .


nos encontramos con integrales que no pueden expresarse como una combinación
finita de funciones elementales. Ejemplos tı́picos son:
Z Z
−t2 sen(t)
e dt ó dt.
t
A veces, la función a integrar solo es conocida por una tabla de valores. Otro
ejemplo (ver [9]) usado en el campo de la termodinámica estadı́stica, es el modelo
de Debye para calcular la capacidad calórica de un sólido, se considera la función:
Z x
t3
Φ(x) = t
dt.
0 e −1

Puesto que no hay una expresión para Φ(x), necesitamos una aproximación

79
numérica. Durante este capı́tulo vamos a intentar dar solución a estos proble-
mas. Comenzaremos viendo algunos conceptos como el grado de exactitud de
una fórmula de cuadratura para la integración numérica. Posteriormente veremos
fórmulas conocidas como Trapecios y Simpson y la obtención de otras fórmulas
con el método de coeficientes indeterminados. Se darán cotas del error cometi-
do y finalmente veremos el Método de Romberg (a raı́z de la extrapolación de
Richardson vista en el capı́tulo anterior) y cuadraturas adaptativas.
A lo largo de todo el capı́tulo se verán ejemplos resueltos de todas las fórmulas
de cuadratura, y en el Apéndice D se podrá encontrar todos los códigos preparados
para utilizar en Matlab, ası́ como más ejemplos resueltos y algunos problemas
propuestos.

4.1. Introducción a la integración numérica


Ahora afrontamos el problema de integración numérica, es decir, aproximar
(4.1) mediante fórmulas de cuadratura.
Definición 4.1. Sea f una función continua en el intervalo [a, b]. Sean x0 , . . . , xn
puntos contenidos en el dominio de f verificando que a ≤ x0 < x1 < . . . < xn ≤ b.
Entonces se denomina fórmula de cuadratura a la expresión
n
X
I(f ) = λi f (xi ) = λ0 f (x0 ) + λ1 f (x1 ) + · · · + λn f (xn ). (4.2)
i=0

Los valores λi ∈ R son los pesos de la cuadratura y a xi ∈ [a, b] con i ∈


{0, 1, . . . , n} se denominan nodos de la cuadratura.
Definición 4.2. A la diferencia entre el valor real I(f ) y la aproximación I(f )
dada por (4.2) se le denomina error de la cuadratura y lo denotaremos por
E(f ), es decir,

I(f ) = I(f ) + E(f ).


Durante el desarrollo de este capı́tulo los nodos xi van a ser fijados y posterior-
mente vamos a tomar los pesos cumpliendo diversas condiciones, esto cambiará
en el siguiente capı́tulo, donde la elección de los nodos será libre.
Definición 4.3. El máximo valor m tal que para todo polinomio f ∈ Pm , el error
de la cuadratura es E(f ) = 0, se llama grado de exactitud de la cuadratura
(4.2).
En otras palabras, si una fórmula de cuadratura tiene grado de exactitud 3
quiere decir que el valor dado por (4.2) es el valor exacto de I(f ) para cualquier
polinomio de grado 3 en el intervalo [a, b].
Nota 4.1. El concepto de grado de exactitud de una fórmula de cuadratura
no depende del intervalo [a, b] de integración donde estamos trabajando ya que
podemos pasar cualquier intervalo [a, b] a otro intervalo [c, d] con solo hacer un
cambio de variable afı́n, es decir, de la forma mx+n, y con dicho cambio el grado
del polinomio no cambia.

80
Con la idea de obtener fórmulas de integración numérica con el mayor grado
de precisión posible vamos a obtener diferentes fórmulas de cuadratura.
Para finalizar la sección, es importante destacar la infinidad de métodos de in-
tegración que hay en la literatura. En este capı́tulo seguiremos técnicas analı́ticas,
pero podemos encontrar otros métodos basados en otras técnicas, como probabi-
listicas. Mirar por ejemplo el método de Monte Carlo para integración numérica
(ver [5] y [6]).

4.2. Método de coeficientes indeterminados


El propósito de esta sección es encontrar fórmulas de integración numérica de
la forma (4.2) de manera que verifiquen el mayor grado de exactitud posible.
Empezaremos con algunos casos particulares, como el ejemplo del Punto Medio,
Trapecios o Simpson, y ası́, establecer la técnica para poder probar el caso general.
El método consiste en fijar los nodos del intervalo [a, b] donde estamos intere-
sados en integrar. Fijados dichos nodos buscamos que los pesos de la cuadratura
λi en la fórmula (4.2) de manera que se tenga el mayor grado de exactitud posible.

4.2.1. Regla del Rectángulo a Izquierda


Vamos a tomar como único nodo x0 = a, por tanto nuestra cuadratura vendrá
dada por
I(f ) = λ0 f (x0 ) = λ0 f (a). (4.3)
Como solo tenemos un parámetro libre que es λ0 , solamente podemos exigir que
sea exacta en P0 .
Antes de seguir, es importante recordar que el proceso de integración es un
proceso lineal, eso quiere decir que I(αf +βg) = αI(f )+βI(g), por lo tanto, para
probar que el grado de exactitud de cualquier fórmula de cuadratura es m basta
con asegurar la exactitud en la base canónica de Pm , es decir, en {1, t, t2 . . . , tm }
y que la cuadratura no es exacta para tm+1 .
Sabiendo todo lo anterior, tenemos que probar la exactitud para la base
canónica de P0 , que es la función f (t) = 1 en el intervalo [a, b]:
Z b
dt = b − a. (4.4)
a

Finalmente, igualando (4.3) a (4.4) y usando que f (a) = 1 ya que f (t) = 1,


obtenemos que
λ0 = (b − a).
Acabamos de obtener nuestra primera fórmula de cuadratura, que vamos a
llamar Regla del Réctángulo a Izquierda, y viene dada por:

IRI (f ) = (b − a)f (a)


Geometricamente lo que estamos haciendo es aproximar el área de una función
(supuesto que la función es positiva) por el rectángulo formado por la base que

81
mide (b − a) y de altura f (a) (ver figura 4.1).

Figura 4.1: Interpretación geométrica de la Regla del Rectángulo a Izquierda


2.0
ⅇ-x sin(5 x) + 1

1.5

1.0

0.5

0.5 1.0 1.5 2.0

Fuente: Elaboración propia.

La Figura 4.1 muestra la gráfica de la función f (x) = e−x sen(5x) + 1 y en


color azul el rectángulo formado por la base [0, 2] y de altura f (0) = 1.
El valor real de la integral es
Z 2   
1 5 cos(10) + sen(10)
f (t)dt = 57 − = 2,216977121782524
0 26 e2

y la aproximación por la cuadratura de Rectángulo a Izquierda serı́a IRI (f ) =


(2 − 0)f (0) = 2. Por tanto estamos cometiendo un error en valor absoluto de

|E(f )| = |I(f ) − IRI (f )| = 0,216977121782524.

4.2.2. Regla del Rectángulo a Derecha


Siguiendo un proceso similar a la sección anterior y exigiendo que solo toma-
mos un nodo y este sea x0 = b obtenemos la Regla del Réctángulo a Derecha
que viene dada por:

IRD (f ) = (b − a)f (b)


Geometricamente vamos a aproximar nuestra integral por el rectángulo de
altura f (b). Veamos la Figura 4.2.
En este caso, la aproximación por la cuadratura de Rectángulo a Derecha serı́a
IRD (f ) = (2 − 0)f (2) = 1,852749497742181. Por tanto estamos cometiendo un
error en valor absoluto de

|E(f )| = |I(f ) − IRD (f )| = 0,364227624040343.

Nota 4.2. Este ejemplo nos podrı́a llevar a pensar que se comete más error
usando el Rectángulo a Derecha que a Izquierda. Hay que decir que eso no es

82
Figura 4.2: Interpretación geométrica de la Regla del Rectángulo a Derecha
2.0
ⅇ-x sin(5 x) + 1

1.5

1.0

0.5

0.5 1.0 1.5 2.0


Fuente: Elaboración propia.

ası́, dependerá de cada función y un análisis del error será hecho en la siguiente
sección.

4.2.3. Regla del Punto Medio


En los dos métodos anteriores hemos elegido el extremo inferior y el superior
del intervalo, una buena idea puede ser coger el punto medio, y realizando unos
calculos similares obtenemos la Regla del Punto Medio que viene dada por:
 
a+b
IP M (f ) = (b − a)f
2
Siguiendo con la misma función de las secciones anteriores tenemos

Figura 4.3: Interpretación geométrica de la Regla del Punto Medio


2.0
ⅇ-x sin(5 x) + 1

1.5

1.0

0.5

0.5 1.0 1.5 2.0


Fuente: Elaboración propia.

En este caso, la aproximación por la cuadratura del Punto Medio viene dada
por IP M (f ) = (2 − 0)f (1) = 1,294462947422388. Por tanto estamos cometiendo
un error en valor absoluto de

|E(f )| = |I(f ) − IP M (f )| = 0,922514174360136.

83
Ejemplo 4.1. Comprobar que el grado de exactitud de la cuadratura del Punto
Medio es m = 1.

Solución: Hay que probar que el método es exacto para todos los polinomios
p(t) ∈ P1 , por linealidad, es suficiente con probar con la base canónica, en este caso
con los polinomios {1, t}. Por construcción, claramente es exacto para f (t) = 1,
veamos para f (t) = t:

b b
b 2 − a2 (b − a)(b + a)
Z Z
f (t)dt = tdt = = ,
a a 2 2
 
a+b a+b
IP M (f ) = (b − a)f = (b − a) .
2 2

Claramente las dos cantidades son iguales, por tanto, tenemos que al menos el
grado de exactitud es 1. Veamos que pasa para p(t) = t2 .

b b
b 3 − a3
Z Z
f (t)dt = t2 dt = ,
a a 3
   2
a+b a+b
IP M (f ) = (b − a)f = (b − a) .
2 2

No se puede probar la igualdad para cualquier a, b ∈ R, por lo tanto, la Regla


del Punto Medio no puede ser exacta para polinomios de grado 2. Con ello, se
deduce que la Regla del Punto Medio tiene grado de exactitud m = 1. 2

4.2.4. Regla de los Trapecios


Ahora vamos a tomar dos nodos (n = 1). Tomamos el extremo inferior y
el extremo superior del intervalo como nodos, es decir, x0 = a y x1 = b. Si
recordamos la fórmula de cuadratura genérica (4.2), en nuestro caso con dos
nodos la cuadratura de los Trapecios quedarı́a IT (f ) = λ0 f (a) + λ1 f (b), tenemos
dos parámetros libres, por tanto, podemos exigir que sea exacta al menos en P1 ,
con lo cual, tenemos el siguiente sistema de ecuaciones:

Z b
λ0 f (a) + λ1 f (b) = λ0 + λ1 = dt = b − a,
a
b
b 2 − a2
Z
λ0 f (a) + λ1 f (b) = λ0 a + λ1 b = tdt = .
a 2
b−a
Resolviendo el sistema tenemos λ0 = λ1 = . Ası́, la cuadratura de Trapecios
2
viene dada por

b−a 
IT (f ) = f (a) + f (b)
2

84
Su nombre es debido a que geometricamente estamos aproximando el área de
la función asociada por el trapecio de base el eje de abscisas y de alturas f (a) y
f (b) (ver figura 4.4).

Figura 4.4: Interpretación geométrica de la Regla de los Trapecios


2.0
ⅇ-x sin(5 x) + 1

1.5

1.0

0.5

0.5 1.0 1.5 2.0


Fuente: Elaboración propia.

Al igual que los casos anteriores vamos a calcular la aproximación de

2
2−0
Z
e−t sen(5t) + 1 dt ≈
 
f (0) + f (2) = 1,926374748871091.
0 2

Por analogı́a con los casos anteriores, veamos el valor absoluto del error co-
metido:
|E(f )| = |I(f ) − IT (f )| = 0,290602372911433.

4.2.5. Regla de Simpson


El último ejemplo que vamos a obtener mediante esta técnica es la famosa
Regla de Simpson, para ello tomamos 3 nodos (n = 2). La idea es tomar los
extremos del intervalo y el punto medio, es decir, x0 = a, x1 = a+b
2
y x2 = b.
Nuestra cuadratura será de la forma
 
a+b
IS (f ) = λ0 f (a) + λ1 f + λ2 f (b).
2

Ya que disponemos de tres parámetros, lo lógico es exigir un grado de exactitud


m = 2, con ello tenemos el siguiente sistema de ecuaciones:

Z b
λ0 + λ1 + λ2 = dt = b − a,
a
Z b
a+b b 2 − a2
λ0 a + λ1 + λ2 b = tdt = ,
2 a 2
2 Z b
b3 − a3

2 a+b 2
λ0 a + λ1 + λ2 b = t2 dt = .
2 a 3

85
b−a 4(b − a)
Y resolviendo el sistema obtenemos λ0 = λ2 = y λ1 = . Ası́, la
6 6
cuadratura de Simpson viene dada por
   
b−a a+b
IS (f ) = f (a) + 4f + f (b)
6 2
Vamos a aproximar nuestro ejemplo por el método de Simpson,
Z 2
2−0
e−t sen(5t) + 1 dt ≈

(f (0) + 4f (1) + f (2)) = 1,505100214571955.
0 6

Y el valor absoluto del error cometido:

|E(f )| = |I(f ) − IS (f )| = 0,711876907210568.

4.2.6. Método de coeficientes indeterminados


Si recordamos, por ejemplo, el método de Trapecios, hemos construido dicho
método exigiendo que tenga un grado de exactitud de al menos 1 con 2 nodos (n =
1). Esta idea es la llevada a cabo en todos los ejemplos vistos anteriormente. El
paso siguiente es generalizar estos ejemplos y obtener una fórmula de cuadratura
que con n + 1 nodos se pueda asegurar un grado de exactitud de al menos n.
Tomemos n + 1 nodos dentro del intervalo [a, b] de la forma

a ≤ x0 < x1 < . . . < xn ≤ b,

y vamos a escoger los pesos de la cuadratura λi con i ∈ {0, 1, . . . , n} de la fórmula


(4.2) de manera que dicha fórmula de cuadratura vaya a tener un grado de exac-
titud de al menos n. Al igual que los ejemplos, planteamos el sistema asociado.
Ya que disponemos de n + 1 parámetros libres (λi ) necesitamos n + 1 ecuaciones.
Para asegurar que el grado de exactitud sea n, tenemos que probar la igualdad
para la base canónica de Pn , veamos el sistema asociado:

Z b
λ0 + λ1 + λ2 + · · · + λn = dt = b − a,
a
b
b 2 − a2
Z
λ0 x0 + λ1 x1 + λ2 x2 + · · · + λn xn = tdt = ,
a 2
Z b
b 3 − a3
λ0 x20 + λ1 x21 + λ2 x22 + · · · + λn x2n = t2 dt = ,
a 3
..
.
Z b
bn+1 − an+1
λ0 xn0 + λ1 xn1 + λ2 xn2 + · · · + λn xnn = tn dt = .
a n+1

Escribiendo este sistema en forma matricial, para clarificar, tenemos:

86
b−a
    
1 1 1 ... 1 λ0
b2 −a2

 x 0 x1 x2 . . . xn    λ1  
  
2


b3 −a3

 x20 x21 x22 2 
. . . xn   λ2  =

3


 .. .. .. .. ..   ..   .. 
 . . . . .  .   . 
x0 x1 xn2
n n
. . . xnn λn bn+1 −an+1
n+1

Si miramos la matriz del sistema claramente nos encontramos con una matriz
de Vandermonde y sabemos que cuando todos los nodos son distintos (en este
caso) es una matriz con determinante distinto de cero, por tanto, el sistema es
compatible determinado.
Con esto acabamos de probar el siguiente

Teorema 4.1. (ver por ejemplo [2, Th. 3.9]) Para cualquier selección de
n + 1 nodos contenidos en el intervalo [a, b] de la forma

a ≤ x0 < x1 < . . . < xn ≤ b,

existe un único conjunto de pesos de la cuadratura λi con i ∈ {0, 1, . . . , n} de


manera que la fórmula de cuadratura (4.2) tiene un grado de exactitud mayor o
igual a n.

4.3. Fórmulas de cuadratura interpolatorias


En la sección anterior hemos encontrado un método para buscar cuadratura
que tengan un grado de exactitud deseado. Pero nos encontramos con un grave
problema, ¿Qué error estamos cometiendo? En los ejemplos anteriores hemos
podido calcular el error cometido ya que disponemos del valor real, pero y si nos
piden aproximar por Simpson Z 5
2
e−t dt,
−2

en este caso no disponemos del valor real, por tanto, no tenemos un valor del
error cometido. Además, resolver el sistema anterior puede ser muy complicado
para n grande.
El siguiente objetivo va a ser solventar estos problemas. Siguiendo con las
ideas de [1], [2] ó [4], sabemos que integrar un polinomio es una tarea sencilla,
pues nuestra idea (gracias a la interpolación numérica) va a ser cambiar nuestra
función f (t) por su polinomio interpolador p(t) y el error cometido e(t):

f (t) = p(t) + e(t), t ∈ [a, b]. (4.5)


Integrando en ambos lados de la igualdad tenemos,
Z b Z b Z b
I(f ) = f (t)dt = p(t)dt + e(t)dt,
a a a

y con ello podemos asumir que nuestra aproximación I(f ) y nuestro error E(f )
serán

87
Z b Z b
I(f ) = p(t)dt, E(f ) = e(t)dt. (4.6)
a a

Podemos tomar el polinomio interpolador de Langrange pn (t), que viene dado


por
n
X
pn (t) = f (xi )`i (t),
i=0

y los polinomios básicos de Lagrange están definidos por


n  
Y t − xk
`i (t) = .
x i − xk
k=0
k6=i

Ası́, nuestra aproximación I(f ) queda:


Z b n
Z bX n
X Z b
I(f ) = pn (t)dt = f (xi )`i (t)dt = f (xi ) `i (t)dt,
a a i=0 i=0 a

y comparando con la fórmula (4.2) se tiene que


Z b
λi = `i (t)dt (4.7)
a

Definición 4.4. Una fórmula de cuadratura (4.2) se llama interpolatoria si


los pesos λi están dados por la fórmula (4.7) o, equivalentemente, son válidas las
expresiones (4.5) y (4.6).
Teorema 4.2. ([8, Th. 3.2]) Una fórmula de cuadratura (4.2) tiene un grado
de exactitud mayor o igual que n si y sólo si es interpolatoria.
Ver la demostración de este teorema en [8, Pag. 169-170].

4.3.1. Análisis del error


Ahora estamos en condiciones de dar una cota del error, usando la interpo-
lación, y suponiendo que f (t) es suficientemente derivable en el intervalo [a, b],
tenemos que
f (t) = p(t) + e(t), t ∈ [a, b], (4.8)
y el error viene dado por
n
f (n+1) (ξt ) Y
e(t) = ωn (t), donde ωn (t) = (t − xi ), (4.9)
(n + 1)! i=0
(n+1)
y ξt ∈ [a, b]. Si disponemos de una cota de |f (t)| ≤ M en el intervalo [a, b]
obtenemos que
Z b Z b
M
E(f ) := e(t)dt ≤ ωn (t)dt . (4.10)
a (n + 1)!
a

88
Es importante destacar que la última integral siempre se puede calcular ya que
es la integral de un polinomio. Además, en las siguientes secciones vamos a ver
algunos casos particulares.

Nota 4.3. En el razonamiento anterior consideramos fórmulas de cuadratura


que provienen de integrar el polinomio interpolador de Lagrange. No obstante, la
Definición 4.4 es de carácter general, es decir, es posible considerar fórmulas de
cuadratura de tipo interpolatorio que provienen de integrar otros polinomios de
interpolación, por ejemplo, el polinomio interpolador de Hermite.

Rectángulo a izquierda
Vamos a aproximar f (t) con solo 1 nodo (n = 0) y vamos a tomar x0 = a. Es
facil ver que nuestro polinomio interpolador es p(t) = f (a). Por lo tanto, usando
las fórmulas (4.8)-(4.10) tenemos que

f (t) − p(t) = e(t),


f (t) − f (a) = e(t),
Z b Z b Z b
f (t)dt − f (a)dt = e(t)dt.
a a a

En la primera parte de la igualdad tenemos que


Z b Z b
I(f ) = f (t)dt ≈ f (a)dt = f (a)(b − a) = IRI (f ).
a a
Acabamos de recuperar la fórmula de la cuadratura del Rectángulo a Izquierda
vista anteriormente. Muy importante destacar que no tenemos una igualdad,
tenemos una aproximación (≈). Veamos una cota del error. Usando n = 0 y las
fórmulas (4.9) y (4.10) obtenemos:

b f 0 (ξ) b
f 0 (ξ) (b − a)2
Z Z
(t − a)dt = f 0 (ξ)

|E(f )| = (t − a)dt ≤
.
a 1! 1 a 2

donde hemos tomado f 0 (ξ) = máx{|f 0 (t)| : t ∈ [a, b]}.


Con esto hemos vuelto a obtener la fórmula del Rectángulo a Izquierda y una
expresión del error cometido:

(b − a)2
IRI (f ) = (b − a)f (a), ERI (f ) = f 0 (ξ)
2

(Ver Ejemplo D.1 en la página 232).

Rectángulo a derecha
Haciendo un proceso totalmente análogo al anterior, se obtiene que

89
(b − a)2
IRD (f ) = (b − a)f (a), ERD (f ) = f 0 (ξ)
2

Punto Medio

En la Definición 4.4 y en la Nota 4.3 se dice que para obtener una cuadratura
podemos usar cualquier polinomio interpolador, la idea ahora es usar el polinomio
interpolador de Hermite con un solo nodo x0 = a+b 2
, pero usado en dos sitios
0
diferentes, f (x0 ) y en f (x0 ), por lo tanto n = 1. Nuestro polinomio interpolador
serı́a
    
0 a+b 0 a+b a+b
p(t) = f (x0 ) + f (x0 )(x − x0 ) = f +f x− ,
2 2 2

y el error, usando (4.9), quedarı́a como


2
f 00 (ξ)

a+b
e(t) = t− .
2! 2
Rb
Primero, veamos como queda a p(t)dt,

Z b Z b 
 Z b   
a+b 0 a+b a+b
p(t)dt = f dt + f x− dt
a a 2 a 2 2
    2 b  
a+b 0 a+b a + b a+b
= (b − a)f +f x− = (b − a)f ,
2 2 2 a 2

ya que el segundo sumando es cero. Acabamos de recuperar la fórmula del punto


medio. Veamos ahora como queda el término del error:

b Z b 2
f 00 (ξ)
Z
a+b
e(t)dt = t− dt
a 2! a 2
3 b
f 00 (ξ) t − a+b
2
00 3
= f (ξ) (b − a) ,

=
2 3
a 2 12

donde hemos denotado f 00 (ξ) = máx{|f 00 (t)| : t ∈ [a, b]}. Con ello tenemos

(b − a)3
 
a+b
IP M (f ) = (b − a)f , EP M (f ) = f 00 (ξ)
2 24

(Ver Ejemplo D.2 en la página 233).

90
Trapecios

Volvamos a seguir los pasos anteriores, vamos a tomar ahora dos nodos dife-
rentes y el polinomio interpolador de Lagrange (n = 1). Por tanto usamos x0 = a
y x1 = b. El polinomio interpolador serı́a

f (b) − f (a)
p(t) = f (a) + (t − a),
b−a
y el error viene dado por

f 00 (ξ)
e(t) = (t − a)(t − b).
2!
Vamos a calcular la fórmula de cuadratura y posteriormente la expresión del error:

b b b
f (b) − f (a)
Z Z Z
p(t)dt = f (a)dt + (t − a)dt
a a a b−a
b
f (b) − f (a) (t − a)2
= f (a)(b − a) +
b−a 2 a
2
f (b) − f (a) (b − a)
= f (a)(b − a) +
b−a 2
(b − a)
= f (a)(b − a) + (f (b) − f (a))
2
b−a 
= f (a) + f (b) .
2
Hemos recuperado la fórmula de cuadratura de Trapecios. Para calcular el error
necesitamos tener en cuenta que

b b
(b − a)3
Z Z
t2 − (a + b)t + ab dt = −

(t − a)(t − b)dt = .
a a 6
Usando esta integral nos queda que

b
f 00 (ξ)
Z
e(t)dt = − (b − a)3 .
a 12
Como siempre vamos a dar el error en valor absoluto, el signo menos de la expre-
sión del error anterior lo podemos obviar y tenemos que

(b − a) (b − a)3
ET (f ) = f 00 (ξ)

IT (f ) = f (a) + f (b) ,
2 12

(Ver Ejemplo D.3 en la página 235).

91
Simpson
Siguiendo un razonamiento similar a los anteriores vamos a recuperar la fórmu-
la de cuadratura de Simpson, para ello tomamos ahora el polinomio interpolador
de Hermite con 4 nodos (n = 3) en los puntos x0 , x1 , x1 y x2 . Sean x0 = a,
x1 = a+b
2
y x2 = b, entonces el polinomio interpolador y la expresión del error los
podemos escribir como (usando la notación de diferencia dividada):

     
a+b a+b a+b a+b
p(t) = f (a) + f a, (t − a) + f a, , (t − a) t −
2 2 2 2
   2
a+b a+b a+b
+ f a, , , b (t − a) t − ,
2 2 2
2
f (4) (ξ)

a+b
e(t) = (t − a) t − (t − b).
(4)! 2
Rb Rb
Si hacemos
 a+b a+b  a p(t)dt y  a e(t)dt, simplificando convenientemente y recordando
que f 2 , 2 = f 0 a+b 2
obtenemos

(b − a)5
   
(b − a) a+b
IS (f ) = f (a) + 4f + f (b) , ES (f ) = f (4) (ξ)
6 2 2880

Nota 4.4. Al igual que en el caso de Trapecios, hemos quitado un factor (−1)
de la fórmula del ES (f ).

(Ver Ejemplo D.4 en la página 235).

Nota 4.5. Usando cualquier polinomio interpolador podemos construir nuevas


fórmulas de cuadratura. Se deja como ejercicio al lector construir nuevas cuadra-
turas y expresiones del error cometido usando la fórmula (4.10).

4.4. Fórmulas de Newton-Cotes


Las fórmulas de cuadratura de Newton-Cotes son fórmulas de cuadratura
de tipo interpolatorio con nodos equiespaciados.

4.4.1. Fórmulas de Newton-Cotes simples


Definición 4.5. ([8, Def. 3.4]) Si los nodos xi están equiespaciados, las fórmu-
las interpolatorias se conocen como las cuadraturas de Newton–Cotes simples.
Si x0 = a y xn = b, las fórmulas de Newton–Cotes se llaman cerradas.

En el caso de nodos equiespaciodos, podemos escribir xi = x0 + ih, i ∈


{0, 1, . . . , n}, h > 0. Importante destacar que en las fórmulas de cuadratura de
Newton-Cotes cerradas, es decir, x0 = a y xn = b se tiene que h = b−a n
. Sabiendo

92
esto, y usando que cualquier fórmula de cuadratura de Newton-Cotes se puede
n
escribir como X [n]
I(f ) = (b − a) αi f (x0 + ih), (4.11)
i=0

vamos a dar las principales cuadraturas de Newton-Cotes simples:

Tabla 4.1: Tabla de principales cuadraturas simples de Newton-Cotes.


[n]
Nombre n αi Exactitud h Error
f 0 (ξ)
Rectángulo 0 1 0 - (b − a)2
2
f 00 (ξ)
Punto Medio 0 1 1 - (b − a)3
24

1 1 f 00 (ξ) 3
Trapecios 1 2 2
1 h=b−a h
12

1 4 1 b−a f (4) (ξ) 5


Simpson 2 6 6 6
3 h= h
2 90

1 3 3 1 b−a 3f (4) (ξ) 5


Simpson 3/8 3 8 8 8 8
3 h= h
3 80

7 32 12 32 7 b−a 8f (6) (ξ) 7


Boole 4 90 90 90 90 90
5 h= h
4 945

19 75 50 50 75 19 b−a 275f (6) (ξ) 7


Villarceau 5 288 288 288 288 288 288
5 h= h
5 12096

41 216 27 272 27 216 41 b−a 9f (8) (ξ) 9


Hardy 6 840 840 840 840 840 840 840
7 h= h
6 1400

Fuente: Elaboración propia.

Veamos como escribir algunas cuadraturas,


Trapecios (n = 1), usando la fórmula (4.11):
1
X [1]
IT (f ) = (b − a) αi f (a + i(b − a))
i=0 
[1] [1]
= (b − a) α0 f (a + 0(b − a)) + α1 f (a + 1(b − a))
 
1 1
= (b − a) f (a) + f (b) .
2 2

Simpson (n = 2), usando (4.11):

93
2
X [2] 
IS (f ) = (b − a) αi f a + i(b − a)/2
i=0
   
[2] [2] a+b [2]
= (b − a) α0 f (a) + α1 f + α2 f (b)
2
   
1 4 a+b 1
= (b − a) f (a) + f + f (b) .
6 6 2 6

Boole (n = 4), usando (4.11):

4
X [4]
IB (f ) = (b − a) αi f (a + i(b − a)/4)
i=0
    
[4] [4] b−a [4] b−a
= (b − a) α0 f (a) + α1 f a + + α2 f a + 2
4 4
  
[4] b−a [4]
+ α3 f a + 3 + α4 f (b)
4
    
7 32 b − 3a 12 b−a
= (b − a) f (a) + f + f
90 90 4 90 2
  
32 3b − a 7
+ f + f (b) .
90 4 90

Las fórmulas de Newton–Cotes con nodos situados simétricamente respecto


al centro del intervalo, tienen un error proporcional a una potencia impar del
paso h. En particular, desde el punto de vista teórico podrı́amos esperar que
I(f ) → I(f ) cuando h → 0. Sin embargo, las cuadraturas de Newton–Cotes
simples no se utilizan para n ≥ 8. El problema es debido a que afecta la estabilidad
numérica ya que para n ≥ 8 aparecen pesos negativos, y esto puede provocar
errores de cancelación (Ver más información sobre estabilidad y orden de fórmulas
de cuadratura en [8, Sect. 3.2.4] y [11, Sect. 12.10]).

4.4.2. Fórmulas de Newton-Cotes Compuestas


La idea de la fórmulas compuestas deR Newton-Cotes es bastante intuitiva,
10
supongamos que tenemos que aproximar 0 f (t)dt por el método de Trapecios,
estaremos cometiendo un error dado por la expresión

f 00 (ξ) 3 f 00 (ξ)
ET (f ) = (10 − 0) = 1000,
12 12
con f 00 (ξ) = máx{|f 00 (t)| : t ∈ [0, 10]}. Sin embargo, ya sabemos que
Z 10 Z 5 Z 10
f (t)dt = f (t)dt + f (t)dt,
0 0 5

94
y si en cada una de esas integrales las aproximamos por trapecios estarı́amos
cometiendo un error de
f 00 (ξ1 ) f 00 (ξ2 ) f 00 (ξ1 ) f 00 (ξ2 )
ET (f ) = (5 − 0)3 + (10 − 5)3 = 125 + 125,
12 12 12 12
y ya que f 00 (ξ) = máx{|f 00 (t)| : t ∈ [0, 10]}, entonces f (ξ1 ) + f (ξ2 ) ≤ 2f (ξ),
asi que el error que cometemos al aplicar Trapecios en las dos subintegrales es
f 00 (ξ)
≤ 250, claramente mucho más pequeño (en este caso 4 veces más pequeño)
12
que el error cometido al aproximar por Trapecios la integral inicial.
Con esta idea tan sencilla de subdividir el intervalo [a, b], y al igual que los
splines que encontramos en teorı́a de interpolación, la idea va a consistir en aplicar
las fórmulas de cuadratura vistas en la Tabla 4.1 y construir nuevas fórmulas de
cuadratura compuestas.

Rectángulo Compuesta

Vamos a encontrar una fórmula del rectángulo compuesta, para ello vamos a
b−a
tomar n+1 nodos equiespaciados, es decir, vamos a tomar un paso h = >0
n
y con ello obtenemos:

xi = a + ih, i = 0, 1, . . . , n.

Ahora usando las propiedades de la integración obtenemos que


Z b Z x1 Z x2 Z xi+1 Z b
f (t)dt = f (t)dt + f (t)dt + · · · + f (t)dt + · · · + f (t)dt.
a a x1 xi xn−1

Aplicamos la aproximación de Rectángulo a Izquierda (Rectángulo a Derecha


serı́a análogo) en cada una de las subintegrales, y sumamos todos los valores
obtenidos:

IRIC (f ) = (x1 − a)f (a) + (x2 − x1 )f (x1 ) + . . .


+ (xi+1 − xi )f (xi ) + · · · + (b − xn−1 )f (xn−1 ),

usando que los nodos son equiespaciados, se tiene que para todo i ∈ {0, 1, . . . n}
la distancia para cualesquiera dos nodos siempre es h, la demostración es muy
sencilla,

xi+1 − xi = a + (i + 1)h − (a + ih) = a + ih + h − a − ih = h.

95
Con lo cual, tenemos que

IRIC (f ) = hf (a) + hf (x1 ) + · · · + hf (xi ) + · · · + hf (xn−1 )



= h f (a) + f (x1 ) + · · · + f (xn−1 )
n−1
X
= h f (xi )
i=0

Por otro lado, la fórmula compuesta del Rectángulo a Derecha serı́a:

n
X
IRDC (f ) = h f (xi )
i=1

Por último, es necesario encontrar una fórmula del error, usando que en un
intervalo [a, b] el error cometido por la aproximación del Rectángulo es ER =
f 0 (ξ)
(b − a)2 , aplicamos este error a cada subintervalo
2

f 0 (ξ0 ) 2 f 0 (ξ1 ) 2 f 0 (ξn−1 ) 2


ERIC (f ) = h + h ··· + h
2 2 2
h2 0
f (ξ0 ) + f 0 (ξ1 ) + · · · + f 0 (ξn−1 ) .

=
2
Finalmente, usando que h = b−a n
y tomando f 0 (ξ) = máx{|f 0 (t)| : t ∈ [a, b]} se
0 0
tiene que f (ξi ) ≤ f (ξ) para cualquier i ∈ {0, 1, . . . , n−1} y con ello conseguimos
una cota del error dada por
hb−a 0
f (ξ0 ) + f 0 (ξ1 ) + · · · + f 0 (ξn−1 )

ERIC (f ) =
2 n
h 1
(b − a) f 0 (ξ) + f 0 (ξ) + · · · + f 0 (ξ)


2 n
h 1
= (b − a) nf 0 (ξ)
2 n
(b − a)f 0 (ξ)
= h
2

Nota 4.6. Se puede obtener exactamente el mismo resultado de cota del error
para la cuadratura de Rectángulo a Derecha Compuesto.

(Ver implementación del Rectángulo Izquierda Compuesto y Derecha


Compuesto en Matlab en la página 231).
(Ver Ejemplo D.5 en la página 237).

Punto medio Compuesta


Vamos a proceder como en el caso anterior, vamos a tomar n+1 nodos equies-
paciados, es decir, xi = a + ih con i ∈ {0, 1 . . . , n} y h = (b − a)/n y dividimos

96
nuestra integral en n subintegrales, con ello obtenemos:
Z b Z x1 Z x2 Z xi+1 Z b
f (t)dt = f (t)dt + f (t)dt + · · · + f (t)dt + · · · + f (t)dt.
a a x1 xi xn−1

Y ahora aplicamos la cuadratura del Punto Medio en cada una de ellas.


Además, volvemos a usar que xi+1 − xi = h, con lo cual

   
a + x1 x1 + x2
IP M C (f ) = (x1 − a)f + (x2 − x1 )f + ...
2 2
   
xi + xi+1 xn−1 + b
+ (xi+1 − xi )f + · · · + (b − xn−1 )f
2 2
     
a + x1 x1 + x2 xn−1 + b
= hf + hf + · · · + hf
2 2 2
n−1  
X h
= h f xi +
i=0
2

Necesitamos también conocer una expresión del error, para ello aplicamos el
error de la cuadratura del Punto Medio en cada subintervalo y obtenemos la
siguiente fórmula (vamos a volver usar la idea de que f 00 (ξ) = máx{|f 00 (t)| : t ∈
[a, b]} y se tiene que f 00 (ξi ) ≤ f 00 (ξ) para cualquier i ∈ {0, 1, . . . , n − 1}):

h3 h3 h3
EP M C (f ) = f 00 (ξ0 ) + f 00 (ξ1 ) + · · · + f 00 (ξn−1 )
24 24 24
3
h
f 00 (ξ0 ) + f 00 (ξ1 ) + · · · + f 00 (ξn−1 )

=
24
h2 b − a 00
f (ξ) + f 00 (ξ) + · · · + f 00 (ξ)


24 n
h2 b − a 00
= nf (ξ)
24 n
h2
= (b − a)f 00 (ξ)
24

(Ver implementación del Punto Medio Compuesto en la página 231).


(Ver Ejemplo D.6 en la página 239).

Trapecios Compuesta
Repetimos la misma técnica, simplemente tomamos n+1 nodos equiespaciados
y hacemos Trapecios Simple en las n nuevas subintegrales:

Z b Z x1 Z x2 Z xi+1 Z b
f (t)dt = f (t)dt + f (t)dt + · · · + f (t)dt + · · · + f (t)dt.
a a x1 xi xn−1

97
Entonces,

x1 − a  x2 − x1 
IT C (f ) = f (a) + f (x1 ) + f (x1 ) + f (x2 ) + . . .
2 2
xi+1 − xi  b − xn−1 
+ f (xi ) + f (xi+1 ) + · · · + f (xn−1 ) + f (b)
2 2
h  h  h 
= f (a) + f (x1 ) + f (x1 ) + f (x2 ) + · · · + f (xn−1 ) + f (b)
2 2 2
h 
= f (a) + 2f (x1 ) + 2f (x2 ) + · · · + 2f (xn−1 ) + f (b)
2
n−1
!
f (a) X f (b)
= h + f (xi ) +
2 i=1
2

Para el cálculo del error, trabajamos de forma análoga. Estimamos una co-
ta del error en cada intervalo, suponemos f 00 (ξ) = máx{|f 00 (t)| : t ∈ [a, b]} y
sumamos todas las cantidades:

(x1 − a)3 00 (x2 − x1 )3 00 (b − xn−1 )3 00


ET C (f ) = f (x0 ) + f (x1 ) + · · · + f (ξn−1 )
12 12 12
h3 00 h3 h3
= f (x0 ) + f 00 (x1 ) + · · · + f 00 (ξn−1 )
12 12 12
h3 00
f (ξ0 ) + f 00 (ξ1 ) + · · · + f 00 (ξn−1 )

=
12
h3 00 h2
≤ nf (ξ) = (b − a)f 00 (ξ)
12 12

(Ver implementación de Trapecios Compuesto en la página 231).


(Ver Ejemplos D.7 y D.8 en las páginas 240 y 242, respectivamente).

Simpson Compuesta

En la práctica, las fórmulas de Newton-Cotes Compuestas más usadas son


Trapecios y Simpson Compuesta, por lo tanto, vamos a obtener la cuadratura
compuesta de Simpson y para el resto de cuadraturas de la Tabla 4.1 se deja
como ejercicio al lector obtener las cuadraturas compuestas ası́ como expresiones
del error e implementaciones en Matlab.
Supongamos que tenemos n + 1 nodos equiespaciados, es decir, xi = a + ih
con 0 ≤ i ≤ n y h = b−a n
. Ahora dividimos nuestra integral de partida en n/2
subintervalos (necesitamos que n sea par),
Z b Z x2 Z x4 Z x2k+2 Z b
f (t)dt = f (t)dt + f (t)dt + · · · + f (t)dt + · · · + f (t)dt.
a a x2 x2k xn−2

Y aplicamos Simpson en cada subintevalo (claramente 0 ≤ k ≤ n/2),

98
x2 − a  x4 − x2 
ISC (f ) = f (a) + 4f (x1 ) + f (x2 ) + f (x2 ) + 4f (x3 ) + f (x4 ) + . . .
6 6
x2k+2 − x2k 
+ f (x2k ) + 4f (x2k+1 ) + f (x2k+2 ) + . . .
6
b − xn−2 
+ f (xn−2 ) + 4f (xn−1 ) + f (b)
6
2h  2h 
= f (a) + 4f (x1 ) + f (x2 ) + f (x2 ) + 4f (x3 ) + f (x4 ) + . . .
6 6
2h 
+ f (x2k ) + 4f (x2k+1 ) + f (x2k+2 ) + . . .
6
2h 
+ f (xn−2 ) + 4f (xn−1 ) + f (b)
6
h
= f (a) + 4f (x1 ) + 2f (x2 ) + 4f (x3 ) + 2f (x4 ) + . . .
3 
+ 2f (xn−2 ) + 4f (xn−1 ) + f (b)
 
n/2 (n−2)/2
h X X
= f (a) + 4 f (x2k−1 ) + 2 f (x2k ) + f (b)
3 i=1 i=1

Para finalizar, usamos que f (4) (t) = máx |f (4) (t)| : t ∈ [a, b] y el error de Simpson
Simple en cada subintervalo,

(x2 − a)5 (4) (x4 − x2 )5 (4) (b − xn−2 )5 (4)


ESC (f ) = f (x0 ) + f (x1 ) + · · · + f (ξn/2 )
2880 2880 2880
(2h)5 (4) (2h)5 (4) (2h)5 (4)
= f (x0 ) + f (x1 ) + · · · + f (ξn/2 )
2880 2880 2880
25 h5
f (4) (ξ0 ) + f (4) (ξ1 ) + · · · + f (4) (ξn/2 )

= 5
2 · 90
h5 n (4) h4
≤ f (ξ) = (b − a)f (4) (ξ)
90 2 180

Nota 4.7. A la hora de implementar las fórmulas compuestas, nuestros nodos


empiezan en x0 , pero Matlab empieza a contar desde la posición 1, por tanto, hay
pequeñas variaciones de nuestra fórmulas compuestas a las implementaciones.
A la hora de hacer la implementación ya hemos tenido esto en cuenta. Compa-
re nuestras fórmulas de cuadratura compuesta con las implementaciones en el
Apendice D.

(Ver implementación de Simpson Compuesto en la página 231).


(Ver Ejemplos D.9 y D.10 en la página 243).

99
4.5. Método de Romberg
La idea de este método es similar a la usada en la extrapolación de Ri-
chardson vista en el capı́tulo anterior. El algoritmo lleva el nombre de Romberg
ya que fue el primero en dar una forma recursiva del método. Si recordamos el
método de extrapolación de Richardson, podı́amos aplicarlo a diferentes fórmulas
de derivación numérica, la idea de Romberg fue aplicar ese algoritmo recursivo
para el método de Trapecios Compuesto. Veamos primero un ejemplo y luego
escribiremos nuestra idea más formalmente.
R1
Ejemplo 4.2. Supongamos que queremos calcular I(f ) = 0 f (t)dt con Trapecios
Compuesto. Escribir como quedarı́an las fórmulas de Trapecios Compuesto con
n = 1, n = 2, n = 4 y n = 8.

Solución: Usando la fórmula de cuadratura de Trapecios Compuesta obtengo

1 1
IT C (f )n=1 = f (0) + f (1),
2 2
  
1 1 1 1
IT C (f )n=2 = f (0) + f + f (1),
4 2 2 4
      
1 1 1 1 3 1
IT C (f )n=4 = f (0) + f +f +f + f (1),
8 4 4 2 4 8
              
1 1 1 1 3 1 5 3 7 1
IT C (f )n=8 = f (0) + f +f +f +f +f +f +f + f (1).
16 8 8 4 8 2 8 4 8 16

Es evidente, haciendo unos poquitos calculos, que el caso 2n se puede obtener


del caso n añadiendo nuevos términos, es decir,

  
1 1 1
IT C (f )n=2 = IT C (f )n=1 + f ,
2 2 2
    
1 1 1 3
IT C (f )n=4 = IT C (f )n=2 + f +f ,
2 4 4 4
        
1 1 1 3 5 7
IT C (f )n=8 = IT C (f )n=4 + f +f +f +f .
2 8 8 8 8 8

De esta idea surge el Método de Romberg o regla recursiva del Trape-


cio.

Teorema 4.3. Sean los valores Gm,k definidos recursivamente por

1 
G0,0 = (b − a) f (a) + f (b) ,
2
2m−1  
1 b−a X b−a
Gm,0 = Gm−1,0 + m f a + (2i − 1) m ,
2 2 i=0
2
Gm,k−1 − Gm−1,k−1
Gm,k = Gm,k−1 + , 1 ≤ k ≤ m.
4k − 1

100
Entonces, se tiene que cada k (para cada columna)
Z b
lı́m Gm,k = f (t)dt.
m→+∞ a

Para encontrar una demostración de este teorema y más información sobre el


Algoritmo de Romberg ver por ejemplo [1, Pags. 102-103], [7, Pags. 480-486] y
[12, Pag. 79].
Como ya hicimos en la extrapolación de Richardson, podemos organizar los
datos de manera eficiente en forma de tabla triangular, es decir,

G0,0
G1,0 G1,1
G2,0 G2,1 G2,2
.. .. .. ...
. . .
Gm,0 G3,1 Gm,2 . . . Gm,m

y tomar como mejor aproximación Gm,m .


Por otro lado, si definimos la cantidad
Gm,k−1 − Gm−1,k−1
dm,k = , (4.12)
4k − 1
es la llamada estimación del error a posteriori, es una cantidad muy importante en
la práctica y nos sirve como estimación del error de la cuadratura de Romberg.
Claramente,
Gm,k = Gm,k−1 + dm,k .

(Ver implementación del Método de Romberg en la página 244).


(Ver Ejemplo D.11).

Nota 4.8. Observe que según el desarrollo de Taylor, hay un caso cuando la
aplicación del esquema de Romberg trae una gran mejorı́a, y es cuando aplicamos
dicho método a funciones suficientemente suaves, periódicas y cada cierto número
de veces al derivar se obtiene 0 (pensar por ejemplo el caso de f (x) = sen(x) en
x = π). Esto explica la gran eficiencia de la fórmula de Trapecios Compuesta
para integrar funciones trigonométricas.

4.6. Cuadraturas adaptativas


La ventaja del método de Romberg no está solo en su exactitud, sino que
además nos devuelve una buena estimación del error (ver fórmula (4.12)). Por ello,
podemos aplicar Romberg hasta cometer un error menor de un umbral prefijado.
Esta idea aplicada a distintos subintervalos de integración conduce a las llamadas
cuadraturas adaptativas, donde el paso h va cambiando.

101
4.6.1. Trapecios Adaptativo
Vamos a describir el algoritmo de Trapecios Adaptativo y lo vamos a ilus-
trar con un ejemplo (ver más información por ejemplo en [7, Sec. 7.5]).
Supongamos que queremos aproximar
Z b
I(f ) = f (t)dt,
a

procedemos de la siguiente manera:


Paso 1: Calculamos solo las dos primeras columnas del esquema de Romberg en
el intervalo [a, b]:

b−a
h = ,
2 
G0,0 = h f (a) + f (b) ,
1
G1,0 = G0,0 + hf (a + h),
2
G1,0 − G0,0
d = ,
3
G1,1 = G1,0 + d.

Paso 2: Si |d| ≤ ε (el umbral de error prefijado o la tolerancia), entonces paramos


y tomamos
I(f ) ≈ G1,1 .
Paso 3: Si no, aplicamos los pasos 1 y 2 en los subintervalos [a, a + h] y [a + h, b].
Como estimación del error tomamos los valores absolutos de d en cada subinter-
valo y si esta suma es ≤ ε paramos, y como aproximación de I(f ) tomaremos la
suma de G1,1 en cada subintervalo.
Paso 4: Localizamos el subintervalo con d máxima y le aplicamos el paso 3.

(Ver Ejemplo D.12 en la página 245).

4.6.2. Simpson Adaptativo


La idea de Simpson Adaptativo es exactamente similar a la anterior. En este
caso tenemos la suerte que Matlab tiene este método implementado.
Rb Si escribi-
mos en Matlab quad(f,a,b) nos devuelve una aproximación de a f (t)dt con un
error de 10−6 . Esta función admite más parámetros, por ejemplo si escribimos
quad(f,a,b,tol) podemos modificar la tolerancia a nuestro gusto, y poner un
error mayor o menor que el de partida, en función de nuestros intereses. Ver más
opciones y más información de este comando de Matlab en [3].
Para terminar
R 2 −t nuestro capı́tulo,
 vamos a aproximar nuestra integral durante el
capı́tulo, 0 e sen(5t) + 1 dt, escribimos en el script quad(f,0,2) y Matlab nos
devuelve 2,216977070234321 (Ver más información sobre cuadraturas adaptativas
en [4] y [10]).

102
Nota 4.9. Estos métodos adaptativos son especialmente rápidos y útiles cuando
estamos interesados en conocer una aproximación con un error prefijado (una
tolerancia). También es aconsejable usar la orden quad(f,a,b,tol) de Matlab
cuando necesitamos asegurarnos el error máximo que cometemos.

103
104
Bibliografı́a

[1] Cordero-Barbero, A. Hueso-Pagoaga, J. L. Martı́nez-Molada, E. y


Rorregrosa-Sánchez, J. R. (2006) Problemas Resueltos de Métodos Numéri-
cos. Madrid, España: Thomson.
[2] Doubova, A. y Guillén-González F. (2007) Un Curso de Cálculo Numérico:
Interpolación, Aproximación, Integración y Resolución de Ecuaciones Dife-
renciales. Sevilla, España: Servicio de Publicaciones de la Universidad de
Sevilla.
[3] Gander, W. y Gautschi, W. (2000) Adaptive Quadrature - Revisited. BIT.
CS technical report, 40(1), 84-101.
[4] Gautschi, W. (2002) Numerical Analysis. New York, Estados Unidos: Sprin-
ger.
[5] Johansen, A. M. y Evers, L. (2011) Simulation and the Monte Carlo Methods.
Bristol, Reino Unido: Nick Whiteley.
[6] Kalos, M. H. y Whitlock, P. A. (2008) Monte Carlo Methods. New York.
Estados Unidso: Wiley Online Library.
[7] Kincaid, D. y Cheney, W. (1994) Análisis numérico. Las matemáticas del
cálculo cientı́fico. Mexico D. F. México: Addison-Wesley Iberoamericana, S.
A.
[8] Martı́nez-Finkelshtein, A. y Moreno-Balcázar, J. J. (1999) Métodos Numéri-
cos: Aproximación en R. Almerı́a, España: Servicio de Publicaciones de la
Universidad de Almerı́a.
[9] Mathews, J. H. y Fink K. D. (2000) Métodos Numéricos con Matlab. Madrid,
España: Prentice Hall.
[10] Quarteroni, A. y Saleri, F. (2006) Cálculo Cientifico con MATLAB y Octave.
Milan, Italia: Springer.
[11] Ramı́rez-González, V. Barrera-Rosillo, D. Pasadas-Fernández, M. y
González-Rodelas, P. (2001) Cálculo Numérico con Mathematica. Barcelo-
na, España: Editorial Ariel, S. A.
[12] Temme, N. M. (2010) Numerical Methods, in NIST Handbook of Mathema-
tical Functions. Cambridge, UK: Cambridge University Press.

105
106
Capı́tulo 5

INTEGRACIÓN NUMÉRICA:
CUADRATURAS
GAUSSIANAS

Autores: Juan F. Mañas–Mañas1 , Maritza A. Pinta2

1 Departamento de Matemáticas, Universidad de Almerı́a, España.


2 Unidad Académica de Ingenierı́a Civil, Universidad Técnica de Machala, Ecuador.
1 jmm939@ual.es, 2 mpinta@utmachala.edu.ec

En el capı́tulo anterior sobre cuadraturas de Newton-Cotes obtuvimos fórmu-


las de cuadratura para aproximar
Z b
I(f ) = f (t)dt (5.1)
a

fijando una serie de n + 1 puntos llamados nodos, distribuidos como

−∞ < a ≤ x0 < x1 < . . . < xn ≤ b < +∞.

Pero ahora nos surgen algunas preguntas que vamos a tratar de resolver durante
el desarrollo de este capı́tulo:

• ¿Se puede obtener un mayor grado de exactitud si los nodos y los


pesos se escogen de otra forma en la fórmula de cuadratura?

• ¿Se puede obtener algún resultado para integrales con intervalo


de integración no acotado?

• ¿Se puede asegurar la convergencia de la aproximación cuando el


número de nodos crece?

Durante el desarrollo de este capı́tulo se van a dar respuesta a estas pregun-


tas que se acaban de formular. La respuesta se va a obtener usando cuadraturas

107
gaussianas y para ello usaremos polinomios ortogonales. El capı́tulo va a seguir
la siguiente estructura: primero se verá un ejemplo motivador usando solamen-
te conceptos del capı́tulo anterior, después se dará una pequeña introducción a
polinomios ortogonales y algunas propiedades básicas para utilizarlos en cuadra-
turas gaussianas. Se explicará teoricamente como se construyen las cuadraturas
gaussianas, el error cometido al usarlas y habrá ejemplos resueltos. Finalmente,
se obtendrá el código de Matlab para la utilización de cuadraturas gaussianas y
se explicará como usarlo con ejemplos resueltos.

5.1. Motivación
Antes de entrar en el desarrollo teórico de las cuadraturas gaussianas vamos
a contar un ejemplo motivador que se puede encontrar en [14, Pag. 179]. Nos
preguntamos cuál serı́a el máximo grado de exactitud que podemos pedir para la
siguiente fórmula de cuadratura con dos nodos:
Z 1
f (t)dt ≈ I(f ) = λ0 f (x0 ) + λ1 f (x1 ).
−1

En este caso, vamos a considerar los pesos de la cuadratura y los nodos como
parámetros libres, es decir, tenemos 4 incognitas. Lo lógico serı́a pensar que al
menos podemos pedir un grado de exactitud 3, por lo tanto tenemos que probar
la exactitud sobre la base canónica {1, t, t2 , t3 }. El sistema queda de la siguiente
manera:

Z 1
I(1) = λ0 + λ1 = 1dt = 2,
−1
Z 1
I(t) = λ0 x0 + λ1 x1 = tdt = 0,
−1
Z 1
2
I(t2 ) = λ0 x20 + λ1 x21 = t2 dt = ,
−1 3
Z 1
I(t3 ) = λ0 x30 + λ1 x31 = t3 dt = 0.
−1

Este sistema no lineal tiene como solución:

λ0 = 1,
λ1 = 1,
−1
x0 = √ ,
3
1
x1 = √ .
3
Por consiguiente, nuestra cuadratura quedarı́a

108

  
−1 1
I(f ) = f √ +f √ .
3 3
Es inmediato comprobar que la fórmula de cuadratura es exacta para polino-
mios de grado 3 (lo es por construcción) pero no de 4, por lo tanto, el grado de
exactitud es 3 (comparar con el método de Trapecios del Capı́tulo 4).
Durante este capı́tulo vamos a aproximar una integral del tipo
Z b
I(f ) = f (t)w(t)dt, (5.2)
a
Rb
donde w(t) es una función peso (w(t) ≥ 0 en [a, b] y a w(t)dt < +∞) y el in-
tervalo no necesariamente acotado. Es importante destacar que esta función peso
no es una restricción, basta tomar w(t) = 1 y obtenemos la integral de partida
(5.1). Está función peso en (5.2) nos va ayudar a dar mejores aproximaciones.

5.2. Introducción a polinomios ortogonales


En esta sección vamos a dar una breve introducción a polinomios ortogonales
con respecto a un producto escalar. La literatura sobre polinomios ortogonales
es muy conocida y extensa. Los siguientes resultados son bien conocidos y todos
los resultados de esta sección pueden ser encontrados en muchos libros sobre
polinomios ortogonales, algunos de ellos son [1], [5], [9], [10], [12], [13], [14] y [23].

Definición 5.1. Un producto escalar es una aplicación h·, ·i del espacio de


funciones integrables en el intervalo [a, b] ⊂ R (no necesariamente acotado) que
se denota por Lw (a, b) con respecto a la función peso w(t) a R dada por:

h·, ·i : Lw (a, b) → R,
Z b
hf, gi = f (t)g(t)w(t)dt,
a

verificando

1. Simetrı́a: hf, gi = hg, f i.

2. Bilinealidad: hαf + βg, hi = αhf, hi + βhg, hi, ∀α, β ∈ R.

3. Definida positiva: hf, f i ≥ 0.

Nota 5.1. La definición anterior se puede encontrar en entornos mucho más


amplios, medidas o funcionales más generales, pero para nuestros intereses basta
que w(t) sea una función peso (ver por ejemplo [5], [9] ó [23]).

Definición 5.2. Dada una sucesión de polinomios {Pn }n , diremos que {Pn }n es
una sucesión de polinomios ortogonales (SPO) con respecto al producto escalar
h·, ·i si se cumple que:

109
1. Pn es un polinomio de grado exactamente n.

2. hPn , Pm i = 0 con m 6= n y m, n = 0, 1, 2, . . .

3. hPn , Pn i > 0, n = 0, 1, 2, . . .

Diremos que la sucesión será ortonormal si para todo n se cumple que

||Pn ||2 := hPn , Pn i = 1.

Se tiene una sucesión de polinomios ortogonales mónicos (SPOM) si el


coeficiente lider de Pn (x) es 1, es decir,

Pn (t) = tn + an−1 tn−1 + · · · + a1 t + a0 .

Ahora vamos a dar una serie de resultados previos necesarios para entender y
utilizar en las cuadraturas gaussianas. Todos estos resultados son muy básicos en
la literatura de polinomios ortogonales y las demostraciones se pueden encontrar
en cualquiera de las siguientes referencias [1], [5], [9], [10], [12], [13], [14] ó [23].

Proposición 5.1. Toda SPO forma una base del espacio de polinomios de grado
menor o igual n, denotado por Pn .

Teorema 5.1. Sea h·, ·i un producto escalar y {Pn }n una sucesión de polino-
mios tal que el grado de Pn es exactamente n. Las siguientes afirmaciones son
equivalentes:

1. {Pn }n es una SPO respecto a h·, ·i.

2. hq, Pn i = 0 para todo polinomio q(t) de grado m < n.

3. htm , Pn i = kn δn,m con kn 6= 0, m = 0, 1, 2, . . . , n, y donde δn,m es la función


Delta de Kronecker definida por:

1 si n = m,
δn,m =
0 si n 6= m.

Proposición 5.2. Las sucesiones de polinomios ortogonales con respecto a un


producto escalar h·, ·i son únicas salvo factor multiplicativo.

Teorema 5.2. Sea {Pn }n una sucesión de polinomios ortogonales con respecto a
h·, ·i. Entonces la SPO {Pn }n satisface una relación de recurrencia a tres términos
de la forma:
tPn (t) = γ̃n Pn+1 (t) + α̃n Pn (t) + β̃n Pn−1 (t). (5.3)
Generalmente se suele imponer que P−1 (x) = 0 y P0 (x) = 1, con lo que una
SPO queda determinada de forma única conocidas las sucesiones {γ̃n }n , {α̃n }n y
{β̃n }n .

Nota 5.2. Si estamos trabajando con una SPOM, en la relación de recurrencia


anterior se tiene que γ̃n = 1 para todo n y (5.3) quedarı́a:

110
tPn (t) = Pn+1 (t) + αn Pn (t) + βn Pn−1 (t), (5.4)
con P−1 (x) = 0 y P0 (x) = 1. Es importante aclarar que las sucesiones α̃n y β̃n en
la expresión (5.3) no son las mismas cantidades que αn y βn en (5.4), por ello
los denotamos de forma diferente.
Esta relación (5.4) será muy importante para la obtención de los
pesos y los nodos de las cuadraturas gaussianas. Además, para los ejer-
cicios que hagamos manualmente, será de gran utilidad la relación de recurrencia
(despejando Pn+1 (t) de (5.4)):

Pn+1 (t) = (t − αn )Pn (t) − βn Pn−1 (t), (5.5)


con P−1 (x) = 0 y P0 (x) = 1.

Teorema 5.3. Sea el producto escalar


Z b
hf, gi = f (t)g(t)w(t)dt,
a

(compruebe que es un producto escalar) y {Pn }n una SPO con respecto a él. Se
puede establecer el siguiente resultado. Se cumple:

1. Todos los ceros de Pn son reales simples y están localizados en (a, b).

2. Dos polinomios ortogonales consecutivos Pn y Pn+1 no pueden tener ningún


cero en común. Además, denotando por xn,j con j ∈ {1, 2, . . . , n} a los
ceros del polinomio Pn en orden creciente, es decir, consideramos que xn,1 <
xn,2 < ... < xn,n . Entonces xn+1,j < xn,j < xn+1,j+1 , es decir, los ceros de
Pn y Pn+1 se entrelazan.

5.3. Familias clásicas de polinomios ortogonales


Las familias clásicas en la recta real son las de Jacobi, Laguerre y Hermite.
Estas familias vienen determinadas por el peso w(t) y el intervalo de integración
asociado a dicho peso.

5.3.1. Polinomios ortogonales de Jacobi


Los polinomios de Jacobi son ortogonales con respecto el producto escalar:
Z 1
hf, gi = f (t)g(t)(1 − t)α (1 + t)β dt,
−1

con α, β > −1. En este caso, w(t) = (1 − t)α (1 + t)β . Los polinomios de Jacobi
(α,β)
de grado n se suelen denotar por Pn (t). Utilizando el Teorema 5.3, podemos
(α,β)
asegurar que las n raı́ces reales y simples de Pn (t) se encuentran en el intervalo
(−1, 1).

111
Dentro de los polinomios de Jacobi hay dos familias que son las más usadas
en cuadraturas gaussianas, los polinomios de Legendre y de Chebyshev.
Los polinomios de Legendre se dan cuando α = β = 0, los vamos a denotar por
(0)
Pn (t) y son ortogonales con respecto w(t) = 1 en el intervalo [−1, 1]. Además, los
polinomios de Legendre mónicos verifican la siguiente relación de recurrencia
(ver (5.4))

(0) n2 (0)
tPn(0) (t) = Pn+1 (t) + P (t).
(2n − 1)(2n + 1) n−1
n 2
Por lo tanto se deduce que αn = 0 y βn = (2n−1)(2n+1) .
Los polinomios de Chebyshev se obtienen cuando α = β = −1/2, es decir,
cuando el peso de Jacobi es exactamente w(t) = (1−t2 )−1/2 en el intervalo [−1, 1].
Se suelen denotar por Tn (t) y los polinomios de Chebyshev mónicos verifican
la relación de recurrencia (5.4) con αn = 0 y

1/2, si n = 1,
βn =
1/4, si n ≥ 2.

5.3.2. Polinomios ortogonales de Laguerre


Los polinomios de Laguerre son ortogonales con respecto el producto escalar:
Z +∞
hf, gi = f (t)g(t)tα e−t dt,
0
α −t
con α > −1. En este caso, w(t) = t e . Los polinomios de Laguerre de grado n se
(α)
suelen denotar por Ln (t). Utilizando el Teorema 5.3, podemos asegurar que las
(α)
n raı́ces reales y simples de Ln (t) se encuentran en el intervalo (0, +∞). Vamos
a dar la relación de recurrencia (5.4) para polinomios de Laguerre mónicos, y
destacar las sucesiones αn y βn , las cuales serán posteriormente muy útiles para
la obtención de las raı́ces de estos polinomios:

(α) (α)
tL(α) (α)
n (t) = Ln+1 (t) + (2n + α + 1)Ln + n(n + α)Ln−1 (t), α > −1.

Por lo tanto se deduce que αn = 2n + α + 1 y βn = n(n + α).

5.3.3. Polinomios ortogonales de Hermite


Finalmente, los polinomios de Hermite son ortogonales con respecto el pro-
ducto escalar:
Z +∞
2
hf, gi = f (t)g(t)e−t dt.
−∞
−t2
En este caso, w(t) = e . Los polinomios de Hermite de grado n se suelen denotar
por Hn (t). Utilizando el Teorema 5.3, podemos asegurar que las n raı́ces son reales
y simples y localizadas en todo R que es el intervalo de integración. Por analogı́a

112
con los casos anteriores, tenemos que la relación de recurrencia a tres términos
viene dada por
n
tHn (t) = Hn+1 (t) + Hn−1 (t).
2
De aquı́ se tiene que αn = 0 y βn = n/2.
Nota 5.3. Si nos fijamos, el intervalo de integración de Jacobi es acotado, el in-
tervalo de integración de Laguerre es semi-infinito y el intervalo de integración de
Hermite es todo R. Estas tres diferencias son necesarias a la hora de hacer cua-
draturas gaussianas. Cuando nosotros queramos aproximar una integral definida
de la forma Z b
f (t)dt,
a
vamos a utilizar unos polinomios ortogonales u otros en función del intervalo
(a, b).
En la siguiente sección le damos fundamento a la Nota 5.3 y vamos a ver como
los polinomios ortogonales se usan en fórmulas de cuadratura.

5.4. Fórmulas de cuadratura


Durante esta sección vamos a encontrar fórmulas de cuadratura del tipo
Z b
I(f ) = f (t)w(t)dt = I(f ) + E(f ), (5.6)
a
Pn
donde I(f ) := i=0 λi f (xi ) y w(t) es una función peso no negativa en el intervalo
[a, b].
Nuestro primer paso va a ser responder a la primera pregunta que nos hicimos
cuando empezabamos este capı́tulo, ¿Cuál es el mayor grado de exactitud
que podemos esperar? Para ello tenemos los siguientes resultados. Antes, es
necesario definir el polinomio nodal, que viene dado por
n
Y
ωn+1 (t) = (t − xk ).
k=0

Teorema 5.4. ([14, Th. 3.4] o [19, Th. 10.1]) Sea k un número natural
positivo verificando que 1 ≤ k ≤ n + 1. Entonces la fórmula de cuadratura (5.6)
tiene grado de exactitud al menos n + k si y sólo si se cumplen las siguientes dos
condiciones:
1. La fórmula de cuadratura es interpolatoria, es decir, es válida la expresión
Z b
λi = I(`i ) = `i (t)w(t)dt, (5.7)
a

donde `i (t) son los polinómios básicos de Lagrange definidos en la página


88.

113
2. Para todo polinomio q(t) ∈ Pk−1 , se tiene que
Z b
hωn+1 , qi = ωn+1 (t)q(t)w(t)dt = 0,
a

es decir, el polinomio nodal ωn+1 (t) es ortogonal con respecto a w(t).

Demostración: ⇒) La primera condición es consecuencia directa del Teorema


5.2. Para la segunda condición partimos de cualquier polinomio q ∈ Pk−1 , entonces
el polinomio q · ωn+1 tiene grado a lo más n + k. Por tanto, si usamos que el grado
de exactitud de la cuadratura es exactamente n + k se tiene que
Z b n
X
q(t)ωn+1 (t)w(t)dt = λi q(xi )ωn+1 (xi ) = 0.
a i=0

La integral anterior vale 0 ya que estamos evaluando ωn+1 en sus nodos, lo


que se traduce en que ωn+1 es ortogonal.
(⇐ Sea p ∈ Pn+k cualquier polinomio arbitrario de grado a lo sumo n + k.
Dividiendo p entre ωn+1 obtenemos:

p(t) = q(t)ωn+1 (t) + r(t), q ∈ Pk−1 , r ∈ Pn .


Ahora usamos que ωn+1 es un polinomio ortogonal, entonces se tiene que:

Z b Z b 
p(t)w(t)dt = q(t)ωn+1 (t) + r(t) w(t)dt
a a
Z b Z b
= q(t)ωn+1 (t)w(t)dt + r(t)w(t)dt
a a
Z b
= 0+ r(t)w(t)dt.
a

Escrito en forma más compacta, tenemos que

I(p) = I(qωn+1 ) + I(r) = I(r).

Por otro lado, usamos que nuestra fórmula de cuadratura es interpolatoria, es


decir, I(r) = I(r), y usando lo anterior, que I(qωn+1 ) = 0 se tiene que:

I(p) = I(r) = I(r) = I(qωn+1 ) + I(r) = I(p). 2

Corolario 5.1. ([14, Co. 3.1] o [19, Co. 10.1]) En las condiciones del
Teorema 5.4, el máximo grado de exactitud de la fórmula de cuadratura (5.6) es
2n+1 que se logra si y sólo si los n+1 nodos son los ceros del polinomio ortogonal
de grado n + 1 respecto a w(t) en el intervalo (a, b) y los pesos de la cuadratura
λi verificando (5.7).

Demostración: Tomando k = n + 1 tenemos un grado de exactitud de 2n + 1.


Ahora por otro lado, la cuadratura no puede ser exacta para polinomios de grado

114
mayor o igual a 2n + 2, ya que si lo fuera tendrı́amos que serı́a exacta para el
cuadrado del polinomio ortogonal (el polinomio nodal) y se tendrı́a la siguiente
2
contradicción: Sea ωn+1 ∈ P2n+2 . Claramente
Z b 2
0< ωn+1 (t) w(t)dt,
a

ya que w(t) es un peso positivo, pero por otro lado, si aplicamos la cuadratura
en los nodos de ωn+1 tendrı́amos que
n
X 2
0= λk ωn+1 (xk ) ,
k=0

lo cual es una contradicción. Por tanto, no puede ser exacta en P2n+2 . 2


Nota 5.4. En las condiciones del Teorema 5.4, todos los pesos de la cuadratura,
λi con i ∈ {0, 1, 2 . . . , n+1} son positivos (ver por ejemplo [3, Pag. 56]). Además,
se verifica que (ver [14, f. 3.33])
Z b
λ0 + λ1 + · · · + λn = w(t)dt.
a

Nota 5.5. En el Corolario 5.1 hemos dicho que los nodos de la cuadratura gaus-
siana, son las raı́ces del polinomio ortogonal con respecto al peso w(t), y podemos
asegurar que todos los nodos se encuentran en el intervalo de integración (a, b)
por el apartado 1 del Teorema 5.3, donde se asegura que las raı́ces son reales,
simples y localizadas en el intervalo de integración.
En la práctica se utilizan las siguientes cuadraturas (ver [14, Pag. 182]):

Cuadratura de Gauss: Los n + 1 nodos son los ceros del polinomio ortogonal
de grado n + 1 con respecto w(t) en el intervalo (a, b). El grado de exactitud
es 2n + 1.

Cuadratura de Gauss-Radau: Aquı́ x0 = a (ó xn = b), y los n nodos restantes


son los ceros del polinomio ortogonal de grado n con respecto al peso wa (t) =
(t − a)w(t), (respectivamente, wb (t) = (t − b)w(t)).

Cuadratura de Gauss-Lobatto: Aquı́ x0 = a, xn = b, y los n − 1 nodos


restantes son los ceros del polinomio ortogonal de grado n − 1 con respecto
al peso wab (t) = (t − a)(t − b)w(t).

Para nuestros intereses nos vamos a centrar en Cuadraturas de Gauss.

5.5. Algoritmo para cuadraturas gaussianas


En esta sección vamos
Z b a hacer un resumen de los pasos necesarios a seguir
para aproximar I(f ) = f (t)w(t)dt usando cuadraturas gaussianas.
a

115
5.5.1. Paso 1: Transformar la integral convenientemente
A la hora de trabajar con cuadraturas gaussianas necesitamos trabajar con
polinomios ortogonales. Dichos polinomios son ortogonales con respecto a un
peso definido en un intervalo concreto, por ello, antes de elegir la cuadratura
gaussianas en la que queremos trabajar necesitaremos tener exactamente dicho
intervalo de integración y dicho peso. Para ello vamos a ver cada familia y el
cambio de variable que tenemos que hacer. En la práctica se trabajan con el peso
de Legendre, Chebyshev, Laguerre y Hermite, veamos cada uno de ellos:

Cuadratura de Gauss-Legendre

Los polinomios de Legendre son ortogonales con respecto a w(t) = 1 en el


intervalo [−1, 1]. Podemos elegir esta cuadratura siempre que la integral que que-
remos aproximar, I(f ) cumpla que el intervalo de integración sea acotado, es
decir, −∞ < a < b < +∞ y w(t) tomarlo como 1.
Si a 6= −1 o b 6= 1 necesitamos hacer el siguiente cambio de variable:

b−a a+b b−a


x= t+ , dx = dt (5.8)
2 2 2
Ası́, nuestra integral de partida I(f ) quedarı́a:
b 1  
b−a b−a
Z Z
a+b
I(f ) = f (x)dx = f t+ dt.
a 2 −1 2 2
Tomando  
b−a b−a a+b
g(t) = f t+ ,
2 2 2
aplicamos nuestra cuadratura de Legendre a g(t) para obtener nuestra aproxima-
ción.

Cuadratura de Gauss-Chebyshev

Las cuadraturas de Gauss-Chebyshev son un caso particular de las cuadraturas


de Gauss-Jacobi. Necesitamos tener una integral de la forma
Z 1
f (t)
I(f ) = √ dt.
−1 1 − t2
Si tenemos la “suerte” de tener exactamente la integral anterior, a cambio,
obtenemos que los nodos y los pesos son conocidos explicitamente y tenemos la
siguiente fórmula para ellos:

 
2k + 1
xk = cos π , 0 ≤ k ≤ n, (5.9)
2n + 2
π
λ0 = λ1 = · · · = λn = . (5.10)
n+1

116
Cuadratura de Gauss-Laguerre

Si tenemos un intervalo semi-infinito tenemos que aplicar esta cuadratura.


Para poder aplicar esta cuadratura necesitamos 2 cosas, primero tener el intervalo
de integración [0, +∞), para ello basta hacer el cambio de variable

x = t + a, dx = dt (5.11)
Con ello tenemos que
Z +∞ Z +∞
f (x)dx = f (t + a)dt.
a 0

Lo segundo a tener en cuenta es que necesitamos tener nuestro peso de la


forma correcta, es decir, tener w(t) = tα e−t con α cualquier número real mayor
que −1, (α > −1).
Si se dan estas dos circunstancias podemos aplicar la cuadratura de Gauss-
Laguerre.

Cuadratura de Gauss-Hermite
R +∞
Si tenemos que aproximar una integral del tipo −∞ f (x)dx podemos aplicar
2
cuadraturas de Gauss-Hermite. Para ello es necesario tener el peso w(t) = e−t . Si
2
no lo tenemos en nuestra integral y ya que e−t 6= 0, ∀t ∈ R podemos multiplicar
y dividir por él, por ejemplo:
Z +∞ Z +∞
2 2
I(f ) = f (t)dt = f (t)et e−t dt
−∞ −∞
t2
y tomar g(t) = f (t)e para aplicar la Cuadratura de Gauss-Hermite.
En el resto del capı́tulo y en el Apéndice E podemos encontrar
ejemplos resueltos de cada uno de estos casos.

5.5.2. Paso 2: Calculo de los nodos xk


Una vez transformada la integral convenientemente y elegida la cuadratura
gaussiana que vamos a usar, los nodos n + 1 nodos serán las raı́ces del polinomio
de grado n + 1. Para formar dicho polinomio ortogonal usamos la relación de
recurrencia (5.4) (o directamente la relación de recurrencia (5.5)) y los paráme-
tros de cada familia. En la Tabla 5.1 vamos a dar un resumen de las 4 familias
que estamos usando, ası́ como otros parámetros e información que veremos más
adelante:
Notas:

• La función Γ(z) denota la función Gamma de Euler. Viene definida por


Z +∞
Γ(z) = tz−1 e−t dt.
0

117
Tabla 5.1: Tabla de Parámetros para polinomios ortogonales mónicos.
Chebyshev Legendre Laguerre Hermite
2 −1/2 α −t 2
w(t) (1 − t ) 1 t e e−t
[a, b] [−1, 1] [−1, 1] [0, +∞) R
Condición α = β = −1/2 α=β=0 α > −1 −
αn 0 0 2n + α + 1 0

γ0 π 2 Γ(α + 1) π
n2
βn β1 = 1/2, βn = 1/4 (2n−1)(2n+1)
n(n + α) n/2

22n+1 (n!)2 n! π
||pn ||2 π/22n+1 (2n+1)((n+1)n )2
Γ(n + α + 1)n! 2n

Fuente: Elaboración propia.

Además, verifica que



Γ(n + 1) = n!, Γ(1/2) = π.

• Z b
2
||pn || = p2n (t)w(t)dt.
a

• La función (a)n denota el sı́mbolo de Pochhammer, dado por (ver más


información en [2, Sec. 5.2]):

Γ(a + k)
(a)0 = 1 (a)k = a(a + 1) . . . (a + k − 1) = , k = 1, 2, 3 . . .
Γ(a)

Ejemplo 5.1. Calcular el polinomio de Laguerre mónico de grado 3 y con paráme-


tro α = 2.

Solución: Usando la relación de recurrencia (5.5) y teniendo en cuenta que n = 2


procedemos de la siguiente manera:
(2) (2)
Tomamos L−1 (t) = 0 y L0 (t) = 1. Además, del enunciado tenemos que el
párametro de los Laguerre va a ser α = 2 y de la Tabla 5.1 tenemos que αn =
2n + α + 1 = 2n + 3 y βn = n(n + α) = n(n + 2).
Ahora para k = 0 tenemos que

(2) (2) (2)


L1 (t) = (t − α0 )L0 (t) − β0 L−1 (t)
= (t − 3)1 − 0
= t − 3.

Procedemos igual para k = 1 tenemos que

118
(2) (2) (2)
L2 (t) = (t − α1 )L1 (t) − β1 L0 (t)
= (t − 5)(t − 3) − 3 · 1
= t2 − 8t + 12.

Finalmente para k = 2 tenemos que

(2) (2) (2)


L3 (t) = (t − α2 )L2 (t) − β2 L1 (t)
= (t − 7)(t2 − 8t + 12) − 8(t − 3)
= t3 − 15t2 + 60t − 60.

Si sacamos las raı́ces del polinomio obtenemos que (posteriormente serán nues-
tros nodos de cuadratrura)
x0 = 1,51739,
x1 = 4,31158,
x2 = 9,17103.

Como ya sabı́amos por el Teorema 5.3 todos los ceros tienen que estar en el
intervalo de integración, en este caso, en el intervalo (0, +∞). 2

5.5.3. Paso 3: Calculo de los pesos λk


Una vez calculado los nodos, los pesos de la cuadratura se calculan usando los
polinomios de Lagrange (ver página 88)
Z b
λi (t) = `i (t)w(t)dt,
a

donde (a, b) es el intervalo de integración asociado a cada cuadratura.


Finalmente, la fórmula de cuadratura guassiana queda
n
X
IG (f ) = λi f (xi ).
i=0

5.5.4. Ejemplo
Ejemplo 5.2. Usando 3 nodos y la cuadratura gaussiana que crea más conve-
niente aproximar Z 3
x ln(x)
2
dx
2 1+x

Solución: El primer paso es elegir la cuadratura que creamos más conveniente.


Como el intervalo es cerrado y acotado descartamos la cuadratura de Gauss-
Laguerre y la de Gauss-Hermite.

119
La cuadratrura de Gauss-Legendre y la de Gauss-Chebyshev tienen el intervalo
de integración en [−1, 1], ası́ que procedemos a realizar el cambio de variable (ver
fórmula (5.8)):

3−2 3+2 t+5


x = t+ = ,
2 2 2
1
dx = dt.
2
Con este cambio de variable nuestra integral de partida es
Z 1 t+5 
ln t+5

2 2 1
dt.
t+5 2 2

−1 1 +
2

Una vez transformada la integral descartamos la cuadratura de Gauss-Chebyshev


ya que no aparece su peso asocidado por ningun lado. Tomamos w(t) = 1 y
( t+5 ) ln( t+5 )
g(t) = 2 t+5 22 21 y aplicamos la cuadratura de Gauss-Legendre.
1+( 2 )
Nos piden usar 3 nodos, eso quiere decir que n = 2 y necesitamos calcular el
polinomio de Legendre de grado 3. Procedemos igual que en el Ejemplo 5.1.
(0) (0) n2
Tomamos P−1 = 0 y P0 = 1. Usamos que αn = 0 y βn = (2n+1)(2n−1) (ver
Tabla 5.1).
Ahora para k = 0 tenemos que

(0) (0) (0)


P1 (t) = (t − α0 )P0 (t) − β0 P−1 (t)
= (t − 0)1 − 0
= t.

Procedemos igual para k = 1 tenemos que

(0) (0) (0)


P2 (t) = (t − α1 )P1 (t) − β1 P0 (t)
1
= t·t− ·1
3
1
= t2 − .
3
Finalmente para k = 2 tenemos que

(0) (0) (0)


P3 (t) = (t − α2 )P2 (t) − β2 P1 (t)
 
2 1 4
= t t − − t
3 15
3
= t3 − t.
5
Por tanto, las tres raı́ces que buscamos son

120
r
3
x0 = − ,
5
x1 = 0,
r
3
x2 = .
5
Ahora obtenemos los pesos:

1 1
p
(t − 0)(t − 3/5)
Z Z
5
λ0 = `0 (t)w(t)dt = p p p dt =
−1 −1 (− 3/5 − 0)(− 3/5 − 3/5) 9
1 1
p p
(t + 3/5)(t − 3/5)
Z Z
8
λ1 = `1 (t)w(t)dt = p p dt =
−1 −1 (0 + 3/5)(0 − 3/5) 9
1 1
p
(t + 3/5)(t − 0)
Z Z
5
λ2 = `2 (t)w(t)dt = p p p dt =
−1 −1 ( 3/5 + 3/5)( 3/5 − 0) 9

Por lo que nuestra cuadratura queda

r ! r !
5 3 8 5 3
IG (f ) = ·g − + · g (0) + · g
9 5 9 9 5
5 8 5
= · 0,141617 + · 0,157981 + · 0,163952
9 9 9
= 0,311855

Nota 5.6. Comparando con el comando int de Matlab, (esta función de Matlab
calcula integrales de forma simbólica y si no puede obtener una primitiva enton-
ces el comando vpa trabaja de forma numérica nos devuelve 0,3118544685. Los
códigos de Matlab son:

syms x
FF=int(((x+5)/2)*log((x+5)/2)/(1+((x+5)/2)^2)/2,x,-1,1);
vpa(FF,10)

5.6. Error de las cuadraturas gaussianas


Hasta ahora se ha respondido a las dos primeras preguntas planteadas al
principio del capı́tulo, pero falta dar una acotación del error que se comete al
aplicar cuadraturas gaussinas. Durante esta sección vamos a probar que usando
cuadraturas guassianas, cuanto mayor es el número de nodos menor es el error
cometido, es más, E(f ) → 0 cuando n → ∞. Para ello vamos a ver los dos
siguientes resultados (ver demostración por ejemplo en [14, Pags. 185-187]):

121
Proposición 5.3. Sea (a, b) un intervalo, y denotemos como A2n+1 (f ) la menor
desviación (mejor aproximación) en la norma uniforme de la función f por medio
de polinomios de la clase P2n+1 . Entonces para el error de la cuadratura gaussiana
E(f ) con n + 1 nodos se tiene que
Z b
EG (f ) ≤ 2A2n+1 (f ) w(t)dt.
a

En particular, si f ∈ C[a, b], entonces la cuadratura converge a la integral


I(f ) cuando n → +∞:

EG (f ) → 0, n → +∞.

Proposición 5.4 (Fórmula del Error). Si f ∈ C 2n+2 [a, b] y pn+1 es el polino-


mio ortogonal mónico correspondiente al peso w, entonces
b
f (2n+2) (ξ) f (2n+2) (ξ)
Z
EG (f ) = p2n+1 (t)w(t)dt = ||pn+1 ||2 , (5.12)
(2n + 2)! a (2n + 2)!
con ξ ∈ [a, b] y donde el valor de ||pn+1 ||2 se puede encontrar en la Tabla 5.1.

Ejemplo 5.3. Calcula una cota del error cometido en el Ejemplo 5.2.

Solución: Una cota del error viene dada por la expresión (5.12), pero tenemos
que tener en cuenta que nuestra función debe de estar definida en el intervalo
de integración asociado, por ello no podemos trabajar con la función f (t) del
Ejemplo 5.2, sino que debemos de trabajar con
t+5 t+5
 
ln 1
g(t) = 2 2 .
t+5 2 2
1+ 2

Además, en dicho ejemplo se usaron tres nodos, es decir, n = 2. Por lo tanto,


necesitamos acotar la derivada sexta, es decir, g (6) (t) en el intervalo [−1, 1].
Se deja al lector como ejercicio probar que

g (6) (ξ) := máx{|g (6) (t)| : t ∈ [−1, 1]} = g (6) (−1) = 0,00687659.
(0)
Por otro lado, necesitamos ||P2+1 ||2 , usando la Tabla 5.1 tenemos que

(0) (0) 22·3+1 (3!)2 8


||P2+1 ||2 = ||P3 ||2 = 2
= .
(2 · 3 + 1)((3 + 1)3 ) 175
Con toda esta información ya estamos en condiciones de acotar el error,

g (6) (ξ) (0) 0,00687659 8


EG (f ) ≤ ||P3 ||2 = = 4,36603 × 10−7 . 2
(2 · 2 + 2)! 6! 175

Nota 5.7. Es muy importante destacar el error tan pequeño que acabamos de
obtener con solo 3 nodos. Se deja al lector como ejercicio probar que error se
comete usando 10 nodos.

122
5.7. Implementación de las cuadraturas gaussia-
nas
Hasta ahora se ha respondido a las tres preguntas que se hacı́an al principio
del capı́tulo. Ahora falta utilizar Matlab para aproximar I(f ) usando cuadratu-
ras gaussianas. A diferencia del capı́tulo anterior que tenı́amos un código para
Trapecios, otro código para Simpson, etc... ahora vamos a tener un mismo código
para cualquier cuadratura, solo vamos a cambiar los valores iniciales. Pero antes
de eso, tenemos que ver otra propiedad de los polinomios ortogonales.
Como hemos visto anteriormente, los familias de polinomios mónicos ortogo-
nales clásicos respecto un peso w(t) verifican una relación de recurrencia del tipo
(5.4), la recordamos:

tPn (t) = Pn+1 (t) + αn Pn (t) + βn Pn−1 (t),


con P−1 (x) = 0 y P0 (x) = 1.
Vamos a definir la matriz de Jacobi Jn dada por (para más información y
propiedades ver por ejemplo [5, 9, 14, 21, 22]):
 
α0 1 0 0 ... 0
 β1 α 1 1 0 ... 0 
 
 0 β2 α2 1 . . . 0 
Jn =  .. .. . . .. .. ..  .

 . . . . . . 

 0 0 . . . βn−2 αn−2 1 
 
..
0 0 . 0 βn−1 αn−1 n×n
Con esta matriz, y tomando el vector de polinomios
 
P0 (t)
 P1 (t) 
Pn (t) = 
 
.. 
 . 
Pn−1 (t)

es facil ver que la relación de recurrencia (5.4) se puede escribir de la siguiente


manera:
 
tP0 (t)
 tP1 (t) 
Jn Pn (t) =  . (5.13)
 
..
 . 
tPn−1 (t) − Pn (t)
Por otro lado, sabemos que Pn (t) tiene n raı́ces reales y simples en el intervalo
de ortogonalidad. Sean {x0 , x1 , . . . , xn−1 } las n raı́ces de Pn (t), entonces evaluando
t = xi con 0 ≤ i ≤ n − 1, en (5.13) se tiene que

Jn Pn (xi ) = xi Pn (xi ).
Acabamos de ver que xi es un autovalor de la matrix Jn y Pn (xi ) es un autovec-

123
tor correspondiente al autovalor xi . En general, acabamos de probar el siguiente
resultado:

Proposición 5.5. ([14, Prop. 2.12]) Los ceros del polinomio ortogonal Pn
coinciden con los autovalores de la matriz tridiagonal Jn . Si Pn (xi ) = 0, entonces
Pn (xi ) es un autovector correspondiente al autovalor xi .

Este resultado que acabamos de probar proporciona una gran ayuda para cua-
draturas gaussianas. Recordamos que los nodos xi de las cuadraturas gaussianas
son ceros de polinomios ortogonales. Por tanto, con este resultado, conocidos los
valores de las sucesiones αn y βn podemos construir la matriz tridiagonal y sacar
sus autovalores, sin necesidad de conocer explı́citamente el polinomio ortogonal
de grado n.
Por otro lado, si se tiene una matriz simétrica, de la que se sabe que todos sus
autovalores son números reales pues son ceros de polinomios ortogonales, entoces
se puede construir la matriz de Jacobi de la siguiente manera: Sea Jn∗ , definida
por (ver [22, f. 3.5.31]):


α β1 √0 0 ... 0
 
√ 0
 β1 √α1 β2 0 ... 0 
 
 0 β2 α2 1 ... 0 
Jn∗ =  .. .. .. .. .. .. . (5.14)
 
. . . . .
p.

 p 
0 0 ... βn−2 αn−2 βn−1
 
 
.. p
0 0 . 0 βn−1 αn−1 n×n

La ventaja de usar Jn∗ frente a Jn es que hay numerosos algoritmos para el


cálculo de autovalores matriciales, y sabemos que ellos son más estables y más
recomendables si trabajamos con matrices simétricas (ver este resultado en [11]
ó [15]).
Finalmente, para construir nuestra cuadratura gaussiana necesitamos los pe-
sos de la cuadratura λi , para ello definimos el siguiente valor
Z b
γ0 = w(t)dt. (5.15)
a

El valor de γ0 para cada una de las cuatro familias que estamos trabajando
fue dado en la Tabla 5.1. Con toda esta información, el siguiente teorema (ver
[14]) nos va a dar la información necesaria para construir nuestro algoritmo para
cuadraturas gaussianas:

Teorema 5.5. Sean Jn∗ y γ0 definidos en (5.14) y (5.15), respectivamente. En-


tonces:

1. Los ceros x0 , x1 , . . . , xn−1 del polinomio Pn (o lo que es lo mismo, los nodos


de la cuadratura gaussiana correspondiente) son autovalores de la matriz
Jn∗ .

124
2. Si v = (v0 , v1 , . . . , vn−1 )T es un autovector unitario, correspondiente a un
autovalor xi , entonces tiene lugar la siguiente expresión para el peso de la
cuadratura
λi = γ0 v02 .

Con este resultado vamos a construir un código en Matlab que, dado una
integral ya transformada para poder aplicar la cuadratura gaussiana deseada,
nos devuelva la aproximación de la integral.
Resumen:

Paso 1: Nuestro algoritmo necesitará la función f una vez transformada la inte-


gral y tengamos el peso y el intervalo de integración sea el apropiado para
la cuadratura gaussiana que vamos a usar (Legendre o Chebyshev [−1, 1],
Laguerre [0, +∞) y Hermite (−∞, +∞)). Además, necesitaremos pasar el
número de nodos n. Y para poder construir la matriz Jn∗ deberemos de in-
troducir los valores de αn , βn y γ0 asociados a la cuadratura gaussiana que
vamos a aplicar (ver Tabla 5.1).

Paso 2: Construir la matriz Jn∗ .

Paso 3: Obtener los autovalores y los autovectores de Jn∗ .

Paso 4: Formar la cuadratura dada por


n
X
IG (f ) = λi f (xi ),
i=0

y obtener el valor deseado.

Nota 5.8. El siguiente código está preparado para obtener la aproximación gaus-
siana con n exactamente el número de nodos, ya que Matlab no empieza a contar
desde 0. Esto mismo pasaba en las anteriores cuadraturas de Trapecios y Simpson
por ejemplo.

5.7.1. Código para cuadraturas gaussianas


El código ha sido obtenido de [17].

% f es el integrando
% a representa alpha_n y b representa a beta_n
% en la relación de recurrencia a tres términos,
% n es el número de nodos y b0 es el valor de gamma_0
% p nos da los pesos y nd los nodos.
% r nos da el valor de la integral
function r=gaussianas(f,a,b,n,b0)
in=(1:n-1); in1=[0,in];
alfas=feval(a,in1);
betas=sqrt(feval(b,in));

125
ma=diag(alfas)+diag(betas,1)+diag(betas, -1);
% ma es la matriz de Jacobi simétrica
[v,d]=eig(ma);
nd=diag(d);
p=v(1,:).^2*b0;
ev=feval(f,nd);
r=p*ev;

Nota 5.9. En el anterior código, si fuera necesario, podrı́amos decir que devuelva
p ó nd, que son respectivamente los pesos y los nodos de la cuadratura.

5.7.2. Utilización del código


Para utilizar la función gaussianas hay que seguir los siguientes pasos:

Paso 1: Se graba en un script nuestra función llamada gaussianas.

Paso 2: En un nuevo script definimos la función f de nuestra integral ya trans-


formada.

Paso 3: En el mismo script definimos nuestras funciones parámetros, es decir,


αn , βn y γ0 en función de la cuadratura gaussiana que estamos trabajando.
(Nota: es importante tener en cuenta que αn y βn son funciones de n,
por tanto hay que definirlas como función dependiente de n, γ0 es una
constante). Para facilitar al lector, vamos a poner aquı́ como quedarı́an las
definiciones de αn y βn en los cuatro casos más comunes.

• Caso Legendre:
a=@(n)0*n;
b=@(n)n.^2./(4*n.^2-1);
b0=2;
• Caso Chebyshev:
a=@(n)0*n;
b=@(n)1/2*(n==1)+1/4*(n>=2);
b0=pi;
• Caso Laguerre:
a=@(n)2*n+alpha+1;
b=@(n)n.*(n+alpha);
b0=gamma(alpha+1);
En este caso, el peso de Laguerre tiene un parámetro α, recordamos
que el peso de Laguerre es w(t) = tα e−t , por tanto, este valor de α
debe de ser dado cada vez que usemos este código.
• Caso Hermite:

126
a=@(n)0*n;
b=@(n)n/2;
b0=sqrt(pi);

Paso 4: Finalmente, evaluamos el script y nos devuelve la aproximación de la


integral.
Ejemplo 5.4. Use 20 nodos y la cuadratura gaussiana que crea más conveniente
aproximar Z 3
x ln(x)
2
dx
2 1+x
Solución: Para resolver este ejercicio seguimos los pasos del Ejemplo 5.2. Tran-
formamos la integral y nos queda que
Z 1 t+5 
ln t+5
Z 3 
x ln(x) 2 2 1
2
dx = 2 dt.
2 1+x 2
t+5

−1 1 +
2
Una vez transformada la integral tomamos
t+5
ln t+5
 
2 2 1
g(t) = ,
t+5 2 2

1+ 2

y aplicamos la cuadratura de Gauss-Legendre. Creamos un nuevo script con el


siguiente código:
a=@(n)0*n;
b=@(n)n.^2./(4*n.^2-1);
b0=2;
g=@(t)((t+5)/2).*log((t+5)/2)./(1+((t+5)/2).^2)/2;
gaussianas(g,a,b,20,b0)
Y directamente Matlab nos devuelve 0,311854468477192, la aproximación que
estabamos buscando.
Nota 5.10. En el ejemplo anterior es importante destacar que las 3 primeras
lı́neas de código están copiadas del caso Legendre, solo hemos añadido la defini-
ción de la función g(t) y en la última lı́nea del código hemos puesto el número
20, que es el número de nodos que hemos usado.
Ejemplo 5.5. De una aproximación de
+∞ 2
e−t 2 −t
Z
t e dt,
0 t+1
usando 16 nodos de la cuadratura gaussiana que crea más conveniente.
Solución: Basta una mirada rápida para darse cuenta que tenemos una integral
en el intervalo de integración de Laguerre, con peso w(t) = t2 e−t con α = 2, por
tanto, la función que debemos de introducir en Matlab será:
2
e−t
f (t) = .
t+1

127
Con estos ingredientes el codigo que debemos de introducir en Matlab es:

alpha=2;
a=@(n)2*n+alpha+1;
b=@(n)n.*(n+alpha);
b0=gamma(alpha+1);
f=@(t)exp(-t.^2)./(t+1);
gaussianas(f,a,b,16,b0)

Matlab nos devuelve


0,086689431780785
que es la aproximación que estamos buscando. Si volvemos a comparar con la
orden que trae Matlab, este nos devuelve 0,08659455453. Los códigos introducidos
han sido

syms x
FF=int(exp(-x^2)/(x+1)*x^2*exp(-x),x,0,inf);
vpa(FF,10)

Compare el tiempo de espera, el primero es inmediato y el segundo hay que


esperar unos segundos.
Vea más ejemplos resueltos y ejercicios propuestos en el Apéndice E, página
251.

128
Bibliografı́a

[1] Álvarez-Nodarse, R. (2003) Polinomios hipergeométricos y q-polinomios. Za-


ragoza, España: Monografı́a del seminario matemático Garcı́a de Galdeano.
Servicio de Publicaciones de la Universidad de Zaragoza.

[2] Askey, R. A. y Roy, R. (2010) Gamma Function, in NIST Handbook of Mat-


hematical Functions. Cambridge, UK: Cambridge University Press.

[3] Canuto C. Hussaini M. Y. Quarteroni A. y Zang T. A. (1988) Spectral Met-


hods in Fluid Dynamics. New York, Estados Unidos: Springer.

[4] Cordero-Barbero, A. Hueso-Pagoaga, J. L. Martı́nez-Molada, E. y


Rorregrosa-Sánchez, J. R. (2006) Problemas Resueltos de Métodos Numéri-
cos. Madrid, España: Thomson.

[5] Chihara, T. S. (1978) An Introduction to Orthogonal Polynomials. New York,


Estados Unidos: Gordon and Breach Science Publishers.

[6] Doubova, A. y Guillén-González F. (2007) Un Curso de Cálculo Numérico:


Interpolación, Aproximación, Integración y Resolución de Ecuaciones Dife-
renciales. Sevilla, España: Servicio de Publicaciones de la Universidad de
Sevilla.

[7] Gander, W. y Gautschi, W. (2000) Adaptive Quadrature - Revisited. BIT.


CS technical report, 40(1), 84-101.

[8] Gautschi, W. (2002) Numerical Analysis. New York, Estados Unidos: Sprin-
ger.

[9] Gautschi, W. (2004) Orthogonal Polynomials. Computation and Approxima-


tion. New York, Estados Unidos: Oxford University Press.

[10] Ismail, M. E. H. (2005) Classical and Quantum Orthogonal Polynomials in


one Variable. Cambridge, UK: Cambridge University Press.

[11] Kincaid, D. y Cheney, W. (1994) Análisis numérico. Las matemáticas del


cálculo cientı́fico. Mexico D. F. México: Addison-Wesley Iberoamericana, S.
A.

[12] Koekoek, R. Koornwinder, T. H. Swarttouw, R. F. y Wong, R. (2010) Ort-


hogonal Polynomials, in NIST Handbook of Mathematical Functions. Cam-
bridge, UK: Cambridge University Press.

129
[13] López, G. y Pijeira-Cabrera, H. (2001) Polinomios Ortogonales. Caracas,
Venezuela: Centro de estudios Avanzados - Instituto Venezolano de Investi-
gaciones Cientı́ficas.

[14] Martı́nez-Finkelshtein, A. y Moreno-Balcázar, J. J. (1999) Métodos Numéri-


cos: Aproximación en R. Almerı́a, España: Servicio de Publicaciones de la
Universidad de Almerı́a.

[15] Martı́nez-Finkelshtein, A. (2001) Métodos Numéricos: Resolución de ecua-


ciones. Almerı́a, España: Servicio de Publicaciones de la Universidad de Al-
merı́a.

[16] Mathews, J. H. y Fink K. D. (2000) Métodos Numéricos con Matlab. Madrid,


España: Prentice Hall.

[17] Moreno-Balcázar, J. J. (2017) Apuntes de Métodos Numéricos II. Almerı́a,


España: Grado en Matemáticas de la Universidad de Almerı́a.

[18] Quarteroni, A. y Saleri, F. (2006) Cálculo Cientifico con MATLAB y Octave.


Milan, Italia: Springer.

[19] Quarteroni, A. Sacco, R. y Saleri, F. (2000) Numerical Mathematics. New


York, Estados Unidos: Springer.

[20] Ramı́rez-González, V. Barrera-Rosillo, D. Pasadas-Fernández, M. y


González-Rodelas, P. (2001) Cálculo Numérico con Mathematica. Barcelo-
na, España: Editorial Ariel, S. A.

[21] Sanz-Serna J. M., (1998) Diez lecciones de cálculo numérico. Valladolid,


España: Secretariado de Publicaciones e intercambio Cientı́fico, Universidad
de Valladolid.

[22] Temme, N. M. (2010) Numerical Methods, in NIST Handbook of Mathema-


tical Functions. Cambridge, UK: Cambridge University Press.

[23] Szegö, G. (1975) Orthogonal Polynomials. Providence, RI: American Mathe-


matical Society, Colloquium publications Volumen 23.

130
Capı́tulo 6

ECUACIONES
DIFERENCIALES
ORDINARIAS

Autores: Juan J. Moreno–Balcázar1,2

1 Departamento de Matemáticas, Universidad de Almerı́a, España.


2 Instituto Carlos I de Fı́sica Teórica y Computacional, España.
2 balcazar@ual.es

Este capı́tulo está dedicado a la resolución numérica de problemas de valores


iniciales (PVI). La literatura en métodos numéricos y, en particular en la resolu-
ción numérica de PVI, es enorme y existen referencias muy autorizadas tales como
[2], [3], [7], [9] o [11] entre otros que por cuestiones de espacio no son incluidos en
la bibliografı́a. En el capı́tulo plantearemos de forma resumida y sin demostracio-
nes los contenidos teóricos que son imprescindibles para abordar con rigurosidad,
y sobre todo con eficacia, los problemas prácticos. En el apéndice daremos detalles
muy concretos en la resolución de problemas y nos dedicaremos a la parte prácti-
ca. En la redacción de este capı́tulo me he basado en mi experiencia y al material
elaborado dando clase a estudiantes de ingenierı́a y de matemáticas a lo largo
de más de 20 años en la Universidad de Almerı́a. Por razones de espacio se han
suprimido dos temas de importancia como son los métodos predictor–corrector y
la resolución de problemas de contorno. Al lector se le supone una formación en
ecuaciones diferenciales ordinarias (EDO).

6.1. Definiciones básicas


Comencemos con algo básico: cuando se habla de “movimiento o variación”
de una variable en términos matemáticos estamos tratando con el concepto de
derivada; si estas derivadas aparecen en el contexto de una ecuación estamos
manejando ecuaciones diferenciales ordinarias (EDO). Existen gran variedad de
textos sobre EDO, para este breve capı́tulo, citaremos [1], [6] y [12].

131
Definición 6.1. Se llama ecuación diferencial ordinaria (escalar) de orden n a

g(t, y(t), y 0 (t), . . . , y (n) (t)) = 0 , (6.1)

donde t es la variable independiente.

Definición 6.2. La función s(t) es solución de la EDO (6.1) en intervalo I =


[a, b] si las funciones s(t), s0 (t), . . . , s(n) (t) existen en I y satisfacen (6.1), esto es,

g(t, s(t), s0 (t), . . . , s(n) (t)) = 0 .

Por ejemplo, simplemente derivando podemos comprobar que la función et es


solución en todo el eje real de la EDO y 00 (t)−2y 0 (t)+y(t) = 0 , pero también lo es,
tet o ( 15 − 13 t)et . De hecho, esta EDO de orden 2 tiene infinitas soluciones, algo que
razonando heurı́sticamente es lógico ya que si para recuperar y(t) a partir de y 00 (t)
deberı́amos integrar dos veces, entonces aparecerán dos constantes arbitrarias de
integración.

Definición 6.3. Cuando la EDO (6.1) se pueda expresar de la forma

y (n) (t) = f (t, y(t), y 0 (t), . . . , y (n−1) (t)) , (6.2)

se dice que admite una forma explı́cita.

Observe que de (6.2) siempre se puede pasar a la forma general (6.1) pero no
viceversa. Ası́, en el ejemplo anterior, podemos poner y 00 (t) = 2y 0 (t) − y(t)  , pero
0 y 0 (t)
no siempre podemos obtener la forma (6.1), por ejemplo, en y (t) ln 4 = 4t .

6.1.1. Problemas de valores iniciales


Dada una EDO de orden n con t ∈ I = [a, b] en el caso de tener solución
general, para determinar unı́vocamente las constantes de integración se necesitan
n condiciones iniciales: y(a) = α0 , y 0 (a) = α1 , . . . , y (n−1) (a) = αn−1 .

Definición 6.4. Se llama problema de valor inicial (PVI) a

y (t) = f (t, y(t), y 0 (t), . . . , y (n−1) (t)), t ∈ [a, b],


 (n)

y(a) = α0 , y 0 (a) = α1 , . . . , y (n−1) (a) = αn−1 .

Por ejemplo, puede verificar que y(t) = tet es solución del PVI
 00
y (t) = 2y 0 (t) − y(t),
y(0) = 0, y 0 (0) = 1 .

Además es la única solución, algo que se establecerá más adelante en el Teorema


6.1 de Cauchy–Lipschitz.

Nota 6.1. Aunque el intervalo I = [a, b] puede ser cualquiera, lo habitual es que
a = 0, pues permite trabajar con mayor comodidad sobre todo desde el punto de

132
vista numérico. Esto es debido a que podemos pasar de [a, b] a [0, c] con un simple
cambio de variable, esto es, si

c(z − a)
z ∈ [a, b] ⇒ t= ∈ [0, c] .
b−a
Por tanto, trabajaremos siempre en intervalos de la forma [0, c]. De hecho, lo
habitual es tomar c = 1.

6.1.2. Existencia y unicidad de solución de PVI


Desde el punto de vista de los métodos numéricos necesitamos que el PVI bajo
estudio tenga solución única. El siguiente resultado lo garantiza dando condiciones
suficientes
Teorema 6.1. de Cauchy–Lipschitz (ampliado) Sea el PVI
 0
y (t) = f (t, y T (t)), t ∈ I = [0, c],
(6.3)
y(0) = y0 ,

donde y(t) = (y1 (t), . . . , yn (t))T y f : I × D 7→ Rn con D ⊆ Rn . Si f es continua


en I × D y Lipschitz para y en I × D con constante de Lipschitz L, es decir, para
todo u, v ∈ I × D existe L > 0 tal que

||f (t, u) − f (t, v)|| ≤ L||u − v||,

entonces se tiene:
a) El PVI (6.3) tiene solución única en I × D.
b) Sea ỹ solución del PVI perturbado
 0
ỹ (t) = f (t, ỹ T (t)),
ỹ(0) = ỹ0 ,

entonces
||y − ỹ|| ≤ eLt ||y0 − ỹ0 ||.

c) Sea ŷ solución del PVI perturbado


 0
ŷ (t) = f (t, ŷ T (t)) + r(t, ŷ T (t)),
ŷ(0) = ŷ0 ,

Si ||r|| ≤ M , entonces

M Lt
||y − ŷ|| ≤ eLt ||y0 − ŷ0 || + (e − 1).
L
A la función r se le llama ruido.
Nota 6.2. Este teorema da condiciones suficientes para la existencia y unicidad
de solución de PVI, pero no son condiciones necesarias.

133
Nota 6.3. Para calcular la constante de Lipschitz L debemos obtener la matriz
jacobiana  ∂f1 ∂f1 ∂f1 
∂y1 ∂y2
. . . ∂yn
Jy f (t, y) =  ... .. . . . 
. .. 

.
∂fn ∂fn ∂fn
∂y1 ∂y2
. . . ∂y n

Entonces L se puede tomar como una constante tal que

L ≥ ||Jy f ||,

donde || · || denota la norma matricial inducida que habitualmente suele ser la


norma infinito.

Definición 6.5. Un PVI que tenga solución única se dice que es un PVI bien
planteado.

En este capı́tulo sólo vamos a tratar con PVI bien planteados.

6.1.3. Estabilidad de un PVI


Un concepto fundamental a la hora de analizar un PVI es su estabilidad. El
desarrollo de este concepto es muy interesante involucrando conceptos tales como
la forma de Jordan de una matriz o la exponencial de una matriz. Puesto que
este capı́tulo es básico, nos limitaremos a motivar y presentar este concepto (para
más detalles ver, por ejemplo, [9]).
Comencemos con las denominadas ecuaciones test que tendrá una relevancia
especial a lo largo de todo el capı́tulo.

Definición 6.6. A la EDO escalar y 0 (t) = λy(t) con λ ∈ C se le llama ecuación


test.

Podemos plantear el PVI


 0
y (t) = λy(t), t ∈ I = [0, c],
(6.4)
y(0) = y0 ,

y el PVI perturbado

ỹ 0 (t) = λỹ(t),

t ∈ I = [0, c],
ỹ(0) = ỹ0 ,

cuyas soluciones respectivas son y(t) = y0 eλt , ỹ(t) = ỹ0 eλt . Luego,

|y(t) − ỹ(t)| = |eλt (y0 − ỹ0 )| = |eλt | |y0 − ỹ0 | = e<(λ)t |y0 − ỹ0 |,

donde <(λ) denota la parte real de λ.


Intuitivamente lo que interesa es que |y(t) − ỹ(t)| esté acotado en función
de la perturbación introducida, entonces diremos que es estable. Si además la
perturbación se diluye cuando t → ∞ tendremos que el PVI es asintóticamente
estable. Obviamente, si no es estable es inestable. Por tanto, el PVI (6.4) es

134
Estable ⇔ <(λ) ≤ 0.

Asintóticamente estable ⇔ <(λ) < 0.

Inestable ⇔ <(λ) > 0.


Este sencillo análisis nos permite abordar la estabilidad en situaciones más
complejas. Denotamos por Mn al conjunto de las matrices cuadradas de orden
n.
Proposición 6.1. El PVI
 0
y (t) = Ay(t), t ∈ I = [0, c], A ∈ Mn ,
(6.5)
y(0) = y0 ,
es:
Estable si y sólo si

• <(λi ) ≤ 0 para todo i con λi valor propio de A.


• Si <(λi ) = 0 para algún i, entonces el correspondiente valor propio λi
es simple (multiplicidad 1).

Asintóticamente estable si y sólo si <(λi ) < 0 para todo i con λi valor propio
de A.
Cuando se considera el caso general
 0
y (t) = f (t, y T (t)), t ∈ I = [0, c],
y(0) = y0 ,

lo que se hace para estudiar la estabilidad es linealizar el PVI, esto es, considerar
el PVI
 0
y (t) = (Jy f (t, y))y(t), t ∈ I = [0, c],
(6.6)
y(0) = y0 .
Evidentemente, la matriz jacobiana Jy f (t, y) dependerá en la mayorı́a de las oca-
siones de t, lo cual obliga a un análisis local y más complicado. Sin embargo, para
sistemas de EDO del tipo
 0
y (t) = Ay(t) + g(t), t ∈ I = [0, c], A ∈ Mn ,
y(0) = y0 ,
el PVI linealizado (6.6) es de la forma (6.5) y se puede aplicar la Proposición 6.1.
¿Cómo analizamos la estabilidad de un PVI asociado a una EDO de orden n?
El siguiente resultado será fundamental, no sólo para el análisis de la estabilidad,
sino para poder aplicar los métodos numéricos que veremos en este capı́tulo.
Proposición 6.2. Todo PVI de la forma

y (t) = f (t, y(t), y 0 (t), . . . , y (n−1) (t)),


 (n)
f : I × D 7→ Rn
y(0) = α0 , y 0 (0) = α1 , . . . , y (n−1) (0) = αn−1 ,

135
donde D ⊆ Rn y t ∈ I = [0, c] , puede ser expresado como un sistema de la forma


 z10 (t) = z2 (t),
0
 z2 (t) = z3 (t),



.. .. t ∈ I,
. .
0

 z (t) = zn (t),
 zn−1


0

n (t) = f (t, z1 (t), z2 (t), . . . zn (t))),

con condiciones iniciales z1 (0) = α0 , . . . , zn (0) = αn−1 .


Demostración: Basta tomar z1 (t) = y(t) , z2 (t) = y 0 (t) , . . . , zn (t) = y (n−1) (t) .
2

6.2. Número de condición de un PVI


Desde el punto de vista numérico, el hecho de que un PVI esté bien plantea-
do no es suficiente a la hora de resolverlo numéricamente de forma satisfactoria.
Además de analizar la estabilidad del PVI, necesitamos conocer el condiciona-
miento del PVI. Para ello damos la siguiente definición de número de condición.
Definición 6.7. Sea el PVI
 0
y (t) = f (t, y T (t)), x ∈ I = [0, c],
y(0) = y0 ,

y el PVI perturbado
ỹ 0 (t) = f (t, ỹ T (t)),


ỹ(0) = ỹ0 .
Se llama número de condición absoluto del PVI y se denota por k(t) al
menor escalar tal que:
||y − ỹ|| ≤ k(t)||y0 − ỹ0 ||,
donde y e ỹ son las soluciones del PVI y el PVI perturbado, respectivamente.
Es inmediato obtener las siguientes propiedades.
Proposición 6.3. a) k(t) ≥ 1.
b) Si ||Jy ||S ≤ g(t), para todo t ∈ S ⊂ I, entonces
Z t 
k(t) ≤ exp g(x)dx .
0

Nota 6.4. Es evidente que cuanto más pequeño sea k(t), es decir, más próximo
a 1, mejor condicionado estará el problema. También, hay que observar que bien
planteado y bien condicionado son conceptos diferentes.
Ejemplo 6.1. Consideramos el PVI
 0
y (t) = 11y(t) − 11t, t ≥ 0,
1
y(0) = 11 .

136
Este PVI satisface las condiciones del teorema 6.1 ya que f (t, y) = 11y(t) − 11t
y ∂f
∂y
= 11 = L para todo t. Ası́ pues, tiene solución única y por tanto está
bien planteado. Su resolución analı́tica es simple: la EDO es lineal y su ecuación
caracterı́stica es r − 11 = 0. Puesto que la solución de esta ecuación es r1 = 11,
por la Proposición 6.1 este PVI es inestable, lo cual nos debe prevenir a la hora
de resolverlo numéricamente.
El sistema fundamental es {e11t }. Usamos el método de los coeficientes inde-
terminados para buscar una solución particular yp (t) = at+b, entonces obtenemos

11a − 11 = 0 1
a = 11(at + b) − 11t ⇒ ⇒ a = 1, b = .
11b = a 11

Por tanto, la solución de la EDO del PVI es


1
y(t) = Ce11t + t + .
11
Imponiendo la condición inicial obtenemos que C = 0 y la solución del PVI es
1
y(t) = t + .
11
Sin embargo, puesto que 1/11 = 0,090909... Si tomamos el PVI perturbado
(en este caso por simple redondeo)
 0
ỹ (t) = 11ỹ(t) − 11t, t ≥ 0,
ỹ(0) = 0,09091,

tenemos que |y0 − ỹ0 | = 9,09...×10−7 Siendo ahora la solución del PVI perturbado
(observe que la EDO es la misma)
1
ỹ(t) = 9,09... × 10−7 e11t + t + ,
11
que es sustancialmente diferente a y(t). Por ejemplo, si evaluamos en t = 5,

y(5) = 5 + 1/11 = 5,090909...


ỹ(5) = 9,09... × 10−7 e55 + 5,090909... ≈ 6,995 × 1017 .

Por tanto una perturbación de 10−7 en la condición inicial ha producido en t = 5


un error del orden de 1017 . Realmente espectacular.
¿Se podı́a esperar? La respuesta es afirmativa ya que tenemos un PVI inestable
con contante de Lipschitz L = ∂f ∂y
= 11 y por tanto de acuerdo a b) del Teorema
6.1 se tiene ||y − ỹ|| ≤ 9,09... × 10−7 e11t y evaluando en t = 5 obtenemos que

|y(5) − ỹ(5)| ≤ 9,09... × 10−7 e55 ,

siendo esta desigualdad en verdad una igualdad como hemos visto. Luego la cota
es óptima, no se puede obtener otra mejor.
También se puede ver que en este caso g(t) = 11, luego por b) de la Proposición

137
6.3 Z t 
k(t) ≤ exp 11dx = e11t ,
0

siendo de nuevo esta desigualdad una igualdad y la cota es óptima.

6.3. Métodos de un paso para la resolución numéri-


ca de PVI
La resolución de gran mayorı́a de PVI necesita el uso de métodos numéricos.
Si se hiciera una clasificación, excesivamente simple, de los métodos numéricos
en función del número de pasos podrı́amos dividirlos en métodos de un paso (co-
nocidos también como métodos sin memoria) y en métodos multipaso (conocidos
como métodos con memoria). En esta sección trataremos con los métodos de un
paso describiendo sus principales caracterı́sticas: estabilidad, consistencia, con-
vergencia y orden. Estos conceptos, junto con el de A–estabilidad, serán muy
importantes también en el análisis de los métodos multipaso. Nos centraremos en
los métodos de Runge–Kutta.

6.3.1. Un primer acercamiento: el método de Euler


La idea fundamental de los métodos numéricos es la discretización de la
EDO asociada al PVI. Supongamos que tenemos una EDO escalar, esto es,
 0
y (t) = f (t, y(t)), f : [0, c] × R → R
y(0) = y0 .

Se toma una partición de I = [0, c] denotada por ∆ = {ti }N i=0 tal que t0 = 0 y
tN = c (note que el intervalo I siempre puede empezar en 0). Por comodidad
en la notación, tomaremos la partición ∆ equiespaciada, es decir, tj+1 − tj = h
para j = 0, . . . , n − 1, aunque el enfoque se puede hacer para cualquier tipo de
partición. Entonces suponiendo que la función y es suficientemente diferenciable,
podemos realizar su desarrollo de Taylor alrededor del punto tn obteniendo

y 00 (ξn )
y(t) = y(tn ) + y 0 (tn )(t − tn ) + (t − tn )2 ,
2
con ξn entre t y tn . Evaluando en t = tn+1 y despejando y 0 (tn ) se obtiene:

0 y(tn+1 ) − y(tn ) y 00 (ξn )


y (tn ) = f (tn , y(tn )) = − h, ξn ∈ (tn , tn+1 ).
h 2
00
Si eliminamos el término − y (ξ
2
n)
h y queremos mantener la igualdad, obviamen-
te no será satisfecha por las cantidades y(tn ) sino por otras que las aproximan
yn ≈ y(tn ) deduciendo

yn+1 = yn + hf (tn , yn ), n = 0, . . . , N − 1

138
que es el método de Euler. El error que se comete puede ser acotado por
M2
h con M2 = máx |y 00 (t)|.
2 t∈I

Podemos escribir que el error e(t) = O(h) y por tanto el método de Euler es
de orden 1. Claramente este método “arranca” con el conocimiento del valor
inicial y0 que es un dato de nuestro problema.
Lo que hace el método de Euler es aproximar el valor real y(tn+1 ) por el valor
de la recta tangente calculada en el punto t = tn y evaluada en tn+1 . Claramente
vamos cometiendo cada vez más errores pues en verdad para el cálculo estimado
de y(tn+1 ) no usamos la recta tangente en el punto (tn , y(tn )) sino (tn , yn ). En la
Figura 6.1 se observa claramente. Este método, como los otros que vamos a ver,

Figura 6.1: Interpretación geométrica del método de Euler

Solución analítica
Error
y(tn)
yn

Error

Error

Error

Error

Fuente: Elaboración propia.

pueden ser adaptados a sistemas de EDO. En este caso, dado un PVI


 0
y (t) = f (t, yT (t)), f : [0, c] × Rm → Rm
y(0) = y0 ,
o equivalentemente,


 y10 (t) = f1 (t, y1 (t), . . . , ym (t)), fi : [0, c] × R → R i = 1, . . . , m,
0
 y2 (t) = f2 (t, y1 (t), . . . , ym (t)),



.. .
. = ..
0




 ym (t) = fm (t, y1 (t), . . . , ym (t)),
 y(0) = (y , . . . , y ),
1,0 m,0

Quedando el método de Euler como



yi,n+1 = yi,n + hfi (tn , y1,n , . . . , ym,n ), n = 0, . . . , N − 1, i = 0, . . . , m,
y1,0 , . . . , ym,0 .

139
o en notación vectorial,

yn+1 = yn + hf (tn , yn ), n = 0, . . . , N − 1,
(6.7)
y0 .

Como hemos visto gráficamente siempre se comete un error. Por eso, es conve-
niente dar una definición exacta válida para cualquier método numérico de
resolución de PVI.
Definición 6.8. Se define el error de truncamiento global o error de discretiza-
ción de un método numérico como

en (h) := ||y(tn ) − yn ||.

Se define
e(h) := máx en (h) = máx ||y(tn ) − yn ||.
n=0,...,N n=0,...,N

Nota 6.5. En el caso de una EDO escalar tenemos en (h) := |y(tn ) − yn |. Este
error se podrı́a definir también como en (h) := y(tn ) − yn o como en (h) := yn −
y(tn ).

6.3.2. Métodos de un paso: consistencia, estabilidad, con-


vergencia y orden
En este apartado entraremos a dar unos conceptos fundamentales para tra-
bajar eficazmente con los métodos numéricos. Son imprescindibles en el análisis
de cualquier método numérico para PVI. Teniendo en cuenta la rigurosidad del
tema, no entraremos en los detalles de muchas demostraciones, dejándolas para
el lector interesado.
El método de Euler (6.7) se puede generalizar fácilmente considerando el si-
guiente esquema

yn+1 = yn + hφ(tn , yn , h), n = 0, . . . , N − 1,
(6.8)
y0 ,

donde φ : [0, c] × Rm × R+ → Rm . Si φ(t, y, h) = f (t, y) entonces el método (6.8)


es en realidad el método de Euler (6.7).
Es natural hacer la pregunta: ¿qué le debemos exigir a un método numérico
para que sea adecuado para resolver un PVI? Informalmente, se puede intuir lo
siguiente:
Que la solución numérica tienda a la real cuando h → 0, → Convergencia.
Que no “amplifique” los errores de redondeo → Estabilidad.
Que la discretización realizada (la elección de φ) sea correcta → Consisten-
cia.
Que se pueda estimar el error en función del paso → Orden o velocidad de
convergencia.

140
Vamos a formalizar estos conceptos. Consideremos el PVI
 0
y (t) = f (t, yT (t)), f : [0, c] × Rm → Rm
(6.9)
y(0) = y0 ,

y asociado a él consideramos el método numérico (6.8) y el método perturbado



zn+1 = zn + h(φ(tn , zn , h) + εn ), n = 0, . . . , N − 1,
(6.10)
z0 .

Definición 6.9 (Convergencia). Un método numérico (6.8) se dice convergente


si
lı́m e(h) = 0,
h→0

donde e(h) está dado en la Definición 6.8.


Definición 6.10 (Estabilidad). Un método numérico (6.8) se dice estable (teóri-
camente estable o 0–estable) para el PVI (6.9) si existen dos constantes M1 y M2
(independientes de h) tales que

máx ||yn − zn || ≤ M1 ||y0 − z0 || + M2 máx ||εn ||,


n=0,...,N n=0,...,N −1

donde zn es la solución del método perturbado (6.10).


Definición 6.11 (Consistencia). Un método numérico (6.8) se dice consistente
con el PVI (6.9) si se cumple

y(tn+1 ) − y(tn )
lı́m máx − φ(tn , y(tn ), h) = 0,
h→0 n=0,...,N −1 h

para toda solución de la ecuación diferencial y0 (t) = f (t, yT (t)).


Definición 6.12 (Orden). El método numérico (6.8) se dice de orden p ∈ N si

y(tn+1 ) − y(tn ) p
máx − φ(tn , y(tn ), h)
= O(h ),
n=0,...,N −1 h

para toda solución de la ecuación diferencial y0 (t) = f (t, yT (t)).


Nota 6.6. Observe la importante relación entre las definiciones de consistencia
y orden.
Estos conceptos están ligados entre sı́. El Teorema 6.2 establece dicha rela-
ción y es conocido como Teorema de Lax debido a Peter D. Lax (1926-). La
demostración de este resultado se hará en la Sección F.5 del Apéndice F.
Teorema 6.2. Un método numérico de 1 paso (6.8) consistente y estable es
convergente.
De forma visual:
Consistencia+Estabilidad ⇒ Convergencia

141
Las definiciones de convergencia, estabilidad y consistencia dadas anterior-
mente son difı́ciles de verificar. Sin embargo, el siguiente resultado lo simplifica
notablemente.

Teorema 6.3. Si φ es continua en [0, c] × Rm × R+ , Lipschitz respecto a la


segunda variable (y), φ(t, y, 0) = f (t, y) y h suficientemente pequeña, entonces
el método numérico (6.8) es convergente.

Proposición 6.4. Si un método numérico (6.8) es estable y de orden p, entonces


e(h) = O(hp ).

Corolario 6.1. Bajo las hipótesis del Teorema 6.1 de Cauchy-Lipschitz y h su-
ficientemente pequeña, el método de Euler es convergente de orden 1.

6.3.3. Problemas stiff. A−estabilidad


Un concepto de mucho interés es la A−estabilidad cuyo nombre proviene de
estabilidad absoluta. Desde el punto de vista de la estabilidad parece que lo más
conveniente es tener un PVI asintóticamente estable. Sin embargo, aún teniendo
PVI asintóticamente estables podemos tener algún susto numérico. Por ejemplo,
consideremos el PVI  0
y (t) = −10y(t),
y(0) = 1.
Su solución analı́tica es y(t) = e−10t , y por tanto lı́mt→∞ y(t) = 0. Ası́, cabe
esperar que la solución numérica obtenida con un método numérico convergente,
por ejemplo por el método de Euler, también fuera a 0. Al aplicar el método de
Euler a este PVI tan sencillo podemos utilizar la recursividad obteniendo:

yn+1 = yn −10hyn = (1−10h)yn = (1−10h)2 yn−1 = . . . = (1−10h)n+1 y0 = (1−10h)n+1 .

Ası́,
lı́m yn = 0 ⇔ |1 − 10h| < 1 ⇔ 0 < h < 0,2.
n→∞

Por tanto, si tomamos h ≥ 0,2 la solución numérica no convergerı́a a la real.


Esto no contradice el Corolario 6.1 ya que ahı́ se indica que h debe ser suficien-
temente pequeña, en este caso menor que 0,2. Sin embargo, si nos restringe el
tamaño del paso y eso es importante tenerlo en cuenta a la hora de resolver
numéricamente un PVI.
Si no queremos tener restricción del paso hay que usar métodos A–estables.

Definición 6.13. Un método numérico (6.8) se dice A–estable si para todo h > 0
se tiene que lı́mn→∞ yn = 0, siendo yn cualquier solución numérica de la ecuación
diferencial tipo test y 0 (t) = λy(t), con λ ∈ C y <(λ) < 0.

Hemos visto que el método de Euler no es A–estable, pero tiene lo que se


denomina región de A–estabilidad que es la región del plano complejo donde
el método es A–estable. En el caso del método de Euler es

|1 + hλ| < 1, <(λ) < 0,

142
es decir, el disco unidad abierto de centro -1.
Por tanto, la Definición 6.13 es equivalente a decir que un método es A–estable
si su región de A–estabilidad contiene al semiplano izquierdo {z : <(z) < 0}.
Definición 6.14. Se llama radio de A–estabilidad al ı́nfimo del intervalo obtenido
al intersecar la región de A–estabilidad con el eje real negativo.
Por propia definición, el radio de A–estabilidad es negativo. Se puede consi-
derar en valor absoluto, lo cual no es relevante siempre y cuando se sepa lo que
estamos haciendo. La manera de calcularlo es tomar λ real y negativo y resolver
la correspondiente desigualdad. Por ejemplo, en el caso del método de Euler se
nota x := hλ < 0, puesto que λ < 0 y

|1 + x| < 1 ⇒ −1 < 1 + x < 1 ⇒ −2 < x < 0.

Luego el radio de A–estabilidad del método de Euler es −2.


Este problema se acentúa cuando estamos ante problemas stiff (rı́gidos).
Definición 6.15. Un sistema lineal de ecuaciones diferenciales con coeficientes
constantes se dice stiff si
Todos los valores propios tienen parte real negativa.
máxi |<(λi )| >> mı́ni |<(λi )| donde λi son los valores propios de la matriz
de coeficientes del sistema lineal.
Se llama radio de stiffness a

máxi |<(λi )|
rs := . (6.11)
mı́ni |<(λi )|

Cuanto mayor sea rs mayor será la stiffness (rigidez) del sistema. Una intere-
sante discusión sobre la naturaleza de la rigidez se puede encontrar en la sección
6.2 del libro [9]. Habitualmente, si rs ≥ 10 el problema se considera stiff y hay
diferentes grados de stiffness: moderado, fuerte, etc.
Ejemplo 6.2. Consideramos el sistema lineal de EDO homogéneo
 0
 y1 (t) = 1195y1 (t) − 1995y2 (t), t ∈ [0, 1],
y 0 (t) = 1197y1 (t) − 1997y2 (t),
 2
y1 (0) = 2, y2 (0) = −2.

Su matriz de coeficientes es
 
1195 −1995
1197 −1997

y sus valores propios son −2 y −800. Por tanto su radio de stiffness es rs = 400.
Estamos ante un problema stiff y si quisiéramos resolverlo con el método de Euler
el paso h tendrı́a que cumplir

|1 − 2h| < 1 y |1 − 800h| < 1 ⇒ h < 1 y h < 1/400.

143
Por tanto hay que tomar h ∈ (0, 1/400). Si no tomamos h en este intervalo el
método de Euler no convergerá. Volveremos a este ejemplo en la parte práctica
incluida en el Apéndice F.

Note que en este método lo que hay que hacer es tomar


2
h< .
máxi |<(λi )|

En general, hay que tomar

|r|
h< (6.12)
máxi |<(λi )|

donde r es el radio de A–estabilidad del método bajo estudio.

Nota 6.7. El análisis hubiera sido el mismo si estuviéramos ante un sistema


lineal no homogéneo, es decir, y0 (t) = Ay(t) + g(t).
La cuestión se complica si estamos en sistema lineales de EDO con coefi-
cientes variables o en sistema no lineales. En estos casos, como ya se indicó
anteriormente, hay que recurrir al sistema linealizado (6.6):
 0
y (t) = (Jy f (t, y))y(t), t ∈ [0, c],
y(0) = y0 ,

donde Jy f (t, y) es la matriz jacobiana y el análisis ha de hacerse localmente.

6.3.4. Métodos de Runge–Kutta


Hasta ahora sólo conocı́amos de forma explı́cita un método numérico: el méto-
do de Euler. Podrı́a parecer que no hay muchos más o que es difı́cil generarlos,
nada más alejado de la realidad. Por ejemplo, el método de Euler se obtuvo
mediante una aproximación por la recta tangente o lo que es lo mismo por un
desarrollo de Taylor de orden 1, entonces podemos pensar considerar desarrollos
de Taylor de orden superior y esto da lugar a los métodos de Taylor que exigen
condiciones de derivabilidad a la función f del PVI, algo que no exige el Teorema
6.1 de Cauchy–Lipschitz. Por tanto, se estarı́a exigiendo condiciones adicionales
al método numérico que no se exigen para la existencia y unicidad de solución.
El lector interesado en los métodos de Taylor puede consultar, por ejemplo, la
sección 8.2 de [8].
Para evitar involucrar condiciones de derivación extra, vamos a trabajar con
otros métodos cuya motivación viene dada por las fórmulas gaussianas, aunque no
entraremos en su deducción. Estos son los métodos de Runge–Kutta que pueden
ser consultados entre otros en [2, Capı́tulo 4], [9, Capı́tulo 5] o [8, Sección 8.3].

Definición 6.16. Un método de Runge–Kutta (RK) de R estados viene dado por

144
una expresión de la forma:

XR

yn+1 = yn + h bi ki (tn , yn , h),

 i=1
y0 ,

donde !
R
X
ki (tn , yn , h) = f tn + hci , yn + h aij kj (tn , yn , h)
j=1

y los coeficientes bi , ci y aij viene dados por la tabla de Butcher:

c1 a11 a12 · · · a1R


c2 a21 a22 · · · a2R
.. .. .. . . .. c A
. . . . . abreviadamente
b
cR aR1 aR2 · · · aRR
b1 b2 · · · bR
Definición 6.17. Los métodos RK se dicen explı́citos si aij = 0 para j ≥ i.

La definición anterior nos dice que el método RK es explı́cito cuando la matriz


A es triangular inferior con la diagonal nula. En este caso,

k1 (tn , yn , h) = f (tn , yn ),
i−1
X
ki (tn , yn , h) = f (tn + hci , yn + h aij kj (tn , yn , h)), i ≥ 2.
j=1

Claramente los métodos


PR RK son métodos de un paso que cumplen el esquema
(6.8) con φ(t, y, h) = i=1 bi ki (tn , yn , h). Lo primero que hay ver es que tenemos
que exigir para que los métodos RK sean convergentes. En este capı́tulo, nos
centraremos en los métodos explı́citos, aunque se puede desarrollar una teorı́a
análoga para los implı́citos.

Teorema 6.4. Bajo las hipótesis del Teorema 6.1 de Cauchy–Lipschitz, h sufi-
R
X
cientemente pequeña y la condición adicional bi = 1, se tiene que los métodos
i=1
de RK explı́citos son convergentes.

El estudio del orden de los métodos RK no es una tarea simple y se puede


realizar usando un enfoque clásico mediante tediosos desarrollos de Taylor o con
la teorı́a más moderna (y compleja) debida a Butcher que involucra diagrama
de árboles (ver [3]). Para que un método RK tenga el máximo orden posible es
necesario exigirle que
R
X
ci = aij (6.13)
j=1

y bajo esta condición y otras adicionales se obtiene la siguiente tabla:

145
Estados 1≤R≤4 5≤R≤7 R = 8 ó 9 R ≥ 10
Orden máximo R R-1 R-2 ≤R−2

De la tabla se desprende que los métodos RK que mejor equilibran el número de


estados y el orden son los de 4 estados y orden 4. Por ejemplo, para un método
de 2 estados se tiene,
Lema 6.1. Un método de RK explı́cito convergente de 2 estados cumpliendo
(6.13) tiene orden 2 si sólo si b2 c2 = 1/2.
Nos queda estudiar la A–estabilidad de los métodos RK explı́citos.
Teorema 6.5 (ver [3]). Los métodos de Runge–Kutta explı́citos no son A–estables.
Ejemplo 6.3. Ilustremos el teorema anterior con un ejemplo. Consideramos el
denominado método de Euler modificado o de Heun dado por la tabla de Butcher

0
1 1
1/2 1/2
Si se lo aplicamos a la ecuación test y 0 (t) = λy(t), con λ ∈ C, <(λ) < 0. Entonces,
obtenemos
h h
yn+1 = yn + (f (tn , yn ) + f (tn + h, yn + hf (xn , yn ))) = yn + (λyn + λ(yn + hλyn ))
2 2
2 2 n+1
   
(hλ) (hλ)
= 1 + hλ + yn = . . . = 1 + hλ + y0 .
2 2

Por tanto,
(hλ)2


lı́m yn = 0 ⇔ 1 + hλ +
< 1.
n→∞ 2
Luego, el método de Euler modificado no es A–estable y su región de A–estabilidad
es
2

1 + hλ + (hλ) < 1.

2
En el ejemplo F.4 del Apéndice F, usando la sintaxis de Matlab, se dibuja esta
región de A–estabilidad y la del método de Runge–Kutta clásico. Del ejemplo F.4,
el lector podrá deducir por sı́ mismo cómo dibujar la de cualquier método Runge–
Kutta.

6.3.5. Algunos métodos RK


Con R = 1 obtenemos el método de Euler. Para R = 2 hay infinitos métodos
de RK de orden 2 como

0
α α α 6= 0. (6.14)
1 1
1− 2α 2α

146
Para R = 3 y orden 3 podemos plantear los métodos:

0
2 2
3 3
2 2 1 1
α 6= 0.
3 3
− 4α 4α
1 3
4 4
−α α

Para R = 4 y orden 4 daremos el más famoso en la literatura: el método de


Runge–Kutta clásico

0
1/2 1/2
1/2 0 1/2
1 0 0 1
1/6 1/3 1/3 1/6

que nos dice


yn+1 = yn + h6 (k1 + 2k2 + 2k3 + k4 )

(6.15)
y0
donde

k1 (tn , yn , h) = f (tn , yn )
 
h h
k2 (tn , yn , h) = f tn + , yn + k1
2 2
 
h h
k3 (tn , yn , h) = f tn + , yn + k2
2 2
k4 (tn , yn , h) = f (tn + h, yn + hk3 ) .

El lector interesado en métodos RK implı́citos puede consultar, por ejemplo, el


texto [9, Sección 5.11] donde entre otros encontrará métodos de 2 estados y orden
4, etc. Los métodos explı́citos suelen ser más usados porque evitan tener que
resolver ecuaciones implı́citas. Aunque los más usados son los embebidos. En esta
sección sólo hemos dado unas pinceladas de los métodos RK. Estos se pueden
extender y una de las vı́as es usar métodos de RK embebidos donde se usan
métodos de RK explı́citos de de orden p y orden p + 1 tales como Runge–Kutta-
Fehlberg (1970), Dormand–Prince (1980) o Bogacki–Shampine (1989). Además,
Dormand–Prince forma parte de una clase de métodos denominados FSAL (del
inglés, First Same As Last). Matlab utiliza algunos de estos métodos en sus
órdenes ode. El lector interesado puede consultar [9, Sección 5.10]. Como muestra,

147
el método de Dormand–Prince es:

0
1 1
5 5
3 3 9
10 40 40
4 44 −56 32
5 45 15 9
8 19372 −25360 64448 −212
9 6561 2187 6561 729
9017 −355 46732 49 −5103
1 3168 33 5247 176 18656
35 500 125 −2187 11
1 384
0 1113 192 6784 84
5179 7571 393 −92097 187 1
57600
0 16695 640 339200 2100 40
35 500 125 −2187 11
384
0 1113 192 6784 84
0
71 −71 71 −17253 22 −1
57600
0 16695 1920 339200 525 40

6.4. Métodos multipaso lineales para la resolu-


ción de PVI
Definición 6.18. Un método multipaso lineal (o método lineal de k pasos) para
resolver el PVI (6.9) es
 Pk Pk
i=0 αi yn+i = h i=0 βi f (tn+i , yn+i ), n = 0, . . . , N − k, k ≥ 1,
(6.16)
y0 , y1 , . . . , yk−1 ,

con αi , βi ∈ R, αk 6= 0 y |α0 | + |β0 | =


6 0.

Para simplificar notación, usaremos habitualmente fn+i := f (tn+i , yn+i ) ex-


presando (6.16) como
 Pk Pk
i=0 αi yn+i = h i=0 βi fn+i , n = 0, . . . , N − k, k ≥ 1,
y0 , y1 , . . . , yk−1 .

Si βk = 0 entonces el método es explı́cito, en otro caso implı́cito. Observe que


la condición |α0 | + |β0 | =
6 0 significa que ambos parámetros no se pueden anular
a la vez. Veamos algunos ejemplos.

Si k = 1 y tomando α1 = β0 = 1, α0 = −1 y β1 = 0 obtenemos

yn+1 − yn = hfn = hf (tn , yn ),

que es el archiconocido método de Euler. Note que en general, los métodos


RK no son métodos lineales.

Un método muy interesante llamado método trapezoidal se obtiene tomando

148
k = 1, α1 = 1, α0 = −1, y β1 = β0 = 1/2.

h h
yn+1 − yn = (fn+1 + fn ) = (f (tn+1 , yn+1 ) + f (tn , yn )) , (6.17)
2 2
que es un método implı́cito.

Otro método de interés es el método de Adams–Bashforth de 4 pasos.


h
yn+4 − yn+3 = (55fn+3 − 59fn+2 + 37fn+1 − 9fn ) . (6.18)
24

De la definición de método multipaso surgen varias preguntas:


1. Si k ≥ 2, ¿cómo obtenemos las condiciones iniciales y1 , . . . , yk−1 ? Pues el
PVI (6.9) sólo nos proporciona la condición inicial y0 . La respuesta es muy
sencilla: las calculamos usando un método de un paso. Automáticamente
surge una nueva cuestión: ¿con cualquier método de un paso? Esta cuestión
la responderemos posteriormente.

2. Cuando el método es implı́cito (βk 6= 0) las ecuaciones que tenemos en


(6.16) son implı́citas. ¿Podemos garantizar que la solución a la ecuación
obtenida en cada paso es única? La respuesta no es difı́cil de obtener usando
herramientas de análisis clásico (lo dejamos para los lectores más motivados)
y nos dice que hay solución única si f es lipschitziana respecto a y con
constante de Lipschitz L y
|αk |
h< . (6.19)
L|βk |
3. Los coeficientes αi y βi no se pueden tomar aleatoriamente si queremos
que el método sea convergente. Entonces, ¿cómo se obtienen los métodos
multipaso lineales? De dos formas:

• Usando integración: métodos de Adams.


• Usando derivación: métodos de diferencias regresivas.

Los conceptos de consistencia, estabilidad, convergencia y orden para los méto-


dos (6.16) son análogos a los dados en la Sección 6.3 para los métodos de un paso.
Consideraremos el método perturbado:
( P P 
k k
i=0 α i zn+i = h i=0 βi f (tn+i , z n+i ) + ε n , n = 0, . . . , N − k, k ≥ 1,
z0 , . . . , zk−1 .
(6.20)
Definición 6.19 (Convergencia). Si lı́mh→0 yi = y0 , i = 0, . . . , k − 1, un método
numérico (6.16) se dice convergente si

lı́m e(h) = 0,
h→0

donde e(h) está dado en la Definición 6.8.

149
Observe que está definición coincide con la dada en la Definición 6.8, pero exi-
ge que las condiciones iniciales calculadas con el método de 1 paso sean calculadas
adecuadamente.
Definición 6.20 (Estabilidad). Un método numérico (6.16) se dice estable (teóri-
camente estable o 0–estable) para el PVI (6.9) si existen dos constantes M1 y M2
(independientes de h) tales que

máx ||yn − zn || ≤ M1 máx ||yi − zi || + M2 máx ||εn ||,


n=0,...,N i=0,...,k−1 n=0,...,N −k

donde zn es la solución del método perturbado (6.20).


Definición 6.21 (Consistencia). Un método numérico (6.16) se dice consistente
con el PVI (6.9) si se cumple
P
k α y(t ) X k
i n+i
lı́m máx i=0 − βi f (tn+i , y(tn+i )) = 0,

h→0 n=0,...,N −k h i=0

para toda solución de la ecuación diferencial y0 (t) = f (t, yT (t)).


Como vimos en el capı́tulo anterior estos conceptos están fuertemente ligados.
Teorema 6.6 (Teorema de Lax generalizado). Un método numérico (6.16) es
consistente y estable si y sólo si es convergente.
Por tanto, si queremos probar que un método es convergente bastará pro-
bar que es consistente y estable. Sin embargo, las definiciones anteriores no son
sencillas de verificar. Para ello usaremos caracterizaciones de consistencia y es-
tabilidad que nos permitan hacer su comprobación de forma simple. En primer
lugar introducimos los polinomios α(r) y β(r) ligados al método multipaso lineal
(6.16),
Xk k
X
α(r) := αi ri , β(r) := βi r i .
i=0 i=0

Entonces, la caracterización de estabilidad viene dada por:


Proposición 6.5. Un método numérico (6.16) es estable si y sólo si el polino-
mio α(r) cumple la condición raı́z, es decir, todos los ceros del polinomio α(r)
están dentro del disco unidad cerrado y aquellos ceros de multiplicidad algebraica
superior a 1 están en el disco unidad abierto.
Observe que la proposición anterior nos indica que en un método estable (6.16)
todos los ceros de α(r) que estén en la circunferencia unidad (es decir, tengan
módulo 1) tienen que ser simples.
Para caracterizar de forma sencilla la consistencia debemos introducir el con-
cepto de orden.
Definición 6.22 (Orden). Un método numérico (6.16) se dice de orden p ∈ N si
P
k α y(t ) X k
i=0 i n+i
máx − βi f (tn+i , y(tn+i )) = O(hp ),

n=0,...,N −k h i=0

150
para toda solución de la ecuación diferencial y0 (t) = f (t, yT (t)).

Proposición 6.6. Si un método numérico (6.16) es estable de orden p y


máxi=0,...,k−1 ||yi − y(ti )|| = O(hp ), entonces e(h) = O(hp ).

Nota 6.8. Observe que este resultado responde la pregunta planteada al comienzo
la Sección 6.4 sobre cómo hemos de calcular las condiciones de inicialización del
método multipaso lineal y ha de ser con un método de 1 paso con orden al menos
el mismo que tenga el método multipaso lineal.

Usando adecuados desarrollos de Taylor en la Definición 6.22 e introduciendo


las denominadas constantes de error que vienen determinadas en función de
los coeficientes del método como:
k
X
C−1 = αi = α(1) (6.21a)
i=0
Xk k
X
C0 = iαi − βi = α0 (1) − β(1) (6.21b)
i=1 i=0
k k
1 X
p+1 1 X p
Cp = i αi − i βi (6.21c)
(p + 1)! i=1
p! i=1

se obtiene el siguiente resultado.

Proposición 6.7. Se tiene:

Un método numérico (6.16) es consistente si y sólo si C−1 = C0 = 0.

Un método numérico (6.16) tiene orden p si y sólo si C−1 = C0 = . . . =


Cp−1 = 0 y Cp 6= 0.

Por tanto, usando el Teorema de Lax generalizado 6.6 y las Proposiciones 6.5
y 6.7 se ha probado el siguiente resultado.

Corolario 6.2. Un método numérico (6.16) es convergente si y sólo si α(r)


verifica la condición raı́z, α(1) = 0 y α0 (1) = β(1) 6= 0.

Observe que α0 (1) 6= 0 pues si no el método no serı́a estable. Otro concepto


importante para la calidad de los métodos multipaso es el de la estabilidad fuerte.

Definición 6.23. Un método numérico (6.16) es fuertemente estable si es estable


y el único cero del polinomio α(r) en la circunferencia unidad es el 1.

6.4.1. Generación de los métodos multipaso: métodos de


Adams y métodos de diferencias regresivas
En el apéndice de este capı́tulo veremos como se obtiene con detalle estos
métodos. Aquı́ sólo presentaremos los métodos y sus propiedades básicas.

151
Métodos obtenidos por integración: métodos de Adams
Los métodos de Adams–Bashforth, que son métodos explı́citos:
Z 1 
yn+k − yn+k−1 = h k−1
 i −s
P
i=0 γi ∇ fn+k−1 con γi = (−1) i
ds. (6.22)
y0 , . . . , yk−1 . 0 i

Los métodos de Adams–Moulton, que son métodos implı́citos:


Z 0 
yn+k − yn+k−1 = h ki=0 ηi ∇i fn+k

−s
P
i
con ηi = (−1) ds. (6.23)
y0 , . . . , yk−1 . −1 i

Se recuerda que el operador diferencia regresiva ∇ actúa de la siguiente forma

∇0 fn = fn , ∇fn = fn − fn−1 , ∇i fn = ∇i−1 (∇fn ), i ≥ 2.

Teorema 6.7. Los métodos de Adams–Bashforth (6.22) y de Adams–Moulton


(6.23) son convergentes y fuertemente estables.

Métodos obtenidos por derivación: métodos de diferencias regresivas


Vienen determinados por:
∇i yn+k
 Pk
= hfn+k ,
i=1 i (6.24)
y0 , . . . , yk−1 .

Teorema 6.8 (Colin W. Cryer). Los métodos de diferencias regresivas de k pasos


son convergentes si y sólo si k ∈ {1, 2, . . . , 6}.

6.4.2. Orden y A–estabilidad de los métodos multipaso


lineales
Acerca del orden hay una serie de resultados debidos en general al matemático
sueco Germund Dahlquist (1925-2005) y que enunciamos sin probar (ver [2] y [9]
para comentarios adicionales).

Teorema 6.9. Se tiene,

Un método multipaso lineal (6.16) convergente a lo sumo tiene orden k + 1


si k es impar o k + 2 si k es par.

Los métodos que alcanzan orden k + 2 son implı́citos y se denominan ópti-


mos.

Un método multipaso lineal (6.16) convergente y fuertemente estable tiene


a lo sumo orden k + 1.

Los métodos óptimos no son fuertemente estables.

152
El concepto de A–estabilidad fue dado en la Definición 6.13. Si aplicamos
(6.16) a la ecuación test y 0 (t) = λy(t) obtenemos
k
X k
X k
X
αi yn+i = λh βi yn+i ⇒ (αi − λhβi ) yn+i .
i=0 i=0 i=0

Pk
Si consideramos su polinomio caracterı́stico p(r) := i=0 (αi − λhβi ) ri , entonces
tenemos que
Lema 6.2. Un método numérico
Pk multipaso lineal (6.16) se dice A–estable si y
i
sólo si el polinomio p(r) := i=0 (αi − λhβi ) r tiene todas sus raı́ces en el disco
unidad abierto.
Existen diferentes resultados sobre la A–estabilidad que daremos sin demos-
tración.
Teorema 6.10 (G. Dahlquist). Se tiene,
Un método numérico multipaso lineal (6.16) explı́cito no puede ser A–
estable.
El orden de un método implı́cito A–estable no puede ser superior a 2.
El método implı́cito de segundo orden A–estable con constante de error más
pequeña es el método trapezoidal (o Adams–Moulton de 1 paso) (6.17).
Teorema 6.11 (Colin W. Cryer). Los métodos de diferencias regresivas (6.24)
correspondientes a k = 1 y k = 2 son A–estables y los correspondientes a k =
3, 4, 5, 6 tienen región de A–estabilidad no acotada conteniendo al semieje real
negativo, por tanto, su radio de A–estabilidad es −∞.
Una de las cosas que no podemos hacer de forma sencilla sin usar el software
es dibujar la región de A–estabilidad. Para ello lo que vamos a hacer es dibujar
su frontera. Tomamos r = eiθ con θ ∈ [0, 2π] (|r| = 1) y hacemos

α(eiθ )
p(eiθ ) = 0 ⇒ α(eiθ ) − λhβ(eiθ ) = 0 ⇒ λh = .
β(eiθ )

Por tanto, basta quedarse con la parte real e imaginaria de α(e )
β(eiθ )
, dibujarlas con
Matlab (ver apéndice) y ya tenemos la frontera de la región de A–estabilidad.
En muy útil conocer el radio de A–estabilidad de los métodos de Adams, el de
los métodos de diferencias regresivas ya lo conocemos por el Teorema 6.11. Para
establecerlo se usa el criterio de Routhz–Hurwitz. Para ello es necesario usar la
transformación conforme del semiplano de la izquierda en el disco unidad
1+z
r= , <(z) ≤ 0, |r| ≤ 1,
1−z
y considerar el polinomio
 
k 1+z
q(z) = (1 − z) p = a0 z k + a1 z k−1 + . . . + ak .
1−z

153
Importante: es necesario asumir a0 > 0. Entonces, el criterio de Routh–Hurwitz
nos indica lo siguiente (ver [9, p. 13-14])

Lema 6.3. Un método numérico multipaso lineal (6.16) se dice A–estable ⇔ el


polinomio p(r) tiene todas sus raı́ces en el disco unidad abierto ⇔ el polinomio
q(z) tiene todas sus raı́ces en el semiplano de la izquierda ⇔ todos los menores
principales de la matriz
 
a1 a3 a5 . . . a2k−1
 a0 a2 a4 . . . a2k−2 
 
 0 a1 a3 . . . a2k−3 
 
 .. .. .. . . .. 
 . . . . . 
0 0 0 ... ak k×k

con aj = 0 si j > k, son positivos.

El lema anterior se convierte en las siguientes condiciones en función de k.


Particularizamos para los k más usuales.

k = 2. Entonces, ai > 0, i = 0, 1, 2.

k = 3. Entonces, ai > 0, i = 0, . . . , 3 y a1 a2 − a0 a3 > 0.

k = 4. Entonces, ai > 0, i = 0, . . . , 4 y a1 a2 a3 − a0 a23 − a21 a4 > 0.

Recordad que el método de Adams–Bashforth de 1 paso es el método de Euler y


sabemos que su radio de A–estabilidad es -2; y el método de Adams-Moulton de
1 paso (o método trapezoidal) (6.17) es A–estable por el Teorema 6.10.
Los radios de A–estabilidad de los métodos de Adams–Bashforth hasta k = 4
son:
k 1 2 3 4
Radio de A–estabilidad −2 −1 −6/11 −3/10
Los radios de A–estabilidad de los métodos de Adams–Moulton hasta k = 4 son:
k 1 2 3 4
Radio de A–estabilidad −∞ −6 −3 −90/49

154
Bibliografı́a

[1] Andújar Rodrı́guez, A. S. y Moreno Balcázar, J. J. (2010) Una introducción


a las ecuaciones diferenciales y a los métodos numéricos con Matlab para
Ingenierı́a. Almerı́a, España: Sistema de Oficinas de Almerı́a, S.A.

[2] Ascher, U. M. y Petzold, L. R. (1998) Computer Methods for Ordinary Dif-


ferential Equations and Differential–Algebraic Equations. Philadelphia, Es-
tados Unidos de América: SIAM.

[3] Butcher, J. C. (2016) Numerical Methods for Ordinary Differential Equa-


tions. Chichester, Reino Unido: John Wiley & Sons, Ltd.

[4] Cordero Barbero, A., Hueso Pagoaga, J. L., Martı́nez Molada, E. y Torregro-
sa Sánchez J. R. (2006) Problemas resueltos de Métodos Numéricos. Madrid,
España: Thompson.

[5] Daley, D.J. (2001) Epidemic modelling : an introduction. Cambridge, Reino


Unido: Cambridge University Press.

[6] Edwards, C. H. y Penney, D. E. (2008) Ecuaciones diferenciales elementales


y problemas con condiciones en la frontera. México D. F., México: Pearson
Educación de México, S.A.

[7] Gautschi, W. (1997) Numerical Analysis: An Introduction. Boston, Estados


Unidos de América: Birkhäuser.

[8] Kincaid, D. y Cheney W. (1994) Análisis Numérico. Wilmington, Estados


Unidos de América: Addison-Wesley Iberoamericana.

[9] Lambert, J. D. (1991) Numerical Methods for Ordinary Differential Systems.


Chichester, Reino Unido: John Wiley & Sons, Ltd.

[10] Munz, P., Hudea, I., Imad, J. y Smith, R. J. (2009) When zombies attack!:
Mathematical Modelling of an Outbreak of Zombie Infection. Infectious Di-
sease Modelling Research Progress, 4, 133–150.

[11] Quarteroni, A., Saleri, F. y Gervasio, P. (2014) Scientific computing with


Matlab and Octave. Berlı́n, Estados Unidos de América: Springer.

[12] Zill, D. G. (2007) Ecuaciones diferenciales con aplicaciones de modelado.


México D. F., México: International Thomson Editores.

155
156
Apéndice A

A.1. Derivación
Ejemplo A.1.
1 6
f (x) = x3 − − e 3
+ ln 3 −
x3 x
f (x) = x − x − e + ln 3 − 6x−1
3 −3 3

f 0 (x) = 3x2 + 3x−4 − 0 + 0 − 6x−2


3 6
f 0 (x) = 3x2 + 4
− 2
x x
Ejemplo A.2.
x3 + 2x5
f (x) =
x2 − 8
(3x2 + 10x4 )(x2 − 8) − 2x(x3 + 2x5 )
f 0 (x) =
(x2 − 8)2
0 3x4 − 24x2 + 10x6 − 80x4 − 2x4 − 4x6
f (x) =
(x2 − 8)2
0 6x6 − 79x4 − 24x2
f (x) =
(x2 − 8)2
Ejemplo A.3. √
2
f (x) = e x + 1

2 d√ 2
f (x) = e x + 1
0
x +1
dx

2 1(2x)
f (x) = e x + 1 √
0
2 x2 + 1

2 x
f 0 (x) = e x + 1 √
x2 + 1

2
0 x.e x +1
f (x) = √
x2 + 1
Ejemplo A.4.
f (x) = ln(sen x cos x)

157
f (x) = ln sen x + ln cos x
(sen x)0 (cos x)0
f (x) = +
sen x cos x
cos x (− sen x)
f (x) = +
sen x cos x
f (x) = cot x − tan x

Ejemplo A.5.
f (x) = cos2 x + cos x2
f (x) = (cos x)2 + cos(x2 )
 
0 d 2 d 2
f (x) = 2(cos x) (cos x) + − sen(x ) x
dx dx
f 0 (x) = 2(cos x)(− sen x) + [− sen(x2 )2x]
f 0 (x) = −2 sen x cos x − 2x sen(x2 )
f 0 (x) = −2(sen x cos x + x sen(x2 )

Ejemplo A.6.

Dado y = ln x, hallar su tercera derivada.

y = ln x
1
y0 =
x
 
00 d 0 d 1 1
y = (y ) = = − 2.
dx dx x x
 
d 00 d −1 2
y 000 = (y ) = 2
= 3.
dx dx x x

158
A.2. Valor Extremo
Ejemplo A.7. Siendo f (x) = (x + 1)2 − 4x + 1 en el intervalo cerrado [0, 3],
se obtiene gráficamente que el mı́nimo absoluto en x = 1, f (1) = 1, y el máximo
absoluto en x = 3, f (3) = 5.

Figura A.1: Valores máximos y mı́nimos de una función continua en un intervalo


cerrado [0, 3]

Fuente: Elaboración Propia

Ejemplo A.8. Análisis gráfico de la función f (x) = x3 − 6x2 + 9x − 3

Figura A.2: Extremos relativos en una función

Fuente: Elaboración Propia

Un máximo relativo (local) ocurre en una “cresta” de la gráfica y un mı́ni-


mo relativo (local) en un “valle” de la gráfica. En este caso para la función
f (x) = x3 − 6x2 + 9x − 3, esta cresta está en el punto (1, 1) siendo este un

159
máximo relativo, y este valle está en (3, −3) siendo este un mı́nimo relativo.
Además si determinamos la derivada de la f (x) en los extremos relativos, de-
mostraremos también que los puntos x = 1 y x = 3 son puntos crı́ticos, pues
f 0 (1) = 0 y f 0 (3) = 0.

f 0 (x) = 3x2 − 12x + 9.


Entonces:
f 0 (1) = 3(1)2 − 12(1) + 9 = 0.
f 0 (3) = 3(3)2 − 12(3) + 9 = 0.

A.3. Teorema Rolle


Ejemplo A.9. Demostrar que f 0 (x) = 0 en algún punto entre las dos raı́ces de
la función
f (x) = x2 − 4x + 3
Solución: f (x) es un polinomio de segundo grado y derivable en R.
Para determinar las raı́ces:

f (x) = x2 − 4x + 3 = 0 ⇒ (x − 3)(x − 1) = 0 ⇒ x = 3 ∨ x = 1

Por lo tanto, y de acuerdo al teorema de Rolle, si f (1) = f (3) = 0, f es continua


en [1, 3] y derivable en (1, 3), entonces ∃c ∈ (1, 3), tal que f 0 (c) = 0. Ahora
podemos determinar este punto c derivando f (x) e igualando a 0:
f 0 (x) = 2x − 4 ⇒ ∃c ∈ (1, 3), tal que f 0 (c) = 2c − 4 = 0, por lo tanto, c = 2.

Figura A.3: Ejemplo de Aplicación del Teorena de Rolle

Fuente: Elaboración Propia

Entonces, el teorema de Rolle también aplica de manera particular cuando

160
f (a) = f (b) = 0 [10], y en este punto c donde f 0 (c) = 0, pasa una tangente
horizontal.

A.4. Teorema Valor Medio


Ejemplo A.10. La función f (x) = x3 − 3x2 − 3x + 5 es continua en [−1, 2]
y derivable en (−1, 2), por lo que, según el teorema del valor medio, existe un
número c ∈ (−1, 2) tal que:

1.
f (2) − f (−1)
f 0 (c) =
2 − (−1)
Es decir,

2. f (2) = 23 − 3(2)2 − 3(2) + 5 = −5

3. f (−1) = (−1)3 − 3(−1)2 − 3(−1) + 5 = 4

4. f 0 (x) = 3x2 − 6x − 3 y por tanto f 0 (c) = 3c2 − 6c − 3

Reemplazando (2), (3) y (4) en (1)


−5 − 4
3c2 − 6c − 3 = = −3 ⇒ 3c2 − 6c = 0 ⇒ 3c(c − 2) = 0 ⇒ c = 0 ∨ c = 2
2 − (−1)
Como c ∈ (−1, 2), entonces c = 0 es el valor que cumple el teorema, y como
f (0) = 03 − 3(0)2 − 3(0) + 5 = 5, se puede asegurar que por el punto (0, 5) pasa
una tangente paralela a la secante que pasa por los puntos (−1, 4) y (2, −5).

Figura A.4: Ejemplo de aplicación del Teorema del Valor medio.

Fuente: Elaboración Propia

161
A.5. Integración

Tabla A.1: Fórmulas de integración inmediatas.


Nº Z Fórmulas de Integración
1 dx = x + c, c = Constante de Integración
xn+1
Z
2 xn dx = +c
Z n Z+ 1
3 axdx = a xdx, a = constante
Z Z Z
4 (f (x) + g(x))dx = f (x)dx + g(x)dx
au
Z
5 au du = + c, a > 0 ,a 6= 1
Z ln a
du
6 = ln |u| + c,
Z u
7 eu du = eu + c
Z
8 senudu = − cos u + c
Z
9 cos udu = senu + c
Z
10 tan udu = ln | sec u| + c
Z
11 cot udu = ln |senu| + c
Z
12 sec udu = ln | sec u + tan u| + c
Z
13 csc udu = − ln | csc u − cot u| + c
Z
14 sec2 udu = tan u + c
Z
15 csc2 udu = − cot u + c
Z
16 sec u. tan udu = sec u + c
Z
17 csc u. cot udu = − csc u + c
Z
du u
18 √ = arcsin + c
Z 2
a −u 2 a
du 1 u
19 2 2
= arctan + c
Z a + u a a
du √ 2 1 u
20 u − a2 = arcsin + c
Z u a a
du 1 u−a
21 2 2
= ln | |+c
Z u −a 2a u+a
du 1 a+u
22 2 2
= ln | |+c
a −u 2a a−u

162
Z
du √
23 √ = ln(u + u 2 + a2 ) + c
u 2 + a2
Z
du √
24 √ = ln(u + u2 − a2 ) + c
u 2 − a2
Z √ 1 √ 1 u
25 a2 − u2 du = u a2 − u2 + a2 arcsin + c
2 2 a
Z √ 1 √ 1 2

26 u2 + a2 du = u u2 + a2 + a ln(u + u2 + a2 ) + c
2 2
√ 1 √ 2 √
Z
1
27 u − a du = u u + a − a2 ln |u + u2 − a2 | + c
2 2 2
2 2
Fuente: Elaboración propia.

Ejemplo A.11. Z
35x dx

Completando el diferencial con 5, por lo cual, multiplicamos por 5 el integral y


por 15 el integral Z
1
35x 5dx
5
Aplicando la Fórmula 5 de la Tabla A.1

35x
5. ln(3)

Ejemplo A.12. Z
x
cos2 dx
2
Reemplazamos la identidad
x 1 1
cos2 = + cos x
2 2 2
Aplicando la Fórmula 9 de la Tabla A.1
Z
1 + cos x
dx
2
Z Z
1 1
dx + cos xdx
2 2
1 1
x + senx + c
2 2
Ejemplo A.13. Z
sec2 (3x)dx

du = 3dx
u = 3x

163
Tenemos que completar el diferencial con 3; para lo cual multiplicamos por 3 el
integrando y por 31 a la integral.

Aplicando fórmula 14 de la Tabla A.1


Z
1
sec2 (3x)(3)dx
3
1
tan(3x) + c
3
Ejemplo A.14. Z
dx
16 + 4x2
a2 = 16; u2 = 4x2
a = 4; u = 2x
Tenemos que completar el diferencial con 2; para lo cual multiplicamos el inte-
grando por 2 y el integral por 12

Z
1 2dx
2 (4)2 + (2x)2
Aplicando fórmula 20 de la Tabla A.1
 
1 1 2x
arctan +c
2 4 4
1 x
arctan +c
8 2

A.5.1. Integración Por Partes


Ejemplo A.15. Z
x ln xdx

Hacemos:
u = ln x, dv = xdx (es la parte que se puede integrar)
Luego:
du = x1 dx,
R R
dv = xdx
De donde:
x2
du = x1 dx, v = 2

Aplicando la formula 1.3 de integración por partes tenemos:

x2 ln x
Z Z 2
x
x ln xdx = − dx
2 2x

164
x2 ln x
Z
x
= − dx
2 2
x2 ln x x2
= − +C
2 4

Ejemplo A.16. Z 3
xex dx
1
Hacemos
u = x, dv = ex
Por lo que
du = dx y v = ex
Aplicando la fórmula de integración por partes tenemos:
Z 3 Z 3
x x 3
xe dx = [xe ]1 − ex dx
1 1

= [xex − ex ]31 = [ex (x − 1)]31 = e3 (3 − 1) − e(1 − 1) = 2e3

A.5.2. Teoremas Fundamentales del Cálculo


Primer Teorema Fundamental del Cálculo

Ejemplo A.17. Como ejemplo de aplicación de este teorema tenemos:


Z x
d 1 1
2
dt =
dx 0 1 + t 1 + x2

Segundo Teorema Fundamental del Cálculo

Ejemplo A.18.
5 5
x3 53 23
Z 
2 125 8 117
x dx = +C = − = − =
2 3 2 3 3 3 3 3

A.6. Ecuaciones Diferenciales


Ejemplo A.19. Sea la ecuación diferencial:

(y 000 )2 + 2y 00 + (y 0 )3 = 27x6 + 12x + 42

Es de tercer orden, por ser y 000 la derivada de mayor orden en la ecuación.


Es de segundo grado, por estar elevada al exponente 2, la derivada de mayor
orden.

165
A.6.1. Solución de una Ecuación Diferencial
Ejemplo A.20. Sea la ecuación diferencial

y0 + y = 0

Su solución general es:


y = Ce−x
La cual verificamos si reemplazamos ésta solución y su derivada y 0 = −Ce−x , en
la ecuación diferencial:
y0 + y = 0
−Ce−x + Ce−x = 0
0=0

A.6.2. Ecuaciones Diferenciales de Primer Orden


Ejemplo A.21. Sea la ecuación de variables separables:
dy
= y(x + 5)
dx
dy
Separando tenemos y
= (x + 5)dx Integramos ambos lados de la igualdad:
Z Z
dy
= (x + 5)dx
y

x2
ln y = + 5x + C
2
2 +5x+C 2 +5x
y = ex = eC .ex
2 +5x
y = C.ex

A.6.3. Ecuaciones Diferenciales Lineales Homogéneas con


Coeficientes Constantes de Enésimo Orden.
Ejemplo A.22. y 00 + 5y 0 + 6 = 0, es una ecuación lineal homogénea de 2do orden
con coeficientes constantes.

Su ecuación algebraica caracterı́stica es: r2 + 5r + 6 = 0, que tiene como raı́ces a


r1 = 2r2 = 3 , que estarı́an en el caso de raı́ces reales distintas y su solución es:
Y 0 = C1 e2x + C2 e3x

A.7. Matrices
Durante esta sección vamos a poner distintos tipos de matrices en función de
su forma y sus valores. Ver más información y más ejemplos en [2], [4], [7] y [13].

166
A.7.1. Tipo de Matrices
Matriz Rectangular Es aquella que tiene un número distinto de filas y
columnas. Su orden es (m, n).
 
a11 a12 . . . a1j . . . a1n
 a21 a22 . . . a2j . . . a2n 
 . .. .. .. .. .. 
 .
 . . . . . . 

A=
 ai1 ai2 . . . aij . . . ain 

 . .. .. .. .. .. 
 .. . . . . . 
am1 am2 . . . amj . . . amn

Matriz Fila También llamado vector fila, es aquella que solo posee una
fila.

A = (a11 a11 ... a1n )

Matriz Columna.- También llamado vector columna, es aquella que solo


posee una columna.
 
a11
 a21 
 . 
A =  .. 
 
 . 
 .. 
am1

Matriz Nula o Matriz Cero.- Es aquella que posee todos sus términos
nulos y puede ser de cualquier orden.
 
0 0 ... 0
0 0 ... 0
A =  .. .. .. .. 

. . . .

.
0 0 .. 0

Matriz Cuadrada.- Es aquella que tiene un mismo número de filas y


columnas.
 
a11 a12 . . . a1n
 a21 a22 . . . a2n 
A =  ..
 
.. .. .. 
 . . . . 
an1 an2 . . . ann

Matriz Diagonal.- Es aquella matriz cuadrada que posee sus términos


nulos a excepción de su diagonal principal.

167
 
a 0 0
A = 0 b 0
0 0 c

Matriz Escalar.- Es aquella matriz diagonal cuyos elementos de su dia-


gonal principal son iguales.

5 0 0
A = 0 5 0
0 0 5

Matriz Transpuesta.- Dada una matriz A, se le llama matriz transpuesta


(At ) de A, a la matriz que se obtiene cambiando ordenadamente sus filas
por sus columnas.

Fuente: Elaboración propia

Ejemplo A.23. Hallar la matriz transpuesta de la matriz A:



4 8 7
A = 2 5 9
1 5 6

La matriz Transpuesta de A es:


 
4 2 1
AT = 8 5 5
7 9 6
Matriz Identidad.- Es aquella matriz diagonal en la que sus elementos de
su diagonal principal son iguales a la unidad.
 
1 0 ...
0
0 1 ...
0
A =  ..
 
.. .. 
. . .
0 0 ... 1

168
Matriz Opuesta o Inverso Aditivo.- Se dice que una matriz es la opuesta
de una matriz dada (A), cuando posee todos los términos iguales y contra-
rios, se denota por (−A).
Ejemplo A.24. Hallar la matriz opuesta de la siguiente matriz A:
 
5 −2 3
A =  6 −1 −4
−8 9 5

La matriz Opuesta de la matriz A será:


 
−5 2 −3
−A = −6 1 4
8 −9 −5
Matriz Triangular Superior.- Es aquella matriz cuadrada cuyos térmi-
nos situados por debajo de la diagonal principal son nulos.
 
a11 a12 a13 a14
 0 b22 b23 b24 
A=
0

0 c33 c34 
0 0 0 d44

Matriz Triangular Inferior.- Es aquella matriz cuadrada cuyos situados


por encima de la diagonal principal son nulos.
 
a1 0 0 0
 b21 b22 0 0
A=
 c31 c32 c33 0 

d41 d42 d43 d44

Matriz Simétrica.- Una matriz simétrica es aquella en la que su trans-


puesta es igual a la misma matriz A = AT , cumpliendo con las siguientes
caracterı́sticas:
• La matriz debe ser cuadrada
• aij = aji ∀i, j
Si A ∈ Mmxn y A es simétrica, entonces A = AT ∈ Mmxn , y por tanto
m = n; ya que dos matrices que son iguales deben tener el mismo tamaño,
de la misma forma la diagonal principal permanece fija después de la trans-
posición.
Ejemplo A.25. Para comprobar si una matriz es simétrica, debemos sacar
su transpuesta, en este caso tenemos la matriz A, aplicamos la transpuesta
invirtiendo las filas de la matriz mencionada por columnas. Si al obtener su
transpuesta nos resulta la misma matriz, es decir sus valores no cambian,
podemos concluir que la matriz es simétrica.
Por tanto A es simétrica.

169
A.7.2. Adición y sustracción de matrices.
   
1 3 5 −2
Ejemplo A.26. +
0 2 −1 8
Se Suman por posiciones como se lo detallo con anterioridad
   
1+5 3−2 6 1
= = MatrizResultante.
0−1 2+8 −1 10
   
1 3 3 2 5
Ejemplo A.27. Sean A = 4 2 1 y B = 4 1
2 1 5 3 4
La suma y resta entre A y B no está definida por que la matriz A es de
orden 3 × 3 y la matriz B es de orden 3 × 2.

A.7.3. Multiplicación de Matrices


Ejemplo A.28.
   
1 3   −7 2 14
−1 2 5
AB = 2 −1 = 0 4 7=C
−2 0 3
0 4 −8 0 12

Dos matrices se pueden multiplicar sólo cuando el número de columnas de la


primera matriz sea igual al número de filas de la segunda. En ese caso se dice
que las matrices son enlazadas.[13] [2]

Ejemplo A.29. Hallar el producto de dos matrices.


Encuentre el producto AB usando:
 
1 2  
4 2
A = 1 3  y B =
3 5
1 4
Solución:  
1 2  
4 2
AB = 1 3
 
3 5
1 4
1er paso: Multiplicar cada uno de los reglones de A por cada una de las
columnas de B.
 
1(4) + 2(3) 1(2) + 2(5)
AB = 1(4) + 3(3)
 1(2) + 3(5)
1(4) + 4(3) 1(2) + 4(5)
2do paso: Sumamos el resultado de las multiplicaciones.
 
4+6 2 + 10
AB = 4 + 9
 2 + 15
4 + 12 2 + 20

170
Como Matriz resultante tenemos:
 
10 12
AB = 13 17
16 22

A.7.4. Determinantes
 
a11 a12 a13
Ejemplo A.30. Sı́ A = a21 a22 a23  para calcular det(A) escribimos los
a31 a32 a33
seis términos (como A es 3 × 3, S = {1, 2, 3} y por tanto hay seis permutaciones
en S : 123, 231, 312, 132, 213 y 321) ası́:

a1 a2 a3 a1 a2 a3 a1 a2 a3
a1 a2 a3 a1 a2 a3 a1 a2 a3
y llenamos los subindices de acuerdo a las permutaciones de S y los signos
según sean par (+) o impar (−).

a11 a22 a33 + a12 a23 a31 + a13 a21 a32


det(A) =
−a11 a23 a32 − a12 a21 a33 − a13 a22 a31
 
3 5 2
Ejemplo A.31. Sea A =  4 2 3 Calcule |A| expandiendo por cofactores
−1 2 4

3 5 2
2 3 4 3 4 2
|A| = 4 2 3 = 3

− 5 −1 4 + 2 −1 2

−1 2 4 2 4

= 3[(2)(4) − (2)(3)] − 5[(4)(4) − (−1)(3)] + 2[(4)(2) − (−1)(2)]


= 3(2) − 5(19) + 2(10) = 6 − 95 + 20 = −69

A.7.5. Inversa de una matriz


Ejemplo A.32.
Sean:

−1 32
   
2 3
A= yB=
2 2 1 −1
Y dado que

−1 32
      
2 3 2(−1) + 3(1) 2(3/2) + 3(−1) 1 0
AB = = =
2 2 1 −1 2(−1) + 2(1) 2(3/2) + 2(−1) 0 1

Y que

−1 32 −1(2) + ( 32 )(2) (−1)(3) + ( 32 )(2)


      
2 3 1 0
BA = = =
1 −1 2 2 1(2) + (−1)(2) 1(3) + (−1)(2) 0 1

171
Es decir, AB = BA = In
−1 32
   
2 3 −1
Se concluye que la inversa de es A = además de que A
2 2 1 −1
es no singular.

Ejemplo A.33. Determine cuál de las siguientes matrices es invertible:


   
1 0 1 −1 0 2
A = −1 2 1 , B =  0 1 2
0 1 1 1 1 1

Solución:

1 0 1
2 1 −1 1 −1 2
|A| = −1 2 1 = 1 − 0
0 1 + 1 0 1

0 1 1 1 1

= 2(1) − 1(1) + (−1)(1) − 0(2) = 0



−1 0 2
1 2 0 2 0 1
|B| = 0 1 2 = −1 − 0
1 1 + 2 1 1

1 1 1 1 1

= −[(1)(1) − (1)(2)] + 2[(0)(1) − (1)(1)] = −1


Por lo anterior, la matriz A es no invertible o singular, y la matriz B es invertible
o no singular, es decir, existe B −1 .
 
−1 0 2
Ejemplo A.34. Determine la matriz adjunta de A =  0 1 2
1 1 1
Solución:

Obteniendo los cofactores para la matriz A, tenemos:



1 2
A11 = (−1)1+1 = (1)(1) − (1)(2) = −1
1 1

1+2 0 2

A12 = (−1) = −[(0)(1) − (1)(2)] = 2
1 1
0 1
A13 = (−1)1+3 = (0)(1) − (1)(1) = −1
1 1

2+1 0 2

A21 = (−1) = −[(0)(1) − (1)(2)] = 2
1 1
−1 2
A22 = (−1)2+2 = (−1)(1) − (1)(2) = −3
1 1

2+3 −1 0

A23 = (−1) = −[(−1)(1) − (1)(0)] = 1
1 1
0 2
A31 = (−1)3+1 = (0)(2) − (1)(2) = −2
1 2

172

3+2
−1 2
A32 = (−1) = −[(−1)(2) − (0)(2)] = 2
0 2

3+3 −1 0

A33 = (−1) = (−1)(1) − (0)(0) = −1
0 1
Por lo que la matriz de cofactores de A está dada por:
   
A11 A12 A13 −1 2 −1
A21 A22 A23  =  2 −3 1 
A31 A32 A33 −2 2 −1

Y por definición, la adjunta de A es la transpuesta de su matriz de cofactores,


ası́:  T  
−1 2 −1 −1 2 −2
adj(A) =  2 −3 1  =  2 −3 2 
−2 2 −1 −1 1 −1
Ejemplo A.35. Determine la inversa de la matriz dada utilizando su adjunta.
 
−1 0 2
A=  0 1 2
1 1 1

Solución:
Vamos utilizar el Teorema 1.12 que indica que:
1
A−1 = adj(A)
det(A)

−1 0 2

det(A) = |A| = 0 1 2 = −1 Ver ejemplo A.33
1 1 1
 
−1 2 −2
adj(A) =  2 −3 2  Ver ejemplo A.34
−1 1 −1
Por lo tanto,
   
−1 2 −2 1 −2 2
1 1 
A−1 = adj(A) = 2 −3 2  = −2 3 −2
det(A) −1
−1 1 −1 1 −1 1

Se puede verificar el resultado comprobando que AA−1 = A−1 A = I3 .

A.7.6. Valores Propios (Autovalores) y Vectores Propios


(AutoVectores)
Ejemplo A.36. Dada la matriz
 
2 3
A=
3 −6

173
Determinar sus valores y vectores propios.

Solución:
Se forma el polinomio caracterı́stico:
det(A − λI) = 0, siendo I la matriz identidad de orden 2.
   
2 3 1 0

3 −6 −λ =0
0 1
 
2−λ 3
=0
3 −6 − λ

(2 − λ)(−6 − λ) − 9 = 0
−12 − 2λ + 6λ + λ2 − 9 = 0
λ2 + 4λ − 21 = 0
(λ + 7)(λ − 3) = 0
Es un polinomio de grado dos que tiene dos soluciones, dichas soluciones
representan a los valores propios.

(λ + 7)(λ − 3) = 0

λ1 = −7
λ2 = 3
Tenemos dos valores propios λ1 = 3 y λ2 = −7.

Para encontrar los vectores propios asociados a cada valor propio tenemos que
buscar los vectores tales que (A − λI)x = 0.
Es decir, buscamos x ∈ N (A−λI) para cada uno de los valores propios que hemos
encontrado.

Caso λ = 3

      
2−λ 3 V1 0 V1
(A − λI)x = = , siendo x =
3 −6 − λ V2 0 V2

Sustituimos el valor de λ = 3
    
2−3 3 V1 0
=
3 −6 − 3 V2 0
    
−1 3 V1 0
=
3 −9 V2 0
Una vez reemplazado el valor obtenemos las ecuaciones multiplicando las ma-

174
trices.
 
−V1 + 3V2 = 0
3V1 − 9V2 = 0

Simplificamos la ecuación:
 
−V1 + 3V2 = 0
−V1 + 3V2 = 0

Al final obtendremos dos ecuaciones iguales y podemos eliminar una de las


dos para que ası́ nos quede solamente una ecuación y luego las igualamos para
poder definir los vectores propios de la matriz.

−V1 + 3V2 = 0
3V2 = V1
Reemplazamos en la matriz de vectores:
   
V1 3V2
=
V2 V2
Cuando V1 = 3, V2 = 1
 
3
1
Y esta matriz es uno de los vectores propios de la matriz A.
Caso λ = −7

      
2−λ 3 V1 0 V1
(A − λI)x = = , siendo x =
3 −6 − λ V2 0 V2

Sustituimos el valor de λ = −7
    
2+7 3 V1 0
=
3 −6 + 7 V2 0
    
9 3 V1 0
=
3 1 V2 0
Una vez reemplazado el valor obtenemos las ecuaciones multiplicando las ma-
trices
 
9V1 + 3V2 = 0
3V1 + V2 = 0
Simplificamos la ecuación:
 
3V1 + V2 = 0
3V1 + V2 = 0

175
Al final obtendremos dos ecuaciones iguales y podemos eliminar una de las
dos para que ası́ nos quede solamente una ecuación y luego las igualamos para
poder definir los vectores propios de la matriz.

3V1 + V2 = 0
−3V1 = V2
Reemplazamos en la matriz de vectores:
   
V1 V1
=
V2 −3V1

Cuando V1 = −1, V2 = 3
 
−1
3

Y esta matriz es uno de los vectores propios de la matriz A.


, ,
Entonces los Vectores Propios de la Matriz A son: − −−→
  −
−−−→
3
  
−1 
1 3

A.8. Ejercicios Propuestos


En las referencias del Capı́tulo 1 podemos encontrar multitud de ejercicios
propuestos y resueltos, vamos a hacer una selección de los más representativos y
añadir algunos propios.

Ejercicio A.1. Demostrar que la ecuación e−x + 3 = x tiene al menos una


solución real. Aplique el Teorema de Bolzano.

Ejercicio A.2. Demuestra que la función f (x) = x2 − 3x + 2 corta al eje de las


abscisas en el intervalo [0, 3]. ¿Se puede decir lo mismo de la función:

(3x − 2)
f (x) =
(x − 1)

Ejercicio A.3. Utilizando el teorema de Bolzano, demostrar que la ecuación


x3 + x − 6 = 0, tiene al menos una solución x = c tal que 1 ≤ c ≤ 3.

Ejercicio A.4. Utilizando el Teorema de Bolzano, justifique que la función po-


linómica f (x) = x2 − 2x + 1 tiene un cero comprendido entre −1 y 0.

Ejercicio A.5. Obtenga el valor o los valores de c que satisfacen la ecuación:

f (b) − f (a)
= f 0 (c)
b−a
En la conclusión del teorema del valor medio para las funciones y los intervalos
de los siguientes ejercicios.

176
1. f (x) = x3 − x2 , [−1, 2]
 3 
x , −2 ≤ x ≤ 0
2. g(x) =
x2 , 0 ≤ x ≤ 2
Ejercicio A.6. ¿Cuál de las funciones de los ejercicios satisfacen la hipótesis del
teorema del Valor Medio en el intervalo dado, y cuáles no? Justifique su respuesta.
p
1. f (x) = x(4 − x), [−3, 0]
 3 
x −x , −2 ≤ x ≤ 0
2. g(x) =
x2 + 6x + 9, −1 ≤ x ≤ 0

Ejercicio A.7. Teorema de Rolle.


1. Construya un polinomio f (x) que tenga ceros en x = −2, −1.

2. Sea f (x) = x2 + 2 + 14x + 7 determine todos los valores de c en el intervalo


(−9, 16).

3. Siendo f (x) = −18x2 + 9x + 3 determine si se puede aplicar el teorema y


de ser ası́ calcule todos los valores de c en el intervalo abierto (a, b).
Ejercicio A.8.
d √ 3
1. ( 2x + √ )2
dx 2x

3
!
d x4
2. √
dx 4 x3

d 2 5x
3. ln (e )
dx
d √
4. (1 − x2 ) x
dx
d
5. sec(ex + xe )
dx
d2
6. (sen2 x)
dx2
d3 x
7. (e cos x)
dx3
Ejercicio A.9. En los ejercicios siguientes, dibuje la gráfica de cada función y
determine si la función tiene valores extremos absolutos en su dominio. Explique
de que manera su respuesta es congruente con el teorema de valor extremo.

1. y = 6/(x2 + 2), −1 < x < 1


 
1/x, −1 ≤ x ≤ 0
2. h(x) = √
x, 0 ≤ x ≤ 4

177
Ejercicio A.10. Encontrar el valor máximo de la siguiente función:
1 3
f (x) = +
x+5 x
Ejercicio A.11. Encontrar los extremos absolutos de la función:
x
f (x) = + 1, 1 ≥ x ≥ 2
(4 + x)

Ejercicio A.12. Resolver las siguientes integrales:


Z
x
1. p dx
(x + 9)3
2

Z
dx
2. √
x2 + 9
Z
sen xdx
3.
cos3 x
sec2 3xdx
Z
4. √
tan 3x − 1
Z
5. x2 ln dx
Z
6. ex cos xdx

9 √
Z
3
7. x − 1dx
−7
Z 1
8. ax ex dx
−1
Z 2
9. x2 ex dx
0
Z 3
10. x2 ln xdx
1
Ejercicio A.13. Resolver las siguientes ecuaciones diferenciales.
1. 3xy dx–x2 y dy = 0
2. (ln x + 5)dx + (ln x–5)dy = 0
3. y 0 + 7y + 6 = 0
4. y 00 + y 0 − 12 = 0
5. y 000 + y 00 − 13y 0 + 12y = 0
6. y iv –2y 00 + y = 0

178
Apéndice B

En este Apéndice se plantea escribir todas las implementaciones en MATLAB


que han sido necesarias durante el desarrollo del Capı́tulo 2.

B.1. Cuestiones resueltas


Determine el resultado de las siguientes operaciones desarrollando paso a paso
la jerarquı́a de variables

B.1.1. 4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2
Desarrollo:
4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2 = 4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2
4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2 = 4 ∗ 2 + (9 + 2) ∧ 2 − 9 ∧ 2
4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2 = 4 ∗ 2 + 11 ∧ 2 − 9 ∧ 2
4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2 = 4 ∗ 2 + 121 − 9 ∧ 2
4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2 = 4 ∗ 2 + 121 − 81
4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2 = 8 + 121 − 81
4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2 = 129 − 81
4 ∗ 2 + (3 ∗ 3 + 2) ∧ 2 − 9 ∧ 2 = 48

B.1.2. 7 ∧ 2 + 3 ∗ 4 + (2 ∗ 3 + 5) ∧ 2
Desarrollo:
7 ∧ 2 + 3 ∗ 4 + (2 ∗ 3 + 5) ∧ 2 = 7 ∧ 2 + 3 ∗ 4 + (6 + 5) ∧ 2
7 ∧ 2 + 3 ∗ 4 + (2 ∗ 3 + 5) ∧ 2 = 7 ∧ 2 + 3 ∗ 4 + 11 ∧ 2
7 ∧ 2 + 3 ∗ 4 + (2 ∗ 3 + 5) ∧ 2 = 49 + 3 ∗ 4 + 11 ∧ 2
7 ∧ 2 + 3 ∗ 4 + (2 ∗ 3 + 5) ∧ 2 = 49 + 3 ∗ 4 + 121
7 ∧ 2 + 3 ∗ 4 + (2 ∗ 3 + 5) ∧ 2 = 49 + 12 + 121
7 ∧ 2 + 3 ∗ 4 + (2 ∗ 3 + 5) ∧ 2 = 61 + 121
7 ∧ 2 + 3 ∗ 4 + (2 ∗ 3 + 5) ∧ 2 = 182

179
B.1.3. Seleccione un nombre de variable que no sea reco-
nocido en MATLAB:
A. a&
B. aceleracion
C. a 1
D. a1

Desarrollo: La opción correcta es A. ya que el sı́mbolo & no puede ser parte


del nombre de una variable.

B.1.4. Seleccione un nombre de variable que no sea re-


conocido en MATLAB:
A. a
B. aceleracion
C. a 1
D. ac98

Desarrollo: La opción correcta es C ya que no pueden existir espacios en


blanco en el nombre de la variable.

B.1.5. ¿Cuál de las siguientes variables es tipo caracter?


A. a = 9.8
B. aceleracion = ‘9.80’
C. a 10 = 9.8
D. ac98 = 3 ∗ 3,2

Desarrollo: La opción correcta es B ya que el contenido de la variable acele-


racion está entre comillas simples.

B.1.6. ¿Cuál de las siguientes variables es tipo lógico?:


A. a = ‘false’
B. aceleracion = f also
C. a 10 = 3 ∗ true
D. ac98 = true

Desarrollo: La opción correcta es D ya que la variable ac98 posee un valor


lógico de verdadero.

180
B.2. Matrices

Se puede generar una matriz de 3 × 3 de números aleatorios enteros entre 0 y


10, mediante la siguiente instrucción visualizada en la Figura B.1

Figura B.1: Matriz de 3 × 3 de números aleatorios enteros entre 0 y 10

Command Window
>> A = f i x ( 1 0 ∗ rand ( 3 ) )
A =
9 6 9
7 0 6
fx 9 8 7

Fuente: Elaboración propia.

El rango y la norma de una matriz puede ser encontrada fácilmente mediante


los comandos rank y norm, respectivamente; como se aprecia en la Figura B.2

Figura B.2: Rango y norma de una matriz

Command Window
>> rank (A)
ans =
3
>> norm (A)
ans =
fx 21.3242

Fuente: Elaboración propia.

Los valores y vectores propios de la matriz se obtienen a partir del comando


eig como se presenta en la Figura B.3. La matriz V contiene los vectores propios
y la matriz D contiene los valores propios en su diagonal principal.

181
Figura B.3: Valores y vectores propios

Command Window
>> [ V,D] = e i g (A)
V =
-0.6603 -0.6450 -0.0621
-0.3967 -0.0519 -0.7862
-0.6377 0.7625 0.6148
D =
21.2962 0 0
0 -1.1572 0
fx 0 0 -4.1391

Fuente: Elaboración propia.

La descomposición QR que genera una matriz ortogonal Q por una triangular


superior R, tal que A = Q ∗ R. Esta operación está implementada en MATLAB
mediante el comando qr como se aprecia en la Figura B.4.

Figura B.4: Descomposición QR

Command Window
>> [ Q,R] = qr (A)
Q =
-0.6196 0.1257 -0.7748
-0.4819 -0.8401 0.2490
-0.6196 0.5277 0.5811

R =
-14.5258 -8.6742 -12.8048
0 4.9758 -0.2153
0 0 -1.4112
>> A = Q∗R
A =
9.0000 6.0000 9.0000
7.0000 0.0000 6.0000
fx 9.0000 8.0000 7.0000

Fuente: Elaboración propia.

La descomposición LU que genera una matriz triangular inferior L por una


triangular superior U , tal que A = L ∗ U . Esta operación está implementada en
MATLAB mediante el comando lu como se aprecia en la Figura B.5.

182
Figura B.5: Descomposición LU

Command Window
>> [ L ,U] = l u (A)
L =
1.0000 0 0
0.7778 1.0000 0
1.0000 -0.4286 1.0000

U =
9.0000 6.0000 9.0000
0 -4.6667 -1.0000
0 0 -2.4286
>> A = L∗U
A =
9.0000 6.0000 9.0000
7.0000 0.0000 6.0000
fx 9.0000 8.0000 7.0000

Fuente: Elaboración propia.

B.3. Representaciones Gráficas


Los gráficos son herramientas muy utilizadas para presentar todo tipo de in-
formación; información que puede proceder de cualquier campo del conocimiento,
pero especialmente de las disciplinas relacionadas con las ciencias y la ingenierı́a,
donde MATLAB es ampliamente utilizado. Con los comandos de MATLAB se
pueden crear distintos tipos de gráficos. En esta sección se describe cómo se uti-
liza MATLAB para crear y dar forma a gráficos de dos y tres dimensiones.

B.3.1. Comandos para Gráficos 2D


Las gráficas 2D de MATLAB están fundamentalmente orientados a la repre-
sentación gráfica de vectores. El Comando plot realiza gráficas de funciones
de la forma y = f (x), con MATLAB, el comando más elemental es plot, por
ejemplo: dibujar y = sen(x). Primero, se crea un vector de valores para x, luego
se calcula los valores de y como se observa en la Figura B.6.

Figura B.6: Comando plot

1 x = 0:0.1:2*pi; % ingreso del vector x


2 y = sin(x); % calculo del la funcion y=f(x)
3 figure(1); % nueva figura
4 plot(x,y); % grafico de la funcion y=f(x)

Fuente: Elaboración propia.

183
El resultado del ejemplo de la Figura B.6 es que se abre una ventana mostrando
el gráfico de la Figura B.7. Por defecto, los distintos puntos del gráfico se unen con
una lı́nea continua. También por defecto, el color que se utiliza para la primera
lı́nea es el azul.

Figura B.7: Función y = sen(x)

Fuente: Elaboración propia.

MATLAB utiliza un tipo especial de ventanas para realizar las operaciones


gráficas. Ciertos comandos abren una ventana nueva y otros dibujan sobre la
ventana activa, bien sustituyendo lo que hubiera en ella, bien añadiendo nuevos
elementos gráficos a un dibujo anterior.
La creación de nuevas gráficas se realiza con el comando figure. Para mostrar
varios resultados sobre una misma gráfica, es necesario activar el comando hold
como se muestra en la Figura B.8

Figura B.8: Comando hold on

1 x = 0:0.1:2*pi; % ingreso del vector x


2 y = sin(x); % calculo del la funcion y=f(x)
3 figure(1); % nueva figura
4 plot(x,y) % grafico de la funcion y=f(x)
5 hold on % mantiene la grafica anterior
6 z=cos(x); % calcula nueva funcion z=g(x)
7 plot(x,z) % adiciona la representacion de z

Fuente: Elaboración propia.

184
El resultado del uso del comando hold en la Figura B.8 se muestra en la
Figura B.9

Figura B.9: Funciones y = sen(x) y z = cos(x)

Fuente: Elaboración propia.

Y cuando no se quiera superponer más resultados sobre la misma gráfica se


debe desactivar el comando hold ; a partir de las siguientes lineas una nueva
ejecución del comando plot generará únicamente los resultados posteriores. Un
ejemplo se da en la Figura B.10.

Figura B.10: Comando hold off

1 x = 0:0.1:2*pi; % ingreso del vector x


2 y = sin(x);
3
4 figure(1);
5 plot(x,y) % grafico de y
6 hold on % mantiene la grafica anterior
7 z = cos(x);
8 plot(x,z) % adiciona la representacion de z
9 hold off % desactiva el comando hold
10
11 x = 0:0.01:pi/2; % nueva entrada
12 w = tan(x);
13 plot(x,w) % nueva representacion grafica

Fuente: Elaboración propia.

185
El gráfico del ejemplo de la Figura B.10 se observa en la Figura B.11, en este
caso solo la gráfica de la tangente se presenta como resultado final del código.

Figura B.11: Grafica de la función w = tan(x)

1400

1200

1000

800

600

400

200

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6

Fuente: Elaboración propia.

El comando plot ofrece múltiples posibilidades, en realidad, el conjunto básico


de argumentos de esta función es una tripleta formada por dos vectores y una
cadena de 1, 2 ó 3 caracteres entre comillas simples que indica el color, sı́mbolo
y tipo de linea. El atributo color se especifica con la primera letra en inglés
del mismo: ’r’ para rojo, ’b’ para azul, ’g’ para verde, etc. El atributo sı́mbolo,
empleado para remarcar los resultados gráficos, pueden ser: ’o’, ’*’, ’+’, ’×’, etc.
El tipo de lı́nea se especifica con los caracteres: ’-’ para lı́nea sólida, ’:’para lı́nea
discontinua, ’none’ sin lı́nea, etc. En la Figura B.12 se da un código de ejemplo y
el resultado se presenta en la Figura B.13.

Figura B.12: Comando plot con tres argumentos

1 x = 0:0.1:2*pi; % ingreso del vector x


2 y = sin(x);
3 figure(1);
4 plot(x,y,'r*') % grafico de y en color rojo con *

Fuente: Elaboración propia.

186
Figura B.13: Trazada con asteriscos rojos

0.8

0.6

0.4

0.2

−0.2

−0.4

−0.6

−0.8

−1
0 1 2 3 4 5 6 7

Fuente: Elaboración propia.

El siguiente grupo de comandos permiten agregar a la gráfica anterior una


rejilla, un texto a los ejes coordenados x y y y un tı́tulo, mediante los siguientes
comandos: grid on, xlabel , ylabel y title. En la Figura B.14 se presenta un
ejemplo. El resultado de los comandos de la Figura B.14 aparecen en la Figura
B.15.

Figura B.14: Comandos grid, xlabel, ylabel y title

1 x = 0:0.01:2*pi; % ingreso del vector x


2 y = sin(x);
3 figure(1);
4 plot(x,y) % grafico de y
5 grid on % activa la rejilla
6 xlabel('x [s]') % agrega texto al eje de abscisas
7 ylabel('y [m]') % agrega texto al eje de ordenadas
8 title('funcion y=sen(x)') % agrega titulo a la grafica

Fuente: Elaboración propia.

187
Figura B.15: Función y = sen(x) con cuadrı́cula, tı́tulo y etiquetas en los ejes

funcion y=sen(x)
1

0.8

0.6

0.4

0.2
y [m]

−0.2

−0.4

−0.6

−0.8

−1
0 1 2 3 4 5 6 7
x [s]

Fuente: Elaboración propia.

El comando area permite mostrar el área bajo la curva de una función. Las
Figuras B.16 y B.17 presentan el código y la gráfica de la función:


2
x + 4
 ,x≤0
f (n) = x + 2 ,0<x≤2

−x + 6 ,x>2

Figura B.16: Comando area para presentar el área bajo la curva

1 x = -2:0.01:4; %Dominio
2 y = (x.ˆ2+2).*(x≤0) + (x+2).*(x>0 & x≤2) + (-x+6).*(x>2); %Rango
3
4 subplot(1,2,1), plot(x,y), title('Funcion f(x)'), axis square;
5 subplot(1,2,2), area(x,y), title('Area bajo la curva'), axis square;

Fuente: Elaboración propia.

188
Figura B.17: Área bajo la curva de una función

Fuente: Elaboración propia.

B.3.2. Comandos para Gráficos 3D


En MATLAB se pueden obtener gráficos de curvas y superficies en 3D
Comando plot3 Para obtener gráficos de curvas se usa el comando plot3 ,
éste es muy similar al comando plot, excepto que en el argumento de plot3
deben aparecer tres vectores de igual dimensión, en la Figura B.18 se presenta un
ejemplo. El resultado de los comandos de la Figura B.18 aparecen en la Figura
B.19
.

Figura B.18: Uso del comando plot3

1 t = 0:0.01:10*pi; % ingreso del vector t


2 x = 2*cos(t); % componente en x
3 y = sin(t); % componente en y
4 z = t; % componente en z
5 plot3(x,y,z,'k') % grafico de la Helice en color negro
6 grid on % activa la rejilla
7 xlabel('2cos(t)') % agrega texto al eje x
8 ylabel('sen(t)') % agrega texto al eje y
9 zlabel('t') % agrega texto al eje z
10 title('HELICE') % agrega titulo a la grafica

Fuente: Elaboración propia.

Comandos meshgrip y mesh Para dibujar en MATLAB gráficos de su-


perficies expresadas como funciones de dos variables z = f (x, y), al igual que
para funciones de una variable, en primer lugar hay que generar vectores para
las variables x y y, estos vectores contienen las coordendas de una rejilla (grid)
sobre la que se va a dibujar la función z = f (x, y). Luego, es necesario crear dos

189
Figura B.19: Gráfica de una Hélice

HELICE

35

30

25

20
t

15

10

0
1
0.5 2
0 1
0
−0.5 −1
sen(t) −1 −2
2cos(t)

Fuente: Elaboración propia.

matrices, una es X cuyas filas son copias de x y la otra es Y cuyas columnas son
copias de y. Estas matrices se crean con el comando meshgrid.
Por ejemplo el conjunto de puntos que forman la rejilla en el plano xy corres-
pondientes al dominio 0 ≤ x ≤ 5 y 0 ≤ y ≤ 5 de la función se presenta en la
Figura B.20 junto con las matrices X y Y.

Figura B.20: Rejilla en el plano xy para el dominio 0 ≤ x ≤ 5 y 0 ≤ y ≤ 5

Fuente: Elaboración propia.

Una vez generada las matrices X y Y se define la función a graficar en la que


los argumentos son las matrices X y Y [Z = f (X, Y )], para finalmente usar el
comando mesh.
Un ejemplo del uso de los comandos meshgrip y mesh se presenta en la
Figura B.21

190
Figura B.21: Uso de los comandos meshgrid y mesh

1 x = -15:0.01:15; % ingreso del vector x


2 y = -15:0.01:15; % ingreso del vector y
3
4 [X,Y]=meshgrid(x,y); % generacion matrices X y Y
5 Z=Y.ˆ2-X.ˆ2; % definicion de la funcion Z
6 mesh(X,Y,Z) % graficacion de Z
7
8 xlabel('x') % agrega texto al eje x
9 ylabel('y') % agrega texto al eje y
10 zlabel('Z') % agrega texto al eje z
11 title('Paraboloide hiperbolico') % agrega titulo a la grafica

Fuente: Elaboración propia.

La gráfica que corresponde a la Figura B.21 se presenta en la Figura B.22

Figura B.22: Gráfica de una superficie en 3D

Fuente: Elaboración propia.

191
B.4. Programación con MATLAB
B.4.1. Programación Secuencial
Encontrar el área del rectángulo más grande dado por la ecuación
A(x, y) = 2xy, cuya base es 2x y altura y, que se puede inscribir en
la ecuación de la parábola y(x) = −Bx2 + C, como se muestra en la
Figura B.23. Para ello, el usuario debe ingresar los valores de B y C.
Nota: Este es un problema que se resuelve optimizando la función del
área del rectángulo para determinar las raı́ces de la derivada del área.

Figura B.23: Rectángulo inscrito en una parábola

Fuente: Elaboración propia.

Desarrollo:
Si reemplazamos la ecuación y(x) = −Bx2 + C en la la ecuación del área, se
obtiene la expresión A(x) = −2Bx3 + 2Cx. La derivada de esta expresión con
respecto a x es dA(x)
dx
= −6Bx2 + 2C. Si planteamos que dA(x)dx
= 0, se desprende
q
C
que x = 3B . La implementación de este algoritmo se observa en la Figura B.24
y su ejecución en la Figura B.25

Figura B.24: Cálculo del área máxima de un rectángulo inscrito en una parábola

1 disp('Ingrese los coeficientes de la parabola y = -Bxˆ2 + C')


2 B=input('Ingrese el coeficiente B: ');
3 C=input('Ingrese el coeficiente C: ');
4 x = sqrt(C/(3*B)); % Coordenada en x
5 y = -B*xˆ2+C; % Coordenada en y
6 S = 2*x*y; % Superficie
7 disp('La superficie del rectangulo es: ');
8 disp(S)

Fuente: Elaboración propia.

192
Figura B.25: Ejecución del Programa de la Figura B.24

Command Window
I n g r e s e l o s c o e f i c i e n t e s de l a p a r a b o l a y = -Bxˆ2 + C
Ingrese e l c o e f i c i e n t e B: 3
I n g r e s e e l c o e f i c i e n t e C : 81
La s u p e r f i c i e d e l r e c t a n g u l o e s :
fx 324

Fuente: Elaboración propia.

El programa debe mostrar los valores de las dimensiones de la ven-


tana: x, y; que presenta la forma de un rectángulo coronado por un
semicı́rculo, como se muestra en la figura B.26. Se debe maximizar el
área A y considerar que el usuario conoce el valor del perı́metro P .

Figura B.26: Forma de la ventana

Fuente: Elaboración propia.

Desarrollo:
Primero, plantemos las ecuaciones para el perı́metro P y el área A de la Figura
2
B.26, es decir; P = x + 2y + πx2
y A = πx8 + xy. De la ecuación del perı́metro,
despejamos y = 12 P − x − πx

2
, y reemplazamos en la ecuación del área: A(x) =
(4+π)x2
Px
2
− 8 . Si planteamos que dA(x) dx
= 0, se desprende que x = 2P/(π + 4). La
implementación de este algoritmo se observa en la Figura B.27 y su ejecución en
la Figura B.28

193
Figura B.27: Cálculo de las dimensiones de la ventana de la Figura B.26

1 P = input('Ingrese el valor del perimetro: ');


2 x = 2*P/(pi+4); % Dimension en x
3 y = (P-x-pi*x/2)/2; % Dimension en y
4 disp('El valor de la dimension x es: ');
5 disp(x);
6 disp('El valor de la dimension y es: ');
7 disp(y);

Fuente: Elaboración propia.

Figura B.28: Ejecución del Programa B.27

Command Window
I n g r e s e e l v a l o r d e l p e r i m e t r o : 10
El v a l o r de l a d i m e n s i o n x e s :
2.8005

El v a l o r de l a d i m e n s i o n y e s :
fx 1.4002

Fuente: Elaboración propia.

B.4.2. Estructuras Condicionales

Lea un número de tres cifras. Determinar si la suma de las tres cifras


es un número par o impar, muestre un mensaje al usuario.

Desarrollo:

La implementación de este algoritmo se observa en la Figura B.29 y su ejecu-


ción en la Figura B.30

194
Figura B.29: Descomposición de un número de 3 cifras

1 x = input('Ingrese el valor de tres cifras: ');


2 c = floor(x/100); % Cifra de la centena
3 r = mod(x,100); % Residuo de dos cifras
4 d = floor(r/10); % Cifra de la decena
5 u = mod(x,10); % Cifra de la unidad
6 y = c+d+u;
7 if x > 99 & x < 999 % Condicion para valor de 3 cifras
8 if mod(y,2)==0; % Condicion para valor par
9 disp('La suma resulta un valor par')
10 else
11 disp('La suma resulta un valor impar')
12 end
13 else
14 disp('El valor ingresado no tiene 3 cifras.')
15 end

Fuente: Elaboración propia.

Figura B.30: Ejecución del Programa de la Figura B.29

Command Window
Ingrese e l v a l o r de t r e s c i f r a s : 753
La suma r e s u l t a un v a l o r impar
Ingrese e l v a l o r de t r e s c i f r a s : 754
fx La suma r e s u l t a un v a l o r par

Fuente: Elaboración propia.

Dados los tres lados de un triángulo, determine su tipo: escaleno, isósce-


les, o equilatero.

Desarrollo:
La implementación de este algoritmo se observa en la Figura B.31 y su ejecu-
ción en la Figura B.32

195
Figura B.31: Clasificación de triángulos basado en las dimensiones de sus lados

1 a = input('Ingrese el primer lado del triangulo: ');


2 b = input('Ingrese el segundo lado del triangulo: ');
3 c = input('Ingrese el tercer lado del triangulo: ');
4
5 if a+b > c & a+c > b & b+c > a % Desigualdad del triangulo
6 if a == b & b == c
7 disp('Es un triangulo equilatero');
8 elseif a == b | b == c | a == c
9 disp('Es un triangulo isoceles');
10 else
11 disp('Es un triangulo escaleno');
12 end
13 else
14 disp('Las dimensiones de los lados no forman un triangulo.')
15 end

Fuente: Elaboración propia.

Figura B.32: Ejecución del Programa de la Figura B.31

Command Window
I n g r e s e e l primer lado d e l t r i a n g u l o : 5
I n g r e s e e l segundo l a d o d e l t r i a n g u l o : 5
Ingrese e l t e r c e r lado del triangulo : 5
Es un t r i a n g u l o e q u i l a t e r o

I n g r e s e e l primer lado d e l t r i a n g u l o : 7
I n g r e s e e l segundo l a d o d e l t r i a n g u l o : 7
Ingrese e l t e r c e r lado del triangulo : 2
Es un t r i a n g u l o i s o c e l e s

I n g r e s e e l primer lado d e l t r i a n g u l o : 5
I n g r e s e e l segundo l a d o d e l t r i a n g u l o : 6
Ingrese e l t e r c e r lado del triangulo : 8
fx Es un t r i a n g u l o e s c a l e n o

Fuente: Elaboración propia.

Considere un valor de temperatura t y un código p que puede ser 1


o 2. Si el código es 1 convierta la temperatura t de grados Farenheit
F a grados Celsius C con la fórmula C = 59 (T − 32). Si el código es 2
convierta la temperatura t de grados Celsius C a grados Farenheit F
con la fórmula F = 32 + 95 T .

196
Desarrollo:
La implementación de este algoritmo se observa en la Figura B.33 y su ejecu-
ción en la Figura B.34

Figura B.33: Conversion entre temperaturas Celsius y Farenheit

1 disp('Este programa realiza conversiones de temperatura.')


2 disp('El codigo 1 indica conversion de Farenheit a Celsius.')
3 disp('El codigo 2 indica conversion de Celsius a Farenheit.')
4 T = input('Ingrese la temperatura: ');
5 p = input('Ingrese el codigo de conversion (1 o 2): ');
6 switch p
7 case 1
8 C = 5/9*(T-32); % Farenheit a Celsius
9 disp('La Temperatura en Celsius es:')
10 disp(C)
11 case 2
12 F = 32 + 9/5*T; % Celsius a Farenheit
13 disp('La Temperatura en Farenheit es:')
14 disp(F)
15 otherwise
16 disp('No se ingreso el codigo correctamente')
17 end

Fuente: Elaboración propia.

Figura B.34: Ejecución del Programa de la Figura B.33

Command Window
Este programa r e a l i z a c o n v e r s i o n e s de t e m p e r a t u r a .
El c o d i g o 1 i n d i c a c o n v e r s i o n de F a r e n h e i t a C e l s i u s .
El c o d i g o 2 i n d i c a c o n v e r s i o n de C e l s i u s a F a r e n h e i t .
I n g r e s e l a t e m p e r a t u r a : 93
I n g r e s e e l c o d i g o de c o n v e r s i o n ( 1 o 2 ) : 1
La Temperatura en C e l s i u s e s :
33.8889

Este programa r e a l i z a c o n v e r s i o n e s de t e m p e r a t u r a .
El c o d i g o 1 i n d i c a c o n v e r s i o n de F a r e n h e i t a C e l s i u s .
El c o d i g o 2 i n d i c a c o n v e r s i o n de C e l s i u s a F a r e n h e i t .
I n g r e s e l a t e m p e r a t u r a : 27
I n g r e s e e l c o d i g o de c o n v e r s i o n ( 1 o 2 ) : 2
La Temperatura en F a r e n h e i t e s :
fx 80.6000

Fuente: Elaboración propia.

197
B.4.3. Estructura Repetitivas
Dado un número entero positivo n, se debe descomponerlo en sus fac-
tores primos.
Desarrollo:
La implementación de este algoritmo se observa en la Figura B.35 y su ejecu-
ción en la Figura B.36

Figura B.35: Descomposición de factores primos

1 n = input('Ingrese un valor positivo n: ');


2 x = 2;
3
4 if n > 0
5 disp('Sus factores primos son: ');
6 while x ≤ n
7 if mod(n,x) == 0 % Condicion de divisibilidad
8 n = n/x; % Descompone el valor
9 disp(x); % Se presenta el factor
10 else
11 x = x+1; % Se busca el nuevo factor
12 end
13 end
14 else
15 disp('El valor ingresado es menor o igual a 0.');
16 end

Fuente: Elaboración propia.

Figura B.36: Ejecución del Programa de la Figura B.35

Command Window
I n g r e s e un v a l o r p o s i t i v o n : 96
Sus f a c t o r e s primos son :

fx 3

Fuente: Elaboración propia.

198
Realizar el conteo del número de veces que se hace el lanzamiento de
un dado hasta obtener el valor de 5.
Desarrollo:
La implementación de este algoritmo se observa en la Figura B.37 y su ejecu-
ción en la Figura B.38

Figura B.37: Conteo de lanzamientos de un dado hasta obtener un 5

1 valor = 0;
2 cont = 0; % contador de lanzamientos
3
4 while valor 6= 5
5 x = rand(); % Genera valor aleatorio entre 0 y 1
6 y = 5*x + 1; % Normaliza el valor entre 1 y 6
7 valor = round(y); % Discretiza el valor
8 disp(valor); % Muestra el valor
9 cont = cont + 1; % Incrementa el contador
10 end
11
12 disp('El dado se ha lanzado: ');
13 disp(cont);
14 disp('veces');

Fuente: Elaboración propia.

Figura B.38: Ejecución del Programa de la Figura B.37

Command Window
4

El dado s e ha l a n z a d o :
7
fx v e c e s

Fuente: Elaboración propia.

199
Dado un número entero, n, calcular la suma de los n primeros números
pares, terminando el programa cuando aparezca un número divisible
para 5

Desarrollo:
La implementación de este algoritmo se observa en la Figura B.39 y su ejecu-
ción en la Figura B.40

Figura B.39: Sumatoria den números pares hasta un número divisible para 5

1 n = input('Ingrese un valor entero: ');


2 suma = 0; % acumula la suma de valores pares
3
4 for i = 1:n
5 npar = 2*i; % crea valores pares
6 if mod(npar,5) == 0 % condicion de divisibilidad
7 break % interrumpe la iteracion
8 else
9 disp(npar);
10 suma = suma + npar; % calcula la suma
11 end
12 end
13
14 disp('La suma de los n valores pares es: ');
15 disp(suma);

Fuente: Elaboración propia.

Figura B.40: Ejecución del Programa de la Figura B.39

Command Window
I n g r e s e un v a l o r e n t e r o : 20

La suma de l o s n v a l o r e s p a r e s e s :

fx 20

Fuente: Elaboración propia.

200
B.5. Funciones
Desarrolle una función que calcula las raı́ces de un polinomio de la
forma ax2 + bx + c
Desarrollo:
La implementación de esta función se observa en la Figura B.41 y su ejecución
en la Figura B.42

Figura B.41: Función que calcula las raı́ces de un polinomio de la forma ax2 +bx+c

1 function r = raices(a,b,c)
2 % Esta funcion calcula la reices de un polinomio de grado 2
3 % de la forma axˆ2 + bx + c
4 % Variables de entrada
5 % a = coeficiente de xˆ2
6 % b = coeficiente de x
7 % c = coeficiente independiente
8 % Variables de salida
9 % r = vector que contiene las raices
10
11 x1 = (-b + sqrt(bˆ2 - 4*a*c))/(2*a); % raiz 1
12 x2 = (-b - sqrt(bˆ2 - 4*a*c))/(2*a); % raiz 2
13
14 r = [x1 x2]; % salida de mi funcion

Fuente: Elaboración propia.

Figura B.42: Aplicación del comando help para la función raı́ces y su invocación
desde la Ventana de Comandos.

Command Window
>> h e l p r a i c e s
Esta f u n c i o n c a l c u l a l a r e i c e s de un p o l i n o m i o de grado 2
de l a forma ax ˆ2 + bx + c
V a r i a b l e s de e n t r a d a
a = c o e f i c i e n t e de x ˆ2
b = c o e f i c i e n t e de x
c = c o e f i c i e n t e independiente
V a r i a b l e s de s a l i d a
r = v e c t o r que c o n t i e n e l a s r a i c e s

>> r = r a i c e s ( 1 , - 5 , 6 )

r =

fx 3 2

Fuente: Elaboración propia.

201
Desarrolle una función que calcula el área y el volumen de un cilindro
de altura h y radio r.
Desarrollo:
La implementación de esta función se observa en la Figura B.43, su invocación
se presenta en la Figura B.44 y la gráfica generada está en la Figura B.45.

Figura B.43: Función que calcula calcula el área y el volumen de un cilindro

1 function [V,S] = calculacilindro(r,h)


2 % [V,S] = calculacilindro(r,h)
3 % Esta funcion calcula el volumen y la superficie del
4 % cilindro de radio r y altura h.
5 % Variables de entrada
6 % r = radio
7 % h = altura
8 % Variables de salida
9 % V = Volumen
10 % S = Superficie
11 V = pi*rˆ2*h; % Volumen
12 S = 2*pi*r*h + 2*pi*rˆ2; % Superficie
13 [x,y,z] = cylinder(r,100); % cilindro con radio r con n
14 % puntos igualmente espaciados
15 surf(x,y,z*h,'FaceAlpha',0.2, 'EdgeColor', 'none');

Fuente: Elaboración propia.

Figura B.44: Aplicación del comando help para la función calcula cilindro y
su invocación desde la Ventana de Comandos.

Command Window
>> h e l p c a l c u l a c i l i n d r o
[ V, S ] = c a l c u l a c i l i n d r o ( r , h )
Esta f u n c i o n c a l c u l a e l volumen y l a s u p e r f i c i e d e l
c i l i n d r o de r a d i o r y a l t u r a h .
V a r i a b l e s de e n t r a d a
r = radio
h = altura
V a r i a b l e s de s a l i d a
V = Volumen
S = Superficie

>> [ V, S ] = c a l c u l a c i l i n d r o ( 5 , 1 0 ) }
V =
785.3982
S =
fx 471.2389

Fuente: Elaboración propia.

202
Figura B.45: Cilindro de radio r = 5 y altura h = 10

Fuente: Elaboración propia.

Se puede apreciar que el comando help acompañado del nombre de la función


o comando, despliega la ayuda del archivo .m, que es una breve descripción junto
a la sintaxis de la función o de la instrucción, en la Ventana de Comandos. Del
mismo modo que otros programas, MATLAB posee una enorme documentación
de todas sus librerı́as y comandos, que puede ser accedida después de presionar
la tecla F1 en la Ventana de Comandos.

203
204
Apéndice C

En este Apéndice se encuentran las implementaciones (sintaxis) en Matlab de


ejercicios referentes al capı́tulo de Derivación Numérica. Además, se encuentran
ejemplos resueltos extras del contenido del capı́tulo.

C.1. Ejemplo de la Serie de Taylor.


Ejemplo C.1. Sea f (x) = 4x · sen(x), hallar su aproximación usando la serie de
Taylor de tercer orden con a = π2 . Predecir el valor de f (x) en x = 1, encontrar
el error de truncamiento y dibujar en un entorno de a = π2 las funciones f (x) y
T3,π/2 [4x · sen(x)](x).

Solución: Lo primero es construir el polinomio de Taylor desarrollado en el punto


a = π2 .

3
X f (i) (x)  π i
T3,π/2 [4x · sen(x)](x) = x−
i=0
i! 2
 π   π 2  π 3
= 2π + 4 x − −π x− −2 x−
 2
 2 2 2
π
= 4− x + 2πx2 − 2x3 .
2

Ahora toca predecir el valor en x = 1,

π2
 
T3,π/2 [4x · sen(x)](1) = 4 − + 2π − 2 = 3,34838.
2

Por otro lado, si calculamos el valor real, serı́a f (1) = 3,36588, vemos que la
aproximación es bastante buena.
El error de truncamiento, puesto que conocemos el valor real serı́a

ET = |3,34838 − 3,36588| = 0,0175008.

Si no conocemos el valor real tenemos que acotar f (IV ) (x) en el intervalo


[1, π − 1].

205
Figura C.1: Funciones f (x) y T3,π/2 [4x · sen(x)](x).
7.5

6.5

6
f(x)
Taylor
5.5

4.5

3.5

3
1 1.2 1.4 1.6 1.8 2 2.2

Fuente: Elaboración propia.

f (IV ) (x) = 4x·sen(x)−16 cos(x) ⇒ |f (IV ) (x)| ≤ 4(π −1)+16 = 24,5664,

ası́ una cota del error viene dado por

f (IV ) (ξ)  π 4
ET ≤ 1− = 0,108656.
4! 2
Por último, dibujamos las gráficas solicitadas se pueden ver en la Figura
C.1. 2

C.2. Grado de exactitud


Definición C.1. Dada una fórmula de aproximación para la derivada k-ésima
en el punto a de la forma
n
X
(k)
Df (a) = αi f (xi ),
i=0

diremos que el máximo valor m tal que una fórmula aproximada como las an-
teriores es exacta para todo f ∈ Pm se llama grado de exactitud de dicha
fórmula.

Ejemplo C.2. Hallar los coeficientes ai para que la siguiente fórmulas de deri-
vación numérica sea exacta en P2 :

f 0 (2) ≈ a1 f (0) + a2 f (2) + a3 f (4).

206
Solución: Para que una fórmula sea exacta en P2 , es necesario solamente justificar
que es exacta en una base de P2 , o lo que es lo mismo, justificar la exactitud en
este caso en la base canónica {1, t, t2 }.

Veamos la exactitud para f (t) = 1. Por un lado derivamos y por otro lado
aplicamos la fórmula de derivación, y luego igualamos:

f (t) = 1 ⇒ f 0 (t) = 0 ⇒ f 0 (2) = 0.


(1)
Df (2) = a1 f (0) + a2 f (2) + a3 f (4) = a1 · 1 + a2 · 1 + a3 · 1 = a1 + a2 + a3 .

Por lo tanto, nuestra primera ecuación serı́a

0 = a1 + a2 + a3 .

Veamos la exactitud para f (t) = t. Por un lado derivamos y por otro lado
aplicamos la fórmula de derivación, y luego igualamos:

f (t) = t ⇒ f 0 (t) = 1 ⇒ f 0 (2) = 1.


(1)
Df (2) = a1 f (0) + a2 f (2) + a3 f (4) = a1 · 0 + a2 · 2 + a3 · 4 = 2a2 + 4a3 .

Por lo tanto, nuestra ecuación quedarı́a

1 = 2a2 + 4a3 .

Veamos la exactitud para f (t) = t2 . Analogamente:

f (t) = t2 ⇒ f 0 (t) = 2t ⇒ f 0 (2) = 4.


(1)
Df (2) = a1 f (0) + a2 f (2) + a3 f (4) = a1 · 0 + a2 · 4 + a3 · 8 = 4a2 + 8a3 .

Y finalmente, nuestra última ecuación serı́a

4 = 4a2 + 16a3 .

Resolviendo el sistema de 3 ecuaciones con 3 incognitas, obtenemos que


−1 1
a0 = , a1 = 0 y a2 = . 2
4 4

C.3. Derivación númerica utilizando fórmulas de


Taylor.
Ejemplo C.3. La distancia recorrida por un vehı́culo se ha ajustado a la siguiente
tabla. Use los datos para dibujar la gráfica de esta función y estime la pendiente
de la recta tangente en los siguientes puntos:
a) t = 0,5, b) t = 2,50, c) t = 1,50, d) comparación.

207
Tabla de datos
t(horas) d(Km)
0 0
0.5 38
1 78
1.5 105
2 147
2.5 191

Solución del ejercicio utilizando Matlab.

Para ingresar los datos los ponemos en la ventana de Command Window


de la siguiente manera:

t = [0 0.5 1 1.50 2 2.50]’;


d = [0 38 78 105 147 191]’;

Lo ingresamos como matriz transpuesta para que el programa lo utilice


como vector.

a) Diferencia progresiva en el punto 0.5

Código Matlab
function[derivacionumerica] = dpro(t, d);
plot(t, d)
num=2;
num1=num+1;
%diferencia progresiva
dp = (d(num1) - d(num)) / (t(num1) - t(num));
titulos = [’DERIVADA PROGRESIVA’]
derivacionumerica = [ dp ];

Command Window
>> dpro(t,d)

titulos =
DERIVADA PROGRESIVA

ans =
80

208
b) Diferencia regresiva en el punto 2.50

Código Matlab
function [derivacionumerica] = dregre(t, d)
plot(t, d)
num = 6;
num2 = num - 1;
%diferencia regresiva
dr = (d(num) - d(num2)) / (t(num) - t(num2));
titulos = [’DERIVADA REGRESIVA’]
derivacionumerica=[ dr ];

Command Window
>> dregre(t,d)
titulos =
DERIVADA REGRESIVA
ans =
88

c) Diferencia central en el punto 1.50

Código Matlab
function [derivacionumerica] = dcen(t, d)
plot(t, d)
num= 4;
num1 = num +1;
num2 = num - 1;
%diferencia regresiva
dc = (d(num1) - d(num2)) / (t(num1) - t(num2));
titulos = [’DERIVADA CENTRAL’]
derivacionumerica = [ dc ];

Command Window
>> dcen(t,d)
titulos =
DERIVADA CENTRAL
ans =
69

d) Comparación de los 3 métodos.

209
Código Matlab
function [derivacionumerica] = diferencianum(t, h)
plot(t, h)
n = length(t);
dp = zeros(n, 1);
dr = zeros(n, 1);
dc = zeros(n, 1);
%diferencia progresiva
for i=1: (n-1)
dp(i) = (h(i+1) - h(i)) / (t(i+1) - t(i));
end

%diferencia regresiva
for i=2: n
dr(i) = (h(i) - h(i-1)) / (t(i) - t(i-1));
end

%diferencia central
for i=2: (n-1)
dc(i) = (h(i+1) - h(i-1)) / (t(i+1) - t(i-1));
end
titulos = [’Tiempo Horas Dprogresiva Dcentral Dregresiva’]
derivacionumerica = [t h dp dc dr];

Command Window
>>diferencianum(t, d)

titulos =

Tiempo Horas Dprogresiva Dcentral Dregresiva


ans =
0 0 76.0000 0 0
0.5000 38.0000 80.0000 78.0000 76.0000
1.0000 78.0000 54.0000 67.0000 80.0000
1.5000 105.0000 84.0000 69.0000 54.0000
2.0000 147.0000 88.0000 86.0000 84.0000
2.5000 191.0000 0 0 88.0000

Nota C.1. Muy importante destacar diferencianum(t, h), la última función


que acabamos de ver en Matlab, que dados dos vectores, t de nodos y h de imagenes
o datos, nos calcula una aproximación de la primera derivada. Se anima al lector
a implementar las fórmulas de las páginas 62 y 64.
Ejemplo C.4. Considere la siguiente tabulación de la función f (x) = tan x3 ,


donde los valores están redondeados con cuatro cifras decimales.

210
x

x f (x) = tan 3
1 0.2463
1,10 0.3849
1,20 0.4228
1.30 0.4627
1.340 0.5038

1. Use la fórmula de diferencias centradas de segundo orden (3.16) con h =


0, 10 para encontrar la aproximación de f 00 (1, 20).
2. Use la fórmula de diferencias centradas de segundo orden (3.16) con h =
0,05 para encontrar la aproximación de f 00 (1, 20).
3. Use la fórmula de diferencias centradas expandidas de cuarto orden de la
Tabla de la página 64 con h = 0, 10 para encontrar la aproximación de
f 00 (1, 20).
4. ¿Qué respuesta de los apartados a, b ó c, es más precisa? ¿Porqué?
Solución:
f (xi + 0,1) − 2f (xi ) + f (xi − 0,1)
a) f 00 (xi ) ≈ ,
h2
f (1,2 + 0,1) − 2f (1,2) + f (1,2 − 0,1)
f 00 (1, 20) ≈
0,12
= 0,110852841757425.

f (xi + 0,05) − 2f (xi ) + f (xi − 0,05)


b) f 00 (xi ) ≈ ,
0,052
f (1,2 + 0,05) − 2f (1,2) + f (1,2 − 0,05)
f 00 (1, 20) ≈
0,52
= 0,110774734224250.

−f (xi + 2) + 16f (xi + 1) − 30f (xi )


c) f 00 (xi ) ≈
12h2
f (xi − 1) − f (xi − 2)
+ 16
12h2
−0,5038 + 16(0,4627) − 30(0,4228)
f 00 (1, 20) ≈
12(0,1)2
(0,3840) − 0,3463
+ 16
12(0,1)2
0,0131
=
0,12
= 0,10916667

211
d) La respuesta es que la aproximación del apartado c) es la más precisa,
porque utiliza más terminos de la serie de Taylor y tiene un ordén 4.
Resolución en Matlab del ejercicio propuesto.

%Considere la siguiente tabulación de la función f (x) = tan(x/3) donde


%los valores están redondeados a cuatro cifras
valoresx = [1 1.1 1.2 1.3 1.4];
valoresf = [0 0.3463 0.3840 0.4627 0.5038];

h = 0.1;
h1 = 0.05;
num = 3;
plot(valoresx, valoresf, ’r’, valoresx(num), valoresf(num), ’x’);
num1=num+1;
num2=num-1;
num1 = num1 + 1;
num2 = num2 - 1;

disp(’Derivada central orden 2, con h=0,10’);


derivada = (valoresf(num1) - 2*valoresf(num) + valoresf(num2))/hˆ2;
disp(derivada);
disp(’Derivada central orden 2, con h=0,05’);
derivada1 = (valoresf(num1) - 2*valoresf(num) + valoresf(num2))/h1ˆ2;
disp(derivada1);
disp(’Derivada central orden 2, extendida con h=0,10’);
derivada2 = (-valoresf(num1) +16*valoresf(num1) - 30*valoresf(num)...
+ 16*valoresf(num2) - valoresf(num2))/(12*hˆ2);
disp(derivada2);

La respuesta de Matlab es:

Command Window
>>Ejemplo3
Derivada central orden 2, con h=0,10
0.110852841757425

Derivada central orden 2, con h=0.05


0.110774734224250

Derivada central orden 2, extendida con h = 0,10


0.10916667

π
Ejemplo C.5. Calcular la derivada de f (x) = sen(x) en x = 4
y con h = 0,01.

a) Diferencias hacia adelante, desde primer orden a cuarto orden

212
Código Matlab
%Ejemplo de propio basado en el ejemplo de diferencias centrales
%Derivadas numéricas diferencias hacia adelante
%subs -¿sustituye los valores de new en la variable por defecto de la función
%vpa -¿variable-presición arithmetic, muestra todos los decimales o un
%numero de decimales que se le indique, ejemplo -¿(vpa(valor, decimal)).

function y= DiferenciasAdelanteOrdenN
f=input(’Ingrese la función f= ’);
x0 = input(’Ingrese el punto donde desea evaluar la derivada: ’);
h=0.01;
f4=subs(f, x0+4*h);
f3=subs(f, x0+3*h);
f2=subs(f, x0+2*h);
f1=subs(f, x0+h);
f0=subs(f, x0);
primeraderivada=(f1-f0)/h;
segundaderivada=(f2-2*f1+f0)/h2̂;
terceraderivada=(f3-3*f2+3*f1-f0)/h3̂;
cuartaderivada=(f4-4*f3+6*f2-4*f1+f0)/h<4;
disp(’Primera drivada hacia adelante’)
disp(vpa(primeraderivada))
disp(’Segunda derivada hacia adelante’)
disp(vpa(segundaderivada))
disp(’Tercera derivada hacia adelante’)
disp(vpa(terceraderivada))
disp(’Cuarta derivada hacia adelante’)
disp(vpa(cuartaderivada))

Command Window
>>DiferenciasAdelanteOrdenN
Ingrese la funcion f= ’sin(x)’
Ingrese el punto donde desea evaluar la derivada: pi/4
Primera derivada hacia adelante
0.70355949168920325471852532002289
Segunda derivada hacia adelante
-0.71413642493659406062295344563857
Tercera derivada hacia adelante
-0.69641232399643703404697959614188
Cuarta derivada hacia adelante
0.7210945411902455828229525237988

b) Diferencias hacia atrás, desde primer a cuarto orden

π
Se utiliza la función f (x) = sen(x) en f (x) = 4
y con h = 0,01

213
Código en Matlab
%Ejemplo propio basado en el ejemplo de diferencias centrales
%Derivadas numéricas diferencias hacias atras
%subs -¿sustituye los valores de new en la variable con defectos de la función, luego
%vpa -¿variable-presición arithmetic, muestra todos los decimales o un
%número de decimales que se le indique, ejemplo -¿(vpa(valor, decimales)).

function y = DiferenciasAtrasOrdenN
f=input(’Ingrese la function f= ’);
x0 = input(’Ingrese el punto donde desea evaluar la derivada: ’);
h=0.01;
f4=subs(f, x0-4*h);
f3=subs(f, x0-3*h);
f2=subs(f, x0-2*h);
f1=subs(f, x0-h);
f0=subs(f, x0);
primeraderivada=(f0-f1)/h;
segundaderivada=(f0-2*f1+f2)/hˆ2;
terceraderivada=(f0-3*f1+3*f2-f3)/hˆ3;
cuartaderivada=(f0-4*f1+6*f2-4*f3+f4)/hˆ4
disp(’Primera derivada hacia atrás’)
disp(vpa(primeraderivada))
disp(’Segunda derivada hacia atrás’)
disp(vpa(segundaderivada))
disp(’Tercera derivada hacia atrás’)
disp(vpa(Terceraderivada))
disp(’Cuarta derivada hacia atrás’)
disp(vpa(cuartaderivada))

Command Window
DiferenciasAtrasOrdenN
Ingrese la funcion f= ’sin(x)’
Ingrese el punto donde desea evaluar la derivada: pi/4
Primera derivada hacia atrás
0.71063050057570439140748026419013
Segunda derivada hacia atrás
-0.69999464286271815126476403237083
Tercera derivada hacia adelante
-0.71762446674889305365105108958354
Cuarta derivada hacia adelante
0.69281262689271388621847191365536

Ejemplo C.6. Vamos a elegir una sucesión de puntos hn de forma que h → 0 y


analizar que ocurre con

214
f (a + hn ) − f (a)
Dn =
hn
Tomar f (x) = ex , a = 1 y utilizamos hn = 10−n para n desde 1 hasta 18.

Generar una tabla que muestre los valores de h y los valores de Dn . ¿Qué
observa si h es muy pequeño?

Código en Matlab
n=1:18;
h=10.ˆ(-n);
a=1;
x=a+h;
valorfn=exp(x);
numerador=valorfn-exp(a);
DN=numerador./h; format long
disp([ ’Incremento Numerador Aproximación’])
disp([h’ numerador’ DN’])

La respuesta de Matlab es:

Command Window
>>Progresiva 1
Incremento Numerador Aproximación
0.100000000000000 0.285884195487388 2.858841954873879
0.010000000000000 0.027319186557871 2.731918655787080
0.001000000000000 0.002719641422533 2.719641422532781
0.000100000000000 0.000271841774708 2.718417747078483
0.000010000000000 0.000027182954199 2.718295419912309
0.000001000000000 0.000002718283187 2.718283186986525
0.000000100000000 0.000000271828196 2.718281963964842
0.000000010000000 0.000000027182818 2.718281777447373
0.000000001000000 0.000000002718282 2.718281599811689
0.000000000100000 0.000000000271828 2.718278935276430
0.000000000010000 0.000000000027183 2.718270053492233
0.000000000001000 0.000000000002718 2.718270053492233
0.000000000000100 0.000000000000271 2.713385072183883
0.000000000000010 0.000000000000027 2.664535259100376
0.000000000000001 0.000000000000003 2.664535259100376
0.000000000000000 0 0
0.000000000000000 0 0
0.000000000000000 0 0

Como observa en la tabla, mientras más pequeño es h, el valor de la aproxi-


mación devuelto es más pequeño, hasta que en cierta iteracion llega a ser cero.

215
Calculando con diferencia hacia atrás, nos muestra los siguientes valores:

Código en Matlab
%Diferencia hacia atrás de f(x)=expˆx en n=18 iteraciones,
%siendo h=10ˆ-n evaluando en 1
n=1:18;
h=10.ˆ(-n);
a=1;
x=a-h;
valorfn=exp(x);
numerador=exp(a)-valorfn;
Dn=numerador./h;
format long
disp([’ Incremento Numerador Aproxima-
ción’]
disp([h’ Numerador’ Dn’])

Command Window
>>Regresiva1
Incremento Numerador Aproximación
0.100000000000000 0.258678717302096 2.586787173020957
0.010000000000000 0.027047356109783 2.704735610978304
0.001000000000000 0.002716923140479 2.716923140478667
0.000100000000000 0.000271814591890 2.718145918900738
0.000010000000000 0.000027182682371 2.718268237122957
0.000001000000000 0.000002718280470 2.718280469604650
0.000000100000000 0.000000271828169 2.718281693070423
0.000000010000000 0.000000027182819 2.718281866265215
0.000000001000000 0.000000002718282 2.718282043900899
0.000000000100000 0.000000000271828 2.718283376168529
0.000000000010000 0.000000000027183 2.718314462413218
0.000000000001000 0.000000000002719 2.718714142702083
0.000000000000100 0.000000000000272 2.722266856380884
0.000000000000010 0.000000000000028 2.753353101070388
0.000000000000001 0.000000000000003 3.108624468950438
0.000000000000000 0.000000000000000 4.440892098500626
0.000000000000000 0 0
0.000000000000000 0 0

Calculando con diferencia central nos muestra valores más exactos, ya que
toma valores de dos puntos para evaluar la función

216
Código en Matlab
%Diferencia central de f(x)=expˆx en n=18 iteraciones,
%siendo h=10ˆ-n evaluando en 1
n=1:18;
h=10.ˆ(-n);
a=1;
x=a-h;
x1=a+h;
valorfn1=exp(x1);
valorfn2=exp(x);
numerador=valorfn1-valorfn2;
Dn=numerador./(2*h);
format long
disp([’ Incremento Numerador Aproximación’]
disp([h’ Numerador’ Dn’])

Command Window
>>Central1
Incremento Numerador Aproximación
0.100000000000000 0.544562912789484 2.722814563947418
0.010000000000000 0.054266542667654 2.718327133382692
0.001000000000000 0.005436564563011 2.718282281505724
0.000100000000000 0.000543656366598 2.718281832989611
0.000010000000000 0.000054365636570 2.718281828517633
0.000001000000000 0.000005436563657 2.718281828295588
0.000000100000000 0.000000543656366 2.718281828517632
0.000000010000000 0.000000054366366 2.718281821856294
0.000000001000000 0.000000005436564 2.718281821856294
0.000000000100000 0.000000000543656 2.718281155722480
0.000000000010000 0.000000000054366 2.718292257952725
0.000000000001000 0.000000000005437 2.718492098097158
0.000000000000100 0.000000000000544 2.717825964282383
0.000000000000010 0.000000000000054 2.708944180085382
0.000000000000001 0.000000000000006 2.886579864025407
0.000000000000000 0.000000000000000 2.220446049250313
0.000000000000000 0 0
0.000000000000000 0 0

Comparando las 3 tablas, vemos la diferencia que hay con cada una de las 3 de-
rivaciones. Con la diferencia hacia atrás existe la mitad de error de truncamiento
que aplicando diferencia hacia adelante o hacia atrás.
Claramente el valor que entrega la diferencia central se ubica en la mitad de
los valores que están entre diferencia hacia adelante y diferencia hacia atrás

217
Ejemplo C.7. (a) La unidad de destello (flash) de una cámara opera por el ala-
macenamiento de carga de un capacitor y su liberación repentina al disparar
su unidad. Los datos de la tabla describen la carga Q que queda en el ca-
pacitor (medida en microcoulombios) en el tiempo t (medido en segundos).
use los datos para dibujar la gráfica de esta función y estime la pendiente
de la recta tangente en el punto donde t=0.04.

T Q
0.0 100.0
0.02 81.87
0.04 67.03
0.06 54.88
0.08 44.93
0.10 36.76

(b) Un modelo exponencial para la carga es Q = e4,6053−10,0055x . La derivada Q0 (t)


representa la corriente eléctrica que fluye del capacitor hacı́a el bulbo de la
lámpara del destello. Cálcula la corriente cuando t = 0,04sg. Comparar el
resultado con el obtenido en el apartado (a) y rellena la tabla para ver cuál
es el porcentaje de error de cada caso.

Resultados:

218
Código en Matlab

t=[0 0.03 0.04 0.06 0.08 0.1];


q=[100 81.87 67.03 54.88 44.93 36.76];
plot(t, q);
%Posición de instante a estudiar en el vector z
num = 3;
num1 = num+1;
num2 = num-1;
%Diferencia progresiva
disp(’Diferencia Progresiva’);
difProgresiva = (q(num1)-q(num))/(t(num1)-t(num));
disp(vpa(difProgresiva));
disp(’Diferencia Regresiva’);
difRegresiva = (q(num)-q(num2)) / (t(num)-t(num2));
disp(vpa(difRegresiva));
disp(’Diferencia Central’);
difCentral = (q(num1))-q(num2) / (t(num1)-t(num2));
disp(vpa(difCentral));
%Cálculo de Q0(t)
syms x
derivada=subs(diff(exp(4.6053-10.0055*x)), t(num));
disp(’Derivada’);
disp(vpa(derivada));

%Comparación
diferencias = [difProgresiva difRegresiva difCentral]

format long
porcentaje = vpa(abs((diferencias - derivada)/derivada)*100);
disp(’||||||||||||’);
disp(’Comparacion’);
titulos = [(’Progresiva Regresiva’)];
disp(titulos);
disp(diferencias : porcentaje)

219
Command Window
>>Derivada
Diferencia Progresiva
-607.5

Diferencia Regresiva
-742.0

Diferencia Central
-874.75

Derivada
-672.61293013183037673149612681251

coeficientes =

-10.0055 4.6053

—————————————
Comparación
Progresiva Regresiva Central
[ -1215/2, -742, -2699/4]
[ 9.6805944719302991349425925235178, 10.316047575025050274687401395144, 0.31772655154737556967240443581353]

>>

Ejemplo C.8. Hallar la Diferencia hacia adelante, hacia atrás y centrla ingresa-
do la función y el punto que se desea evaluar la derivada, desde la primera hasta
la cuarta derivada


f = ( x + 2x − 5)ln(x+1)

a) Diferencia hacia adelante

220
Código en Matlab

%Derivadas numericas - diferencias hacia adelante


%subs ->sustituye los valores de new en la variable
%por defecto de la funcion,
%luego se evalua la funcion
%vpa ->variable-precision arithmetic,
%numero de decimales que se le indique.
function y= DifHacDelOrdenN
f=input(’Ingrese la funcion f= ’)
x0 = input(’Ingrese el punto donde desea evaluar la derivada: ’)
h=0.001;
f4=subs(f,x0+4*h);
f3=subs(f,x0+3*h);
f2=subs(f,x0+2*h);
f1=subs(f,x0+h);
f0=subs(f,x0);
primeraderivada=(f1-f0)/h;
segundaderivada=(f2-2*f1+f0)/h^2;
terceraderivada=(f3-3*f2+3*f1-f0)/h^3;
cuartaderivada=(f4-4*f3+6*f2-4*f1+f0)/h^4;
disp(’Primera derivada hacia adelante’)
disp(vpa(primeraderivada))
disp(’Segunda derivada hacia adelante’)
disp(vpa(segundaderivada))
disp(’Tercera derivada hacia adelante’)
disp(vpa(terceraderivada))
disp(’Cuarta derivada hacia adelante’)
disp(vpa(cuartaderivada))

221
Command Window
>> DifHacDelOrdenN
Ingrese la función f= 0 (sqrt(x) + 2*x-5)ˆ(ln(x+1))0
Ingrese el punto donde desea evaluar la derivada: 2
Primera derivada hacia adelante
2.265711377470083543762682159744

Segunda derivada hacia adelante


1.41251462099839869311470875596

Tercera derivada hacia adelante


5.63272044980700410049042252

Cuarta derivada hacia adelante


-15.176588567617920350363147

b) Diferencia hacia atrás

Código en Matlab
%Derivadas numéricas - diferencias hacia atrás
%subs -¿sustituye los valores de new en la variable por defecto de la función,
%luego se evalúa la función
%vpa -¿variable-precision artihmetic, muestra todos los decimales o un
%número de decimales que se le indique, ejemplo -> (vpa(valor, decimales)).
function y = DifHaciaAtrOrdenN
f=input(0 Ingrese la función f= 0 );
x0=input(0 Ingrese el punto donde desea evaluar la derivada: 0 );
h=0.01;
f4=subs(f,x0-4*h);
f3=subs(f,x0-3*h);
f2=subs(f,x0-2*h);
f1=subs(f,x0-h);
f0=subs(f,x0);
primeraderivada=(f0-f1)/h; segundaderivada=(f0-2*f1+f2)/hˆ2;
terceraderivada=(f0-3*f1+3*f2-f3)/hˆ3;
cuartaderivada=(f0-4*f1+6*f2-4*f3+f4)/hˆ4;

disp(0 Primera derivada hacia atrás0 )


disp(vpa(primeraderivada);
disp(0 Segunda derivada hacia atrás0 )
disp(vpa(segundaderivada);
disp(0 Tercera derivada hacia atrás0 )
disp(vpa(terceraderivada);
disp(0 Cuarta derivada hacia atrás0 )
disp(vpa(cuartaderivada);

222
Command Window
>> DifHacAtrOrdenN
Ingrese la función f=0 (sqrt(x)+2*x-5)ˆ(ln(x+1)) 0
Ingrese el punto donde desea evaluar la derivada: 2
Primera derivada hacia atrás
2.252165522945801123615145728379

Segunda derivada hacia atrás


1.2949804092369113365073112656

Tercera derivada hacia atrás


6.13348526312051565442495172

Cuarta derivada hacia atrás


-17.485019643471229286297570

c) Diferencia Central

Código en Matlab
%Derivadas numéricas - diferencias centrales
%vpa -¿variable-precision artihmetic, muestra todos los decimales o un
%número de decimales que se le indique, ejemplo -> (vpa(valor, decima-
les)).
function y = DifCentralOrdenN
f=input(0 Ingrese la función f= 0 );
x0=input(0 Ingrese el punto donde desea evaluar la derivada: 0 );
h=0,01;
f2=subs(f,x0+2*h);
f1=subs(f,x0+h);
f0=subs(f,x0);
f 1=subs(f,x0-h);
f 2=subs(f,x0-2*h);
primeraderivada=(f1-f 1)/(2*h);
segundaderivada=(f1-2*f0+f 1)/hˆ2;
terceraderivada=(f2-2*f1+2*f 1-f 2)/(2*hˆ3;
cuartaderivada=(f2-4*f1+6*f0-4*f 1+f 2)/hˆ4;

disp(0 Primera derivada central0 )


disp(vpa(primeraderivada);
disp(0 Segunda derivada central0 )
disp(vpa(segundaderivada);
disp(0 Tercera derivada central0 )
disp(vpa(terceraderivada);
disp(0 Cuarta derivada central0 )
disp(vpa(cuartaderivada);

223
Command Window
>> DifCentralOrdenN
Ingrese la función f=0 (sqrt(x)+2*x-5)ˆ(ln(x+1)) 0
Ingrese el punto donde desea evaluar la derivada: 2
Primera derivada central
2.25884150635851761663523996236

Segunda derivda central


1.35472392167766721889802862

Tercera derivada central


5.87506062086288199115569

Cuarta derivada central


-16.79014371150081850263

C.4. Fórmula de Richardson

Ejemplo C.9. Vamos a utilizar la extrapolación de Richardson para mejorar la


precisión al momento de calcular la derivada de f (z) = sen(z) en z = 0,5 con un
paso h = 0,01 y una tolareancia (o error máximo) de 10−6 .

Solución del ejercicio en Matlab

224
Código Matlab

function richardson
global fun
format long
fun = input(’ingrese la funcion’,’s’);
x0 = input(’ingrese el valor de x0 ’);
h= input(’ingrese el valor de h ’);
tol= input(’ingrese la tolerancia ’);
err=1;
j=1;
x=x0+h;
f1 = eval(fun);
x=x0-h;
f2 = eval(fun);
D(1, 1)=(f1-f2)/(2*h);
while(err>tol)
h=h/2;
x=x0+h;
f3=eval(fun);
x=x0-h;
f4 = eval(fun);
D(j+1,1)=(f3-f4)/(2*h);
for k=1: j
D(j+1, k+1)=((4^k) * D(j+1, k)- D(j, k)) / ((4^k)-1);
end
err=abs(D(j+1,j+1) - D(j, j));
j=j+1;
end
[ n, n ] = size (D);
D
fprintf(’el valor aproximado calculado es:’)
D(n,n)

Command Window
>>richardson
Ingrese la funcion
sin(x)
ingrese el valor de x0
0.5
ingrese el valor de h
0.01 ingrese la tolerancia
10^(-6)

225
D=
0.876120655431924 0 0
0.877216948194290 0.877582379115078 0
0.877491149896850 0.877582550464370 0.877582561887655

el valor aproximado calculado es: 0.877582561887655 >>

Ejemplo C.10. Use la Extrapolación de Richardson para aproximar f 0 (0,5) sien-


do f (x) = 7 + 2,5x − 3,4x2 + 4x3 .

Solución con Matlab: Solamente tenemos que usar la función anterior y meter
en la ventana de Comandos de Window:

Command Window
>> ExtraRichard Ingrese la funcion f= 7+2.5*x-3.4*(xˆ2)+4*(xˆ3)
Ingrese el punto donde desea evaluar= 0.5

Nota C.2. Se anima al lector a introducir códigos para la segundas derivas, o


primeras derivadas de mayor y a experimentar con diferentes valores y diferentes
funciones.

C.5. Ejercicios propuestos


Con los ejemplos (o ejercicios resueltos) de este apéndice el lector puede tener
una idea de los problemas que puede resolver y cómo. Además, como ya hemos
comentado, la literatura sobre derivación numérica es amplı́sima y además existe
gran variedad de material en Internet. Por tanto, aquı́ proponemos unos pocos
ejercicios al lector a la vez que le animo a la consulta de otros textos. En las
referencias del capı́tulo de derivación numérica podemos encontrar algunos de
estos ejercicios ası́ como otros de elaboración propia.

Ejercicio C.1. Hallar los coeficientes ai para que las siguientes fórmulas de
derivación numérica sean exactas en Pk :

   
0 1 1
f ≈ a1 f (0) + a2 f , k = 1.
2 2
 
0 1
f (3) ≈ a1 f (0) + a2 f + a2 f (2) + a3 f (3), k = 3.
2
 
00 1
f (1) ≈ a1 f (0) + a2 f + a2 f (1), k = 2.
2

226
Ejercicio C.2. Hallar los coeficientes ai para que las siguientes fórmulas de
derivación numérica sean interpolatorias:

 
0 a+b
f ≈ a1 f (a) + a2 f (b) ,
2
 
00 a+b
f ≈ a1 f (a) + a2 f (b) .
2

¿Qué particularidad tiene la solución de este último apartado? ¿Cuál es el error?

Ejercicio C.3. Se necesita calcular la derivada de una función f (x) = 4xsen(x2 )


en x = 1 y un tamaño de paso h = 0,5. Realizar el cálculo con todas las fórmulas
de derivación vistas en el desarrollo del capı́tulo.

Ejercicio C.4. Dada la función f (x) = 4x3 + x2 − 5x + 3, estime en el punto


x = 0,5 empleando un paso h = 0,01 y el algoritmo de Richardson (use una
tolerancia 10−9 ). Determine el valor real y calcule el error cometido. ¿Qué puede
decir al respecto?

x3 −1
Ejercicio C.5. Tomar f (x) = 4x
y aproximar f 0 (3) mediante la fórmula de
derivación numérica
f (x + h) − f (x)
Df (x) ≈ ,
hn
siendo hn = 5−n . Mostrar una tabla con n = 1, 2, . . . , 12 y comparar el error
cometido con cada valor de n. ¿Qué pasa cuando n es grande?

Ejercicio C.6. Para f (t) = ln(t2 ) calcular aproximadamente f (−1) por medio
de una fórmula de derivación numérica de tipo interpolatorio con tres puntos
equiespaciados. Obtener el error real y comparar con el error teórico.

Ejercicio C.7. De una determinada función f (t) se conocen los siguientes datos:

t 0 5 10 15 20
f (t) −1,2 3,2 0,75 1 1,9

(a) Estimar f 0 (5) y f 00 (15) con una fórmula de orden 2.

(b) ¿Puede estimar f 0 (0) con una fórmula de orden 2?, ¿y f 0 (10)?, ¿y f 00 (20)?
En los casos que pueda, hágalo.

227
Ejercicio C.8. Para un circuito con voltaje impreso ε(t) e inductancia L, la
primera ley de Kirchoff dice que
∂i
ε=L + Ri,
∂t
donde R es la resistencia del circuito e i es la corriente. Se ha obtenido la
siguiente tabla:

t 1,00 1,01 1,02 1,03 1,04


i(t) 3,10 3,12 3,14 3,18 3,24

donde t se mide en segundos, i en amperios, L = 0,98 henreis y R = 0,142 ohms.


Aproximar el voltaje ε en los tiempos t = 1, t = 1,01, t = 1,02, t = 1,03 y t = 1,04
usando las fórmulas apropiadas de tres puntos.

Ejercicio C.9. Dada f (t) = tet aplicar extrapolación de Richardson para calcular
f 0 (2) empezando con h = 1 y una tolerancia de 10−8 . Realizar lo mismo con
2
g(t) = et .

228
Apéndice D

En este Apéndice D vamos a escribir todas las implementaciones en Matlab


que han sido necesarias durante el desarrollo del Capı́tulo 4.

D.1. Implementaciones secciones 4.2.1-4.2.5.


Durante dichas secciones hemos tomado la función f (t) = e−t sen(5t) + 1, y
hemos aproximado la integral:
Z 2
e−t sen(5t) + 1 dt

0

Como ya hemos explicado durante el desarrollo del capı́tulo 4, para ejemplifi-


car todos nuestros métodos numéricos hemos tomado una función f a la cuál se
le puede calcular unaZ primitiva sencilla, y por tanto el valor real.
5e−t cos(5t) e−t sen(5t)
e−t sen(5t) + 1 dt = t −

Es facil ver que − y por
26 26
tanto
Z 2  
−t
 1 5 cos(10) + sen(10)
e sen(5t) + 1 dt = 57 − = 2,216977121782524.
0 26 e2

Dicho valor se calcula en Matlab de la siguiente manera:

valorreal = 1/26 * (57 - (5* cos(10) + sin(10))/exp(1)^2)

Con ese comando calculamos el valor real de nuestra integral. Antes de pasar
a ver todos los ejemplos, es muy importante recordar como definir una función
en matlab, veamos como definir nuestra función f (t):

f=@(x)exp(-x).*sin(5.*x)+1;

Y para evaluar una función en un punto a solo hay que hacer feval(f,a).
Es importante destacar que la definición de f y la evaluación tiene que
estar en el mismo script.

Ejemplo Rectángulo a Izquierda

229
f=@(x)exp(-x).*sin(5.*x)+1;
a=0;
b=2;
ri=(b-a)*feval(f,a)
errorizqierda=abs(valorreal-ri)

Ejemplo Rectángulo a Derecha

f=@(x)exp(-x).*sin(5.*x)+1;
a=0;
b=2;
rd=(b-a)*feval(f,b)
errorderecha=abs(valorreal-rd)

Ejemplo Punto Medio

f=@(x)exp(-x).*sin(5.*x)+1;
a=0;
b=2;
pm=(b-a)*feval(f,(a+b)/2)
errorpuntomedio=abs(valorreal-pm)

Ejemplo Trapecios

f=@(x)exp(-x).*sin(5.*x)+1;
a=0;
b=2;
tra=(b-a)/2*(feval(f,a)+feval(f,b))
errortrapecios=abs(valorreal-tra)

Ejemplo Simpson

f=@(x)exp(-x).*sin(5.*x)+1;
a=0;
b=2;
sim=(b-a)/6*(feval(f,a)+4*feval(f,(a+b)/2)+feval(f,b))
errorsimpson=abs(valorreal-sim)

D.2. Fórmulas de cuadratura compuestas


En esta sección es muy importante destacar que el valor de n es exactamente el
número de nodos, a diferencia de los apuntes. También hay que tener en cuen-
ta que Matlab no empieza numerando desde cero como nosotros en los apuntes,
el primer valor es x1 = a y por tanto xn = b. En las siguientes implementaciones,
desde la implementacion D.2.1 hasta D.2.5 usamos la siguiente notación: f es la
función que queremos integrar, a y b son los extremos del intervalo [a, b], y n es
el número de nodos que vamos a usar.

230
D.2.1. Rectángulo a Izquierda Compuesto
function r=RIC(f,a,b,n)
h=(b-a)/(n-1);
v=(a:h:a+(n-2)*h);
tm=feval(f,v);
r=h*sum(tm);

D.2.2. Rectángulo a Derecha Compuesto


function r=RDC(f,a,b,n)
h=(b-a)/(n-1);
v=(a+h:h:a+(n-1)*h);
tm=feval(f,v);
r=h*sum(tm);

D.2.3. Punto Medio Compuesto


function r=PMC(f,a,b,n)
h=(b-a)/(n-1);
v=(a+h/2:h:a+(n-2)*h+h/2);
tm=feval(f,v);
r=h*sum(tm);

D.2.4. Trapecios Compuesto


function r=TrapeciosComp(f,a,b,n)
h=(b-a)/(n-1);
v=(a+h:h:a+(n-2)*h);
tm=feval(f,v);
r=h*((feval(f,a)/2)+sum(tm)+(feval(f,b)/2));

D.2.5. Simpson Compuesto


function r=SimpsonComp(f,a,b,n)
% n es el número de nodos, por tanto n debe ser impar.
h=(b-a)/(n-1);
vimp=(a+2*h:2*h:a+(n-2)*h);
vpar=(a+h:2*h:a +(n-2)*h);
ti=feval(f,vimp);
tp=feval(f,vpar);
r=(h/3)*(feval(f,a)+4*sum(tp)+2*sum(ti)+feval(f,b));

D.3. Ejemplos resueltos


En esta sección vamos a ver ejercicios tı́picos y su resolución con ayuda de
Matlab. Incluso en los casos que se pueda veremos representaciones gráficas para

231
una mejor comprensión de lo que estamos haciendo.

Ejemplo D.1. Calcula una cota del error cometido al aproximar


Z 2
e−t sen(5t) + 1 dt

0

por medio de la Regla del Rectángulo a Izquierda.

Solución: Vamos a calcular f 0 (t), en este caso

f 0 (t) = e−t (5 cos(5t) − sen(5t)) t ∈ [0, 2].


Ahora debemos acotar la función f 0 (t) en el intervalo [0, 2]. Es importante recordar
que toda función continua (como en este caso) en un intervalo cerrado y acotado
tiene máximo y mı́nimo. Dicho máximo se encontrará donde se anule la derivada
de la función que estamos trabajando o en los puntos extremos del intervalo, en
este caso, x = 0 o en x = 2. Vamos derivar la función que estamos trabajando e
igualamos a cero para buscar los puntos crı́ticos:

f 00 (t) = −2e−t (5 cos(5t) + 12sen(5t)),


igualando a cero, y recordando que la función exponencial no se anula nunca
tenemos

5 cos(5t) + 12sen(5t) = 0,
5 cos(5t) = −12sen(5t),
−5 sen(5t)
= = tan(5t),
12 cos(5t)
   
1 5
t = − arctan + kπ .
5 12

con k ∈ Z.
Los valores que están dentro del intervalo [0, 2] son cuando

k=1 ⇒ t = 0,54936 ⇒ |f 0 (0,54936)| = 2,88659,


k=2 ⇒ t = 1,17768 ⇒ |f 0 (1,17768)| = 1,53996,
k=3 ⇒ t = 1,70591 ⇒ |f 0 (1,70591)| = 0,82155.

Además, es necesario ver el valor de f 0 (t) en los extremos, en este caso, |f 0 (0)| = 5
y |f 0 (2)| = 0,494155. Por lo tanto tomamos como máx{|f 0 (t)| : t ∈ [0, 2]} = 5. Y
ya estamos en condicines de dar una cota del error cometido:

(2 − 0)2
|ERI (f )| ≤ 5 = 10. 2
2
232
Nota D.1. Es importante destacar que siempre el error teórico (que es el que
acabamos de calcular) va a ser mayor o igual que el error real cometido (comparar
con el error calculado en la sección 4.2.1). Hay que pensar que en la mayorı́a de
los casos no vamos a disponer del error real, por lo tanto, solo dispondremos de
la cota que acabamos de calcular.
Nota D.2. En el Ejemplo D.1 hemos sido capaces de resolver la ecuación

−2e−t (5 cos(5t) + 12sen(5t)) = 0.

No siempre vamos a ser capaces de hacerlo. Otra posiblidad es dar una cota de la
función |f 0 (t)| un poco más burda, por ejemplo:

|f 0 (t)| = |e−t (5 cos(5t) − sen(5t))|


= |e−t | · |5 cos(5t) − sen(5t)|
≤ |e−t | · (|5 cos(5t)| + |sen(5t)|)
≤ 6|e−t |,

Donde hemos usado que las funciones sen(t) y cos(t) están acotadas por 1. Por
último, usando que la función e−t es decreciente, es claro que el máximo lo en-
contramos cuando t = 0, por tanto, obtenemos que máx{|f 0 (t)| : t ∈ [0, 2]} ≤ 6
y por consiguiente ERI (f ) = 12. Dependiendo de nuestros intereses, daremos una
cota más optima o no.
Ejemplo D.2. Dar una cota del error cometido al aproximar
Z 2
e−t sen(5t) + 1 dt

0

por el método del Punto Medio.


Solución: Para acotar el error necesitamos calcular f 00 (ξ) = máx{|f 00 (t)| : t ∈
[0, 2]}, procediendo de forma similar al ejemplo anterior, derivamos la función e
igualamos a cero.

f 000 (t) = e−t (−110 cos(5t) + 74sen(5t))

−110 cos(5t) + 74sen(5t) = 0,


110 cos(5t) = 74sen(5t),
110 sen(5t)
= = tan(5t),
74 cos(5t)
   
1 55
t = arctan + kπ .
5 37

con k ∈ Z.
Los valores que están dentro del intervalo [0, 2] son cuando

233
k=0 ⇒ t = 0,19572 ⇒ |f 00 (0,19572)| = 20,9631,
k=1 ⇒ t = 0,82404 ⇒ |f 00 (0,82404)| = 11,1836,
k=2 ⇒ t = 1,45236 ⇒ |f 00 (1,45236)| = 5,9663.

Además, es necesario ver el valor de f 00 (t) en los extremos, en este caso, |f 00 (0)| =
10 y |f 00 (2)| = 2,90257. Por lo tanto tomamos como máx{|f 00 (t)| : t ∈ [0, 2]} =
20,9631. Y ya estamos en condicines de dar una cota del error cometido:

(2 − 0)3
|EP M (f )| ≤ 20,9631 = 6,9877. 2
24
Nota D.3. Siguiendo los mismos pasos que en la Nota D.2, podemos obtener una
cota menos fina,

f 00 (t) = −2e−t (5 cos(5t) + 12sen(5t)) ⇒ |f 00 (t)| ≤ 2(5 + 12) = 34.

Nota D.4. Otra opción, si disponemos de Matlab puede ser dibujar la gráfica de
f 00 (t) = −2e−t (5 cos(5t) + 12sen(5t)) en el intervalo [0, 2] y aproximar la cota, por
ejemplo, veamos la gráfica de f 00 (t):

Figura D.1: Representación de f 00 (t) = −2e−t (5 cos(5t) + 12sen(5t)).


15

10

−5

−10

−15

−20

−25
0 0.5 1 1.5 2

Fuente: Elaboración propia.

En la Figura D.1 vemos la representación de f 00 (t) y en la siguiente Figura D.2


vemos el valor absoluto de f 00 (t). Es facil ver que |f 00 (t)| ≤ 25. Incluso afinando
un poco podemos decir que es menor que 22.5 (recodar que el valor mayor es
20.9631). Acabamos de mostrar otra manera rápida de obtener una cota para el
error que queremos calcular.
Los códigos de Matlab de estas dos gráficas han sido:
xx=(0:0.001:2);

234
Figura D.2: Representación de |f 00 (t)|.
25

20

15

10

0
0 0.5 1 1.5 2

Fuente: Elaboración propia.

yy=-2*exp(-xx).*(5.*cos(5*xx)+12.*sin(5*xx));
plot(xx,yy), grid on

figure
plot(xx,abs(yy)), grid on

Ejemplo D.3. Dar una cota del error cometido al aproximar por Trapecios
Z 2
e−t sen(5t) + 1 dt.

0

Solución: Usando los cálculos del Ejemplo D.2 tenemos que

(b − a)3 (2 − 0)3
|ET (f )| = f 00 (ξ) = 20,9631 = 13,9754. 2
12 12

Ejemplo D.4. Dar una cota del error cometido al aproximar por Simpson
Z 2
e−t sen(5t) + 1 dt.

0

Solución: Vamos a seguir los pasos vistos en la Nota D.4, directamente vemos
la gráfica de f (4) (t) en el intervalo [0, 2].

235
Figura D.3: Representación de f (4) (t) = e−t (480 cos(5t) + 476sen(5t)).

600

500

400

300

200

100

−100

−200

−300

−400
0 0.5 1 1.5 2

Fuente: Elaboración propia.

Figura D.4: Representación de |f (4) (t)|.

600

500

400

300

200

100

0
0 0.5 1 1.5 2

Fuente: Elaboración propia.

En la figura D.3 vemos la representación de f (4) (t) y en la figura D.4 vemos su


valor absoluto. Es facil ver que (aunque no es la cota más optima) |f (4) (t)| ≤ 600.
Por lo tanto, una buena cota del error cometido es

236
(2 − 0)5
|ES (f )| ≤ 600 = 6,6667. 2
2880
Los códigos de Matlab de estas dos gráficas han sido:

xx=(0:0.001:2);
f4=exp(-xx).*(480.*cos(5.*xx)+476.*sin(5.*xx));
figure
plot(xx,f4), grid on
figure
plot(xx,abs(f4)), grid on

R2
e−x sen(5t) + 1 dt usan-

Ejemplo D.5. Calcula una aproximación de I(f ) = 0
do:

(a) La cuadratura del Rectángulo a Izquierda compuesta con 6 nodos (n = 5).


Además, obtén una interpretación geométrica y una cota del error cometido.

(b) La cuadratura del Rectángulo a Izquierda compuesta con 11 nodos (n = 10).


Además, obtén una interpretación geométrica y una cota del error cometido.

(c) La cuadratura del Rectángulo a Derecha compuesta con 11 nodos (n = 10).


Además, obtén una interpretación geométrica y una cota del error cometido.

Solución:

Apartado (a): Primero es necesario calcular el valor de h y los nodos,


2−0 x0 = 0; x1 = 0,4; x2 = 0,8;
h= = 0,4 ⇒
5 x3 = 1,2; x4 = 1,6; x5 = 2.
Ası́,

IRIC (f ) = 0,4· f (0)+f (0,4)+f (0,8)+f (1,2)+f (1,6) = 2,109759631565586.

El código en Matlab es muy sencillo, solo hay que poner RIC(f,0,2,5) y la


función RIC se puede encontrar en el Apéndice D.2.1. Una interpretación
geometrica es muy sencilla, estamos calculando el área del rectángulo de
altura f (xi ) y de anchura h para cada i ∈ {0, 1, . . . , n − 1}. En el siguiente
gráfico se muestra muy bien lo que se acaba de decir:

237
Figura D.5: Cuadratura del Rectángulo a Izquierda Compuesto con 6 nodos.
ⅇ-x sin(5 x) + 1

1.5

1.0

0.5

0.0
0.5 1.0 1.5 2.0

Fuente: Elaboración propia.

Por último, para el error cometido usamos que (ver Ejemplo D.1) f 0 (ξ) = 5,
por tanto
(2 − 0)5
ERIC (f ) = 0,4 = 2.
2
Nota: Compara la gráfica y el error obtenido en este apartado con la Figura
4.1 y el Ejemplo D.1.
Apartado (b): Directamente usando Matlab, escribimos el codigo RIC(f,0,2,11)
y obtenemos

IRIC (f ) = 2,205761648668779.

Veamos geométricamente como los rectángulos al ser más estrechos se ajus-


tan mejor a la gráfica:

Figura D.6: Cuadratura del Rectángulo a Izquierda Compuesto con 11 nodos.


ⅇ-x sin(5 x) + 1

1.5

1.0

0.5

0.0
0.5 1.0 1.5 2.0

Fuente: Elaboración propia.

238
En este caso h = 0,2 asi que el error queda

(2 − 0)5
ERIC (f ) = 0,2 = 1.
2

Nota: Recuerda que el valor real es 2.216977121782524, compara el apar-


tado (a) y el (b). Observa y compara las Figuras D.5 y D.6.
Apartado (c): En este caso h = 0,2 como en el apartado anterior. Primero,
el error lo tenemos calculado en el apartado anterior y podemos decir que
ERDC (f ) = (2−0)5
2
0,2 = 1. Para calcular el valor deseado usamos Matlab y
el código a introducir es RDC(f,0,2,11), donde la implementación de la
cuadratura del Rectángulo a Derecha Compuesta se puede encontrar en el
Apéndice D.2.2, el resultado obtenido es

IRDC (f ) = 2,191036598442997.

Finalmente, mostramos como queda la aproximación de la integral:

Figura D.7: Cuadratura del Rectángulo a Derecha Compuesto con 11 nodos.


ⅇ-x sin(5 x) + 1

1.5

1.0

0.5

0.0
0.5 1.0 1.5 2.0

Fuente: Elaboración propia.


R2
Ejemplo D.6. Calcula una aproximación de I(f ) = 0 e−x sen(5t) + 1 dt usan-


do la cuadratura del Punto Medio Compuesta con 11 nodos (n = 10). Además,


obtén una interpretación geométrica y una cota del error cometido.
Solución: Usando Matlab podemos calcular una aproximación con el núme-
ro de nodos que queramos (ver implementación en el Apéndice D.2.3). Sola-
mente es necesario poner PMC(f,0,2,11) y obtenemos que la aproximación es:
2,226365557528709. Una cota del error viene dada por

h2 00 (2/10)2
EP M C (f ) = (b − a)f (ξ) = · 2 · 20,9631 = 0,069877,
24 24
donde hemos usado que f 00 (ξ)) = máx{|f 00 (t)| : t ∈ [0, 2]} = 20,9631 (ver Ejemplo
D.2). Por último, la interpretación geométrica,

239
Figura D.8: Cuadratura del Punto Medio Compuesto con 11 nodos.
ⅇ-x sin(5 x) + 1

1.5

1.0

0.5

0.0
0.5 1.0 1.5 2.0

Fuente: Elaboración propia.

R2
e−x sen(5t) + 1 dt usan-

Ejemplo D.7. Calcula una aproximación de I(f ) = 0
do:

(a) La cuadratura de Trapecios Compuesta con 5 nodos (n = 4). Además, obtén


una interpretación geométrica y una cota del error cometido.

(b) La cuadratura de Trapecios Compuesta con 11 nodos (n = 10). Además,


obtén una interpretación geométrica y una cota del error cometido.

(c) La cuadratura de Trapecios Compuesta con 1000 nodos (n = 999) y una cota
del error cometido.

Solución:

Apartado (a): El código de Trapecios Compuesto lo tenemos en el Apéndi-


ce D.2.4. La función f (t) ya fue definida con anterioridad, solo es necesario
escribir en R 2Matlab TrapeciosComp(f,0,2,5) y obtenemos que aproxima-
damente 0 e−x sen(5t) + 1 dt ≈ 2,091353318783359. Por otro lado, usando


que f 00 (ξ) = 20,9631,

h2 00 (2/4)2
ET C (f ) = (b − a)f (ξ) = · 2 · 20,9631 = 0,8734625.
12 12
Por último, veamos una representación geométrica de lo que estamos cal-
culando.

240
Figura D.9: Cuadratura de Trapecios Compuesto con 5 nodos.
2.0
ⅇ-x sin(5 x) + 1

1.5

1.0

0.5

0.5 1.0 1.5 2.0

Fuente: Elaboración propia.

Apartado (b): Introduciendo en Matlab TrapeciosComp(f,0,2,11) el


valor aproximado buscado es 2,198399123555888 y la cota del error viene
dada por:

h2 00 (2/10)2
ET C (f ) = (b − a)f (ξ) = · 2 · 20,9631 = 0,139754.
12 12
Como vamos a observar en la siguiente gráfica, la aproximación se ajusta
bastante bien a la gráfica.

Figura D.10: Cuadratura de Trapecios Compuesto con 11 nodos.


2.0
ⅇ-x sin(5 x) + 1

1.5

1.0

0.5

0.5 1.0 1.5 2.0

Fuente: Elaboración propia.

Apartado (c):
R 2 Introducimos en Matlab TrapeciosComp(f,0,2,1000) y
−x
nos devuelve 0 e sen(5t) + 1 dt ≈ 2,216975286726751. Importante re-

241
cordar que el valor real es 2,216977121782524. Veamos una cota del error:

h2 (2/999)2
ET C (f ) = (b − a)f 00 (ξ) = · 2 · 20,9631 = 1,40033927 × 10−5 .
12 12

El error real cometido es

|2,216975286726751 − 2,216977121782524| = 1,8350558 × 10−6 ,

siempre más pequeño que la cota que acabamos de calcular. 2

Ejemplo R 2 D.8. ¿Cuantosnodos hay que usar para asegurar que al aproximar
−x
I(f ) = 0 e sen(5t) + 1 dt por el método de Trapecios Compuesto cometemos
un error menor 10−8 ? ¿Y usando la cuadratura del Rectángulo a Izquierda Com-
puesta?

Solución: El método de resolución es muy sencillo, usamos la fórmula del error


para Trapecios Compuesto y lo primero que calculamos es f 00 (ξ) = máx{|f 00 (t)| :
t ∈ [0, 2]}, que en este caso es f 00 (ξ) = 20,9631. Vamos a recordar la expresión del
error para Trapecios Compuesto y nuestro objetivo es conseguir un error menor
de 10−8 .

h2
ET C (f ) = (b − a)f 00 (ξ) ≤ 10−8 ,
12
h2
(2 − 0)20,9631 ≤ 10−8 ,
12
ahora usamos que h = b−a n
, y nuestro objetivo es despejar n y ası́ conocer el
número de nodos necesarios,

h2
(2 − 0)20,9631 ≤ 10−8 ,
12
(2 − 0)2
× 2 × 20,9631 ≤ 10−8 ,
12n2
4
−8
× 2 × 20,9631 ≤ n2 ,
r 12 × 10
4
× 2 × 20,9631 ≤ n,
12 × 10−8
3,73837 × 104 ≤ n.

Tomando n = 37384, es decir, 37385 nodos podemos asegurar un error menor de


10−8 .
En el caso del Rectángulo a Izquierda Compuesto, recordamos que ERIC (f ) =
(b−a)f 0 (ξ)
2
h, y para este caso, f 0 (ξ) = 5. Procedemos de forma similar,

242
(b − a)f 0 (ξ)
ERIC (f ) = h ≤ 10−8 ,
2
(2 − 0)5
h ≤ 10−8 ,
2
(2 − 0)5 2 − 0
≤ 10−8 ,
2 n
10
= 109 ≤ n.
10−8
Por tanto, tomando 1000000001 nodos aseguramos un error menor del reque-
rido.
R2
e−x sen(5t) + 1 dt usan-

Ejemplo D.9. Calcula una aproximación de I(f ) = 0
do:

(a) La cuadratura de Simpson Compuesta con 5 nodos (n = 4) y una cota del


error cometido.

(b) La cuadratura de Simpson Compuesta con 15 nodos (n = 14) y una cota del
error cometido.

Solución:

Apartado (a): El código de Simpson Compuesto lo tenemos en el Apéndi-


ce D.2.5. La función f (t) ya fue definida, asi que solo es necesario escri-
birRen Matlab SimpsonComp(f,0,2,5) y obtenemos que aproximadamen-
2
te 0 e−x sen(5t) + 1 dt ≈ 2,251664808995565. Por otro lado, usando que


f (4) (ξ) ≤ 600,

h4 (4) (2/4)4
ESC (f ) = (b − a)f (ξ) = · 2 · 600 = 0,4166667.
180 180

Apartado (b): Escribimos Ren Matlab SimpsonComp(f,0,2,15) y obtene-


2 −x

mos que aproximadamente 0 e sen(5t) + 1 dt ≈ 2,217258773071384. Y
el error queda

h4 (2/14)4
ESC (f ) = (b − a)f (4) (ξ) = · 2 · 600 = 0,00277662. 2
180 180

EjemploR D.10. ¿Cuantosnodos hay que usar para asegurar que al aproximar
2
I(f ) = 0 e−x sen(5t) + 1 dt por el medio de Simpson Compuesto tenemos 6
cifras decimales exactas?

Solución: Para asegurar que hay 6 cifras decimales exactas, basta con asegurar
que el error es ≤ 0,5 × 10−6 . Procemos de forma similar al Ejemplo D.8. Lo
primero es recordar que en este caso f (4) (ξ) = 600, con ello

243
ESC (f ) ≤ 0,5 × 10−6 ,
h4
(b − a)f (4) (ξ) ≤ 0,5 × 10−6 ,
180
(b − a)4
(b − a)f (4) (ξ) ≤ 0,5 × 10−6 ,
180n4
(2 − 0)4
4
(2 − 0)600 ≤ 0,5 × 10−6 ,
180n
r
320
4
≤ n,
3 × 0,5 × 10−6
120,855 ≤ n.

Por tanto, serı́a suficiente con tomar n = 121, pero como n debe de ser par, hay
que tomar n = 122, es decir, 123 nodos.
Si escribimos SimpsonComp(f,0,2,123) nos devuelve 2.216977168769684, si
recordamos que el valor real era 2.216977121782524, claramente acabamos de
obtener 7 cifras decimales exactas (con nuestros cálculos asegurabamos 6). 2

D.4. Método de Romberg


Este algoritmo de Romberg devuelve R que es la matriz con los valores de
la integral, y V que es la matriz de estimación de errores que cometemos en
cada iteración (por ello tiene una columna menos que la matriz R). Si en Matlab
solo escribimos RombergEFI(f,a,b,N,k) nos devolverá la matriz R, si escribimos
[R,V]=RombergEFI(f,a,b,N,k) nos devolverá las dos matrices.

function [R,V]=RombergEFI(f,a,b,N,k)
& N: número de nodos para trapecios compuesto inicializador
% k: número de iteraciones de Romberg (número de filas +1)
% R: tabla de Romberg
h=(b-a)/N;
R(1,1)=TrapeciosComp(f,a,b,N);
i=2;
while i<=k+1
h=h/2;
x=a+h:2*h:b-h;
y=feval(f,x);
R(i,1)=R(i-1,1)/2+h*sum(y);
for j=2:i
R(i,j)=(4^(j-1)*R(i,j-1)-R(i-1,j-1))./(4^(j-1)-1);
V(i-1,j-1)=(R(i,j-1)-R(i-1,j-1))./(4^(j-1)-1);
end
i=i+1;
end

244
EjemploR 2 D.11. Aplique 4 iteraciones del algoritmo de Romberg para aproximar
I(f ) = 0 e−x sen(5t) + 1 dt y muestre en una tabla los errores estimados que se
producen.
Solución: Escribiendo en Matlab [R,V]=RombergEFI(f,0,2,20,4) obtenemos
las dos tablas pedidas, la matriz R nos dá la aproximación que estamos buscando
y la matriz V una estimación del error producido.

2,21188399
2,21558231 2,21681509
R = 2,21656632 2,21689432 2,21689960
2,21684329 2,21693561 2,21693836 2,21693898
2,21692809 2,21695636 2,21695774 2,21695805 2,21695812

0,0012327747
0,0003280010 0,0000052820
V =
0,0000923229 0,0000027527 0,0000006153
0,0000282682 0,0000013833 0,0000003076 0,0000000748

Por tanto, tomamos como mejor aproximación 2,21695812 y estamos come-


tiendo un error aproximado de 7,48 × 10−8 . Es importante destacar la gran velo-
cidad del algoritmo, solo hemos usado 4 iteraciones de Romberg y hemos comen-
zado con un Trapecios Compuesto de 20 nodos, y obtenemos un error del orden
de 10−8 . Se deja como ejercicio al lector probar a poner más iteraciones o incluso
poner más nodos en el Trapecios Compuesto inicializador.

D.5. Ejemplo de Cuadratura de Trapecios Adap-


tativa
Z 2
e−t sen(5t) + 1 dt

Ejemplo D.12. Vamos a calcular una aproximación de
0
con un error estimado ≤ ε = 0,05 usando Trapecios Adaptativo.
Solución: Aplicamos el Paso 1 y mostramos los resultados en la siguiente tabla:

Subintervalo h G0,0 G1,0 d G1,1


[0, 2] 1 1,926375 1,610419 −0,105319 1,505100

Como |d| ≥ 0,05 subdividimos el intervalo y aplicamos lo mismo en cada uno


de ellos. Obtenemos:

Subintervalo h G0,0 G1,0 d G1,1


[0, 1] 1/2 0,823616 1,093304 0,089900 1,183200
[1, 2] 1/2 0,786803 0,998050 0,070415 1,068465

245
Ahora, si sumamos la columna de los errores (la columna d), importante,
todos los errores deben de sumarse en valor absoluto, obtenemos que la
columna suma 0,150315 ≥ 0,05. Por tanto, tomamos el intervalo de mayor error,
en este caso el intervalo [0, 1] que está señalado en rojo y dividimos el intervalo.

Subintervalo h G0,0 G1,0 d G1,1


[0, 1/2] 1/4 0,590748 0,730141 0,046465 0,776606
[1/2, 1] 1/4 0,502556 0,433781 −0,022925 0,410856
[1, 2] 1/2 0,786803 0,998050 0,070415 1,068465

Si sumamos los errores obtenemos 0,139805 ≥ 0,05. Por tanto, tomamos el


intervalo de mayor error, el señalado en color rojo y dividimos ese intervalo.

Subintervalo h G0,0 G1,0 d G1,1


[0, 1/2] 1/4 0,590748 0,730141 0,046465 0,776606
[1/2, 1] 1/4 0,502556 0,433781 −0,022925 0,410856
[1, 3/2] 1/4 0,464132 0,479689 0,005186 0,484875
[3/2, 2] 1/4 0,533919 0,544099 0,003394 0,547493

Si sumamos los errores en valor absoluto obtenemos 0,077970 ≥ 0,05. Por


tanto, volvemos a tomar el intervalo con mayor error, el señalado en color rojo y
dividimos ese intervalo.

Subintervalo h G0,0 G1,0 d G1,1


[0, 1/4] 1/8 0,342384 0,360735 0,006117 0,366852
[1/4, 1/2] 1/8 0,387758 0,400845 0,004363 0,405208
[1/2, 1] 1/4 0,502556 0,433781 −0,022925 0,410856
[1, 3/2] 1/4 0,464132 0,479689 0,005186 0,484875
[3/2, 2] 1/4 0,533919 0,544099 0,003394 0,547493

Finalmente, sumando todos los errores en valor absoluto obtenemos


0,041985 ≤ ε, y por tanto, la aproximación pedida es la suma de la columna G1,1 ,
en este caso, Z 2
e−t sen(5t) + 1 dt ≈ 2,215284. 2

0

D.6. Ejercicios propuestos


En las referencias del Capı́tulo 4 podemos encontrar multitud de ejercicios
propuestos y resueltos. Vamos a hacer una selección de los más representativos y
añadir algunos propios.
Ejercicio D.1. Calcular el grado de exactitud de la cuadratura de Trapecios,
Simpson y de Simpson 3/8.

246
Ejercicio D.2. Hallar a1 y a2 para que la fórmula de integración numérica
Z 1  
1
f (t)dt ≈ a1 f (0) + a2 f
0 2

sea exacta en P1 .

Ejercicio D.3. Se conoce


t 0 1 2 3
f (t) -2 0 1 4
R3
Se quiere calcular 0 f (t)dt. ¿Qué fórmulas conocidas de integración numérica
son aplicables y cuáles no? Resolver aplicando una fórmula adecuada.

Ejercicio D.4. La fórmula de cuadratrua


Z 1 n
X
f (t)dt ≈ ai f (xi )
−1 i=0

se llama de Chebyshev, si es exacta en Pn+1 y a0 = a1 = · · · = an . Encontrar la


fórmula de cuadratura de Chebyshev para n = 1. Por cierto, el matemático Sergei
N. Bernstein demostró que esto es imposible si n = 7 o si n ≥ 9.

Ejercicio D.5. Hay una fórmula llamada Trapecio Corregida que es


Z b
b−a  (b − a)2 0
f (a) − f 0 (b) .

f (t)dt ≈ f (a) + f (b) +
a 2 12
Encontrar la fórmula compuesta. Determinar
R2 2 n para que la fórmula sea exacta
con tres cifras decimales al estimar 1 ln (t)dt. Nota: el error viene dado por
f (4) (ξ)(b−a)5
E(f ) = 720
.

Ejercicio D.6. Hallar el número mı́nimo de subintervalos, necesario para apro-


ximar con un error absoluto menor que 10−4 , las siguientes integrales:
Z 5
1
1. 2
dt,
0 1 + (t − π)
Z π
2. et cos(t)dt,
0
Z 1 p
3. t(1 − t)dt,
0

mediante la fórmula del punto medio compuesta. Verificar los resultados obtenidos
utilizando Matlab.

247
Ejercicio D.7. Estime Ren cuantos subintervalos iguales hay que subdividir [0, 1]
1 2
para calcular la integral 0 e−t dt con 6 cifras decimales exactas (es decir, con un
error menor de 0,5 × 10−6 )

• Usando la regla de los Trapecios Compuesta.

• Usando la regla de Simpson Compuesta.

Ejercicio D.8. Aplicar dos iteraciones del algoritmo de Romberg para calcular
Z 3
2
• et dt;
0
Z π/2 p
• 1 + cos(t2 )dt.
0

Ejercicio D.9. Considere una fórmula de cuadratura del tipo


Z +∞
e−t f (t)dt = af (0) + bf (c) + E(f ).
0

(a) Encuentre a y b para que la fórmula tenga grado de exactitud m = 1.

(b) Sea p2 (t) el polinomio interpolador de Hermite que interpola f (0), f (2)
R +∞ −t
0
y f (2). Calcule 0 e p2 (t)dt y compare con el resultado del apartado
anterior.

(c) Encuentre una expresión para el error en términos de la tercera derivada


de f .

Ejercicio D.10. Utilizando todas las fórmulas compuestas que hemos implemen-
tado y tomando 100 nodos, aproxime:
Z 2
• t15 et dt,
1
Z 2
• tt dt,
1

3
t2 + 40
Z
• √ dt.
2 t + 5t + 7
Repita el proceso con 500 nodos y aplique 4 iteraciones de Romberg con 50 nodos
en el Trapecios Compuesto inicializador.

248
Ejercicio D.11. Se considera la siguiente cuadratura:
Z a+h
f (t)dt = h α1 f (a − h) + α2 f (a) + α3 f (a + h) + O(hm ).
 
a−h

(a) Suponiendo que f es suficientemente suave, determinar los pesos α1 , α2 y


α3 para que m sea máximo. Escribir una expresión del error.

(b) Escribir la fórmula anterior para un intervalo [c, d] cualquiera.

(c) Obtener una fórmula de cuadratura compuesta a partir de la fórmula dada


en este ejercicio.

Ejercicio D.12. Use el algoritmo de Romberg para aproximar:


Z 3
sen(2t)
1. dt.
0 1 + t5
Z 2
1
2. 2 1 dt.
0 t + 10
Z 3
3. cos(4t)e−t dt.
0
Z 2  
1
4. sen dt.
1

t
Z 1
1
5. √ dt.
0,04 t
Z 2 √
6. 4t − t2 dt.
0

Ejercicio D.13. Consideremos la función de Bessel definida por la integral


1 π
Z
J(α) = cos(αsen(t) − t)dt,
π 0

utilizando el método de Romberg aproxima el valor de J(α) para α = 2, 3, 4, 5, 6, 7, 8.


Utilice también la orden quad de Matlab y compare los resultados obtenidos.

Ejercicio D.14. Encuentre la fórmula


Z 1
f (t)dt ≈ a0 f (0) + a1 f (1),
0

que resulta exacta para todas las funciones de la forma f (t) = aet b cos(πx/2).

249
250
Apéndice E

En este Apéndice se presentan ejercicios estándar y su resolución con ayuda de


Matlab. En algunas situaciones usaremos representaciones gráficas como apoyo a
la comprensión de lo que se está haciendo.

E.1. Ejemplos resueltos


Ejemplo E.1. Para una cuadratura gaussiana, ¿cuál es el máximo grado de
exactitud si usamos 10 nodos? Enuncie el resultado en el que se basa.

Solución: La respuesta a esta pregunta es consecuencia directa del Teorema 5.4


y del Corolario 5.1 en las páginas 113 y 114, respectivamente. En este caso, con
10 nodos tenemos que n = 9 y por tanto el máximo grado de exactitud al que
podemos llegar es 2n + 1 = 2 · 9 + 1 = 19. 2

Ejemplo E.2. Usando la cuadratura gaussiana que crea más conveniente y 5


nodos aproxime Z 1 t
e sen(t2 )
√ dt.
−1 1 − t2
De una cota del error cometido, compruebe los cálculos con Matlab y de una
aproximación con un número mayor de nodos.

Solución: Lo primero es elegir la cuadratura adecuada, claramente ya que es-


tamos en un intervalo de integración [−1, 1] elegimos la cuadratura de Gauss-
Legendre ó de Gauss-Chebyshev. En este caso tomando
1 −1/2
w(t) = √ = 1 − t2 ,
1 − t2
tenemos el peso de Chebyshev y nuestra integral se puede escribir
Z 1
f (t)w(t)dt, con f (t) = et sen(t2 ).
−1

Siguiendo el algoritmo para cuadraturas gaussianas se puede encontrar el po-


linomio mónico de Chebyshev de grado n + 1 = 5, pero usando que los nodos y
los pesos de Chebyshev son conocidos (ver (5.9) y (5.10)) se tiene directamente
que

251
 
1
x0 = cos π = 0,951056516295154,
10
 
3
x1 = cos π = 0,587785252292473,
10
 
5
x2 = cos π = 0,
10
 
7
x3 = cos π = −0,587785252292473,
10
 
9
x4 = cos π = −0,951056516295154,
10
π
λ0 = λ1 = λ2 = λ3 = λ4 = .
5
Ası́, nuestra cuadratura gaussiana queda:

π π π
I(f ) = f (0,951056516295154) + f (0,587785252292473) + f (0)
5 5 5
π π
+ f (−0,587785252292473) + f (−0,951056516295154)
5 5
= 1,970573327397596.

Para dar una cota del error usamos la fórmula (5.12) y necesitamos ||T4+1 ||2 ,
cuyo valor lo podemos encontrar en la Tabla 5.1.
Necesitamos calcular f (2n+2) (ξ) = f (10) (ξ) = máx{|f (10) (t)| : t ∈ [−1, 1]}, para
ello, ya que disponemos de Matlab vamos a dibujar |f (10) (t)| en el intervalo [−1, 1]
y vamos a obtener una aproximación de f (10) (ξ).

Figura E.1: Gráfica de |f (10) (t)| en el intervalo [−1, 1].


100 000

80 000

60 000

40 000

20 000

-1.0 -0.5 0.5 1.0

Fuente: Elaboración propia.

Mirando la Figura E.1 podemos decir, aunque no es la cota más optima, que

252
f (10) (ξ) ≤ 105 . Por otro lado, mirando la Tabla 5.1 obtenemos que
π
||T5 ||2 = .
211
Con toda esta información obtenemos:

f (10) (ξ) 105 π


EG (f ) = ||T5 ||2 ≤ = 4,227239825522600 × 10−05 .
10! 3628800 211
Por último, si introducimos en Matlab

a=@(n)0*n;
b=@(n)1/2*(n==1)+1/4*(n>=2);
b0=pi;
f=@(t)exp(t).*sin(t.^2)
gaussianas(f,a,b,5,b0)

Obtenemos el mismo valor deseado. Para probar con más nodos solo es necesa-
rio cambiar la última lı́nea del código, por ejemplo, con 40 nodos solo es necesario
introducir en Matlab: gaussianas(f,a,b,40,b0) y nos devuelve

1,970654508100546.

Finalmente, es interesante comparar que devuelve el comando de Matlab. Se


deja al lector ver el tiempo de respuesta de los dos codigos. Las instrucciones de
Matlab son:

syms x
FF=int(exp(x)*sin(x^2)/(sqrt(1-x^2)),x,-1,1);
vpa(FF,16)

Y Matlab nos devuelve

1,97065450810044. 2

Nota E.1. Destacar que en el ejercicio anterior hemos hecho algo “mal”. Los
nodos siempren tienen que estar ordenados de menor a mayor, y en el caso de
los nodos de Chebyshev los hemos ordenado de mayor a menor, podemos abusar
de la notación y hacerlo ya que los pesos de Chebyshev verifican que todos
son iguales.

Ejemplo E.3. Usando la cuadratura gaussiana que crea más conveniente y 3


nodos aproxime Z +∞
1
4
dt.
−∞ 1 + t

253
Solución: Tenemos una integral cuyo intervalo de integración es todo R, por lo
tanto, debemos de usar la cuadratura de Gauss-Hermite, para ello necesitamos
2
tener en la integral el peso de Hermite, es decir, w(t) = e−t . Lo introducimos:

Z +∞ Z +∞
1 1 2 2
dt = et e−t dt
−∞ 1 + t4 −∞ 1+t 4

2
et
y tomamos como f (t) = 1+t4
.

Para calcular los 3 nodos necesitamos el polinomio de Hermite de grado 3.


Usamos la relación de recurrencia (5.5) y el valor de αn y βn para los polinomios
de Hermite (ver Tabla 5.1):

αn = 0,
n
βn = .
2

Siguiendo un proceso similar al Ejemplo 5.1 o al Ejemplo 5.2 construimos los


polinomios mónicos ortogonales de Hermite:

H−1 (t) = 0,
H0 (t) = 1,
H1 (t) = t,
1
H2 (t) = t2 − ,
2
3t
H3 (t) = t3 − .
2

Con ello, nuestros nodos de la cuadratura serán los puntos tales que

3t
t3 − = 0,
2

r
3
x0 = − ,
2
x1 = 0,
r
3
x2 = .
2

Analogamente al Ejemplo 5.2 calculamos los pesos de la cuadratura:

254
+∞ +∞
p √
(t − 0)(t − 3/2)
Z Z
−t2 π
λ0 = `0 (t)w(t)dt = p p p e dt =
−∞ −∞ (− 3/2 − 0)(− 3/2 − 3/2) 6
+∞ +∞
p p √
(t + 3/2)(t − 3/2) −t2
Z Z
2 π
λ1 = `1 (t)w(t)dt = p p e dt =
−∞ −∞ (0 + 3/2)(0 − 3/2) 3
+∞ +∞
p √
(t + 3/2)(t − 0)
Z Z
−t2 π
λ2 = `2 (t)w(t)dt = p p p e dt =
−∞ −∞ ( 3/2 + 3/2)( 3/2 − 0) 6

Por último, calculando

√ r ! √ √ r !
π 3 2 π π 3
IG (f ) = f − + f (0) + f = 1,996362777658229,
6 2 3 6 2

obtenemos el valor deseado. Finalmente, en Matlab tecleando:

a=@(n)0*n;
b=@(n)n/2;
b0=sqrt(pi);
f=@(t)exp(t.^2)./(1+t.^4)
gaussianas(f,a,b,3,b0)

obtenemos el mismo valor. Usando más nodos, por ejemplo, 20 nodos obtene-
mos un valor mucho mejor: Tecleamos gaussianas(f,a,b,20,b0) y Matlab nos
devuelve 2,218527643035300. 2

Ejemplo E.4. Usando la cuadratura gaussiana que crea más conveniente y 5


nodos aproxime Z +∞
sen(x)(x + 2)e−x dx.
−2

¿Qué error se comete? ¿Cuál es el valor usando 50 nodos?

Solución: Tenemos un intervalo semi-infinito, por lo tanto tenemos que usar la


cuadratura de Gauss-Laguerre. Lo primero es realizar un cambio de variable para
tener el intervalo [0, +∞). Usamos el cambio visto en la fórmula (5.11) y tenemos

x = t − 2.
Con esto, nuestra integral queda:

Z +∞ Z +∞
−x
sen(x)(x + 2)e dx = sen(t − 2)te−t+2 dt
−2 0
Z +∞
= sen(t − 2)e2 te−t dt.
0

255
Por lo tanto, podemos tomar w(t) = te−t , es decir, el peso de Laguerre con
parámetro α = 1. Y nuestra f (t) = e2 sen(t − 2).
Una vez transformada la integral, siguiendo los pasos del Ejemplo 5.1 y cam-
biando el valor de α a α = 1 es facil llegar a que
(1)
L5 (t) = t5 − 30t4 + 300t3 − 1200t2 + 1800t − 720.

El problema ahora es resolver un polinomio de grado 5. Una buena idea es


hacer (si estamos interesados en conocer el valor de los nodos y los pesos) una
modificación de la función gaussianas y pedirle que nos devuelva los pesos y los
nodos. Solamente hay que modificar la primera lı́nea de código (sin contar los
comentarios) y poner:

function [p,nd,r]=gaussianas(f,a,b,n,b0)

Si nos damos cuenta el código es exactamente igual que el anterior, si le


pedimos a Matlab que nos calcule

alpha=1;
a=@(n)2*n+alpha+1;
b=@(n)n.*(n+alpha);
b0=gamma(alpha+1);
[pesos,nodos,r]=gaussianas(a,b,5,b0)

nos devuelve:

0,348014540023349 0,617030853278270
0,502280674132493 2,112965958578523
Pesos = 0,140915919494473 Nodos = 4,610833151017531
0,008719893026100 8,399066971204841
0,000068973323586 14,260103065920832

y el valor aproximado buscado es −1,573546071851428.


Antes de calcular el error, vamos a dar la aproximación con 50, escribiendo
el mismo código anterior salvo por la última lı́nea que ponemos 50 en vez de 5
obtenemos −1,537466160319677.
Para calcular el error volvemos a usar la fórmula (5.12). Lo primero, como
siempre y teniendo en cuenta que n = 4 es calcular f (2×4+2) (ξ) = máx{|f (10) (t) :
t ∈ [0, +∞)|}. Es fácil ver que f (10) (t) = −e2 sen(t − 2), sabiendo que la función
sen(t) está acotada por 1, es fácil obtener que f (10) (ξ) = e2 . Además, adjuntamos
la gráfica de |f (10) (t)| para comprobar lo dicho.

256
Figura E.2: Gráfica de |f (10) (t)| en el intervalo [0, 10].

2 4 6 8 10

Fuente: Elaboración propia.


(1)
Por otro lado, ||L4+1 ||2 = Γ(5 + 1 + 1)5!.
Por lo tanto, la cota del error queda:

f (10) (ξ) (1) 2 e2


EG (f ) ≤ ||L || = Γ(7)5! = 0,175929907117396.
(2 × 4 + 2)! 5 10!
Finalmente, por añadir más información, el error cometido con 50 nodos, es
decir, n = 49 serı́a:

f (100) (ξ) (1) e2


EG (f ) ≤ ||L50 ||2 = Γ(52)50! = 3,735125770628241 × 10−27 ,
(2 × 49 + 2)! 100!

como ya sabı́amos, el error tiende a cero cuando aumenta el valor de los nodos.
2

E.2. Ejercicios propuestos


En las referencias [4], [6], [7], [8], [11], [14], [16], [18], [20] del Capı́tulo 5
podemos encontrar multitud de ejercicios propuestos y resueltos. Vamos a hacer
una selección de los más representativos y añadir algunos propios.
Ejercicio E.1. Hallar el número mı́nimo de nodos, necesario para aproximar con
un error absoluto menor que 10−4 , las siguientes integrales:
Z 5
1
1. 2
dt,
0 1 + (t − π)
Z π
2. et cos(t)dt,
0
Z 1 p
3. t(1 − t)dt,
0

257
mediante la fórmula de cuadratura gaussiana que crea más conveniente. Verificar
los resultados obtenidos utilizando Matlab.

Ejercicio E.2. Estime cuantos nodos son necesarios para calcular la integral
Z 1
2
e−t dt
0

con 6 cifras decimales exactas (es decir, con un error menor de 0,5 × 10−6 ).

Ejercicio E.3. Transforme las siguientes integrales convenientemente para apro-


ximar mediante la cuadratura de Gauss-Legendre con 36 nodos:
Z 3
sen(2t)
1. dt.
0 1 + t5
Z 2
1
2. 2 1 dt.
0 t + 10

Z 3
3. cos(4t)e−t dt.
0
Z 2  
1
4. sen dt.
1

t
Z 1
1
5. √ dt.
0,04 t
Z 2 √
6. 4t − t2 dt.
0

Ejercicio E.4.

• Hallar a mano las fórmulas de cuadratura con 5 nodos de :

(a) Gauss-Chebyshev.
(b) Gauss-Laguerre (con α = 0).
(c) Gauss-Hermite.

• Aplicar la fórmula anterior que se crea más coveniente para estimar las
integrales:
1 2 +∞ +∞
et
Z Z Z
t−t2 2
√ dt, e dt, sen(t2 )e−t dt.
−1 1 − t2 0 −∞

258
• Comprobar los resultados obtenidos con Matlab. Después, añada más nodos
y compare con los resultados anteriores.

Ejercicio E.5. Dada la integral


Z 1
4
e−t (1 − t2 )dt,
−1

hallar una aproximación numérica de su valor usando


(a) Gauss-Legendre con 16 nodos.

(b) El algoritmo de Romberg usando 4 iteraciones.

(c) Compare los resultados obtenidos.

Ejercicio E.6. Considere una fórmula de cuadratura del tipo


Z +∞
f (t)e−t dt = af (0) + bf (c) + E(f ).
0

Encuentre a y b para que la fórmula tenga el grado de exactitud 2. ¿Puede


identificar la fórmula obtenida? ¿Es gaussiana dicha fórmula?

Ejercicio E.7.

R1
(a) Sea la fórmula de tipo interpolatorio −1 f (t)dt ≈ α0 f (x0 ) + α1 f (x1 ). Escoger
x0 y x1 de forma que sea gaussiana.

(b) Idem que (a) pero si el intervalo de integración es [0, 1].

(c) Idem que (a) pero si el intervalo de integración es [a, b].

Nota: la idea de este ejercicio es trasladar los nodos del intervalo [−1, 1] a los
otros intervalos. Es otra forma diferente a lo que estamos acostumbrados, la idea
no es aplicar el cambio de variable visto en la página 116, sino lo contrario,
obtener los nodos primero y luego llevarlos a cualquier otro intervalo.

Ejercicio E.8. ¿Es gaussiana la fórmula de cuadratura siguiente? Justifica tu


respuesta:
Z 1 √ ! √ !
1 − 3 2 3
t2 f (t)dt ≈ f + f
−1 3 3 3 3

Ejercicio E.9.

259
(a) Sea la fórmula de cuadratura gaussiana
Z 1 r ! r !
5 3 8 5 3
f (t)dt ≈ f − + f (0) + f ,
−1 9 5 9 9 5
R2
¿cómo hay que modificarla para calcular 0 f (t)dt?
R2 2
(b) Aplicar la fórmula anterior a 0 et dt y dar una cota del error.

Ejercicio E.10.

• Suponiendo que f es una función suficientemente suave, diga que cuadratura


gaussiana propondrá usted para calcular las siguientes integrales:
Z b
(a) f (t)dt (a < b).
a
Z +∞
(b) f (t)e−at dt (a > 0).
0
Z +∞
2 +bt
(c) f (t)e−at dt (a > 0).
−∞
Z b
(d) e−xt (y + t)−1 dt (x > 0, y > 0).
0

• Aproxime las integrales anteriores con 30 nodos usando Matlab y tomando


f (t) = cos(t), a = 3, b = 5, x = 4, y = 1.

Ejercicio E.11. Sea p ∈ R e


Z 1
Ip = (1 − t)p f (t)dt.
0

Compare los resultados de aplicar a esta integral las fórmulas de Trapecios Com-
puesta con n nodos, y la de Gauss-Legendre con n nodos. Tome por ejemplo
f (t) = tan(t), p = 5, 10, 15, 20 y n = 10, 20, 30, 40, 50 para Trapecios compuesta y
n = 1, 2, 3, 4, 5 para Gauss-Legendre. Compare resultados.

Ejercicio E.12. Use Trapecios compuestos y Simpson Compuesto con n = 20, 4


iteraciones del método de Romberg con n = 5 en el Trapecios de partida y Gauss-
Legendre con = 10 en cada una de las siguientes integrales y compare resultados:
Z 2 t
e
(a) dt;
1 t
Z 4
sen(t)
(b) dt;
3 t

260
Z π
1
(c) cos(1,8t)dt;
π 0

1 π
Z
(d) cos(1,7sen(t))dt;
π 0
Z 1√
(e) 1 − t2 dt;
0
Z 2
(f ) f (t)dt; con
0 ( √
t,√ si t ∈ [0, 2];
f (t) = 2


2− 2
(2 − t), si t ∈ [ 2, 2].
Z 2
(g) f (t)dt; con
0 
t, si t ∈ [0, 3/4];
f (t) = 3
5
(2 − t), si t ∈ [3/4, 2].

261
262
Apéndice F

Este apéndice se va a dividir en las siguientes partes:

Ejemplos (ejercicios resueltos).


Implementación en Matlab de los métodos de Runge–Kutta y de Adams–
Bashforth. Órdenes ode.
Ejemplos usando Matlab.
Ejercicios propuestos.
Algunas demostraciones para el avezado lector.

En este apéndice se entrará en detalle en la resolución de ejercicios y en el uso


de Matlab para alcanzar nuestro objetivo de saber resolver numéricamente PVI.
En los textos [1], [2], [3], [4], [7], [8], [9] y [11] podrá encontrar más ejemplos y
problemas.

F.1. Ejemplos (ejercicios resueltos)


Ejemplo F.1. Transformar el PVI
 00
y (t) + y 0 (t) − 2 y(t) = t2 ,
y(0) = 2, y 0 (0) = −1,

en un sistema y estudiar su estabilidad.


Solución: De acuerdo a la Proposición 6.2 tomamos z1 (t) = y(t) y z2 (t) = y 0 (t) ,
y obtenemos  0
 z1 (t) = z2 (t),
z 0 (t) = 2 z1 (t) − z2 (t) + t2 ,
 2
z1 (0) = 2 , z2 (0) = −1 .
Que matricialmente se puede expresar como
 0      
z1 (t) 0 1 z1 (t) 0
= + , z1 (0) = 2 , z2 (0) = −1 .
z20 (t) 2 −1 z2 (t) t2

Obviamente los autovalores de la matriz de coeficientes del sistema anterior van a


coincidir con las raı́ces del polinomio caracterı́stico de la EDO, esto, las soluciones

263
de r2 + r − 2 = 0 que son r1 = 1 y r2 = −2. Por tanto, por la Proposición 6.1 el
PVI es inestable. 2
Ejemplo F.2. Pruebeque el siguiente PVI está bien planteado y dé una cota del
y 0 (t) = A(t)y(t), t ∈ I = [0, π/2],
número de condición con
y(0) = y0 ∈ R2 ,
 
1/(1 + t) 1 + sen(t)
A(t) =
sen2 (t) t2 − 2t + 3

Solución: De acuerdo al Teorema 6.1 tenemos que calcular la matriz jacobiana,


que en este caso es trivial puesto que Jy f (t, y) = A(t). Entonces,

||Jy f (t, y)|| = ||A(t)|| = máx{|1/(1 + t)| + |1 + sen(t)|, |sen2 (t)| + |t2 − 2t + 3|}
t∈I
= máx{1/(1 + t) + 1 + sen(t), sen2 (t) + t2 − 2t + 3}
t∈I

Puesto que I es compacto y las funciones anteriores son continuas, el anterior


máximo existe y entonces tenemos que ||Jy f (t, y)|| = C donde

C = máx{1/(1 + t) + 1 + sen(t), sen2 (t) + t2 − 2t + 3}.


t∈I

Por tanto, de acuerdo al Teorema 6.1 el PVI tiene solución única, luego está
bien planteado. Determinar C se puede hacer bastante complicado, pero gracias
a la visualización gráfica y a los métodos numéricos de resolución de ecuaciones
podemos ver que

C = máx{1/(1 + t) + 1 + sen(t), sen2 (t) + t2 − 2t + 3}


t∈I
π2
= máx{sen2 (t) + t2 − 2t + 3} = 4 − π + ≈ 3,32581.
t∈I 4
Entonces, por la Proposición 6.3 el número de condición
Z t 
π2
   2

4−π+ π4 t
k(t) ≤ exp (4 − π + dx = e ≈ e3,32581t . 2
0 4

Ejemplo F.3. Obtener el método de Euler (6.7) y el método trapezoidal (6.17)


por integración numérica.
Solución: Tomamos la partición equiespaciada ∆ = {ti }N i=0 e integramos la EDO
y 0 (t) = f (t, y(t)) entre dos puntos consecutivos de ella tn y tn+1 , entonces apli-
cando la regla del rectángulo izquierda obtenemos:
Z tn+1 Z tn+1
0
y (t)dt = f (t, y(t))dt ⇒ y(tn+1 ) − y(tn ) ≈ (tn+1 − tn )f (tn , y(tn ))
tn tn
= hf (tn , y(tn )).

Por tanto, “forzando” la igualdad, es decir, tomando yn ≈ y(tn ) obtenemos

yn+1 − yn = hf (tn , yn ),

264
que es el método de Euler.
Para el método trapezoidal como su nombre indica hay que aplicar la regla
del trapecio obteniendo
tn+1 − tn
y(tn+1 ) − y(tn ) ≈ (f (tn , y(tn )) + f (tn+1 , y(tn+1 )))
2
h
= (f (tn , y(tn )) + f (tn+1 , y(tn+1 ))).
2
Por tanto, tomando yn ≈ y(tn ) obtenemos

h h
yn+1 − yn = (f (tn , yn ) + f (tn+1 , yn+1 )) = (fn + fn+1 ),
2 2
que es el método trapezoidal o Adams–Moulton de 1 paso. 2

Ejemplo F.4. Dibuje la región de A–estabilidad del método de Euler modificado


(o método de Heun) y del método de Runge–Kutta clásico (6.15). Determine en
ambos casos su radio de A–estabilidad.

Solución: El denominado método de Euler modificado o método de Heun viene


dado por la tabla de Butcher

0
1 1
1/2 1/2

Si se lo aplicamos a la ecuación test y 0 (t) = λy(t), con λ ∈ C, <(λ) < 0. Entonces,


obtenemos
h h
yn+1 = yn + (f (tn , yn ) + f (tn + h, yn + hf (xn , yn ))) = yn + (λyn + λ(yn + hλyn ))
2 2
2 2 n+1
   
(hλ) (hλ)
= 1 + hλ + yn = . . . = 1 + hλ + y0 .
2 2

Por tanto,
2

(hλ)
lı́m yn = 0 ⇔ 1 + hλ + < 1.
n→∞ 2
Luego, el método de Euler modificado no es A–estable y su región de A–estabilidad
es
2


1 + hλ + (hλ) < 1, (F.1)
2
es decir, si tomamos z := hλ la region de A-estabilidad es

z 2
 


RA = z ∈ C / 1 + z + < 1 ,
2

donde C− denota el semiplano izquierdo. Con Matlab podemos dibujar de forma

265
simple la frontera de esta región, a saber,
2

1 + z + z = 1

2

Recuerde que los números complejos de módulo 1 pueden escribirse como

eiθ = cos(θ) + isen(θ).

frontera=[];
for j=0:pi/1000:2*pi % Generamos particion de [0,2pi]
% Se generan los coeficientes del polinomio
q=[1/2,1, 1-exp(1i*j)];}
% Se obtienen las raı́ces
r=roots(q);
frontera=[frontera,r(1),r(2)];
end
plot(frontera,’*r’, ’MarkerSize’, 1.5)

Figura F.1: Región de A-estabilidad del método de Euler modificado


2
Región de A−estabilidad
1.5

0.5

−0.5

−1

−1.5

−2
−2 −1.5 −1 −0.5 0 0.5

Fuente: Elaboración propia.

El radio de A–estabilidad es fácil de obtener tomando λ < 0 y por tanto


x := hλ < 0 en la inecuación (F.1)
2 2

1 + x + x < 1 ⇔ −1 < 1 + x + x < 1.

2 2

Ası́ hay que resolver las inecuaciones

x2 x2
0<2+x+ y x+ < 0,
2 2
266
que nos determina x ∈ (−2, 0). Luego el radio de A–estabilidad de este método
es −2. Para determinar la región de A-estabilidad del método de Runge–Kutta
clásico las cuentas son más tediosas. Si aplicamos a la ecuación test y 0 (t) = λy(t),
con λ ∈ C, <(λ) < 0, el método (6.15), a saber

h
yn+1 = yn + (k1 + 2k2 + 2k3 + k4 ),
6

k1 (tn , yn , h) = f (tn , yn ) = λyn


     
h h hλ hλ
k2 (tn , yn , h) = f tn + , yn + k1 = λ yn + yn = 1 + λyn
2 2 2 2
hλ (hλ)2
   
h h
k3 (tn , yn , h) = f tn + , yn + k2 = 1 + + λyn
2 2 2 4
(hλ)2 (hλ)3
 
k4 (tn , yn , h) = f (tn + h, yn + hk3 ) = 1 + hλ + + λyn
2 4

Luego,

(hλ)2 (hλ)2 (hλ)3


 

yn+1 = yn + yn 1 + 2 + hλ + 2 + hλ + + 1 + hλ + +
6 2 2 4
2 3 4
 
(hλ) (hλ) (hλ)
= 1 + hλ + + + yn
2 6 24
n+1
(hλ)2 (hλ)3 (hλ)4

= 1 + hλ + + + y0 .
2 6 24

Procediendo de forma análoga al caso anterior obtenemos:

(hλ)2 (hλ)3 (hλ)4




lı́m yn = 0 ⇔ 1 + hλ +
+ + < 1.
n→∞ 2 6 24

Luego, el método de Runge–Kutta clásico no es A–estable y su región de A–


estabilidad es
2 3 4


1 + hλ + (hλ) (hλ) (hλ)
+ + < 1, (F.2)
2 6 24
es decir, si tomamos z := hλ la region de A-estabilidad es

z 2 z 3 z 4
 


RA = z ∈ C / 1 + z + + + <1 .
2 6 24

Para dibujar la frontera


2 3 4


1 + z + z z z
+ + = 1
2 6 24

procedemos como con el anterior script de Matlab cambiando obviamente el po-


linomio q a
q=[1/24, 1/6, 1/2,1, 1-exp(1i*j)];

267
obteniendo la región de A–estabilidad como la región acotada por la frontera
dibujada en la Figura F.2 El radio de A–estabilidad es técnicamente más com-

Figura F.2: Región de A-estabilidad del método de Runge–Kutta clásico


3
Región de A-estabilidad

-1

-2

-3
-3 -2.5 -2 -1.5 -1 -0.5 0 0.5

Fuente: Elaboración propia.

plicado que en el caso anterior. Se toma λ < 0 y por tanto x := hλ < 0 en la


inecuación (F.2)
2 3 4 2 3 4


1 + x + x x x < 1 ⇔ −1 < 1 + x + x + x + x < 1.
+ +
2 6 24 2 6 24

Ası́ hay que resolver las inecuaciones

x2 x3 x4 x2 x3 x4
0<1+x+ + + y x+ + + < 0.
2 6 24 2 6 24
Con la ayuda de Matlab (orden roots) podemos ver que la desigualdad de la
2 3 4
izquierda se cumple siempre y que la ecuación x + x2 + x6 + x24 tiene como raı́ces
reales a 0 y a −2,785293563405274. De donde, es fácil deducir que el radio de A–
estabilidad de este método es −2,785293563405274. En la mayorı́a de los textos,
aparece −2,78 pues se usa truncamiento y no redondeo, ya que en este caso el
redondeo a −2,79 nos harı́a estar fuera de la región de A-estabilidad. 2
Ejemplo F.5. a) Dada la tabla de Butcher

0
3/4 X
Y Z

Determine X, Y y Z para que sea convergente de orden 2.

b) Para el método de Runge–Kutta del apartado anterior establezca el radio de

268
A–estabilidad.

c) Dada la EDO y 00 (t)+105y 0 (t)+452,25y(t) = 10 sen(t). Estudie la estabilidad.


¿Es stiff ? Si se le aplicará el método del apartado a), ¿qué paso escogerı́a?
Sin resolver la EDO, diga cómo se comportan la soluciones cuando t es muy
grande (t → ∞).
Solución: a) Por el Teorema 6.4 para que sea convergente ha de cumplirse que
Y + Z = 1, por las condiciones de orden (6.13), X = 3/4, y por el Lema 6.1,
3Z
4
= 1/2. Luego obtenemos

3 1 2
X= , Y = , Z= .
4 3 3
b) El método del apartado a) es

h
yn+1 = yn + (f (tn , yn ) + 2f (tn + 3/4 h, yn + 3/4 hf (tn , yn ))) .
3
Luego aplicando a la ecuación test y 0 (t) = λy(t) con <(λ) < 0, se obtiene

(hλ)2
 
h
yn+1 = yn + (λyn + 2λ(yn + 3/4 hλyn )) = 1 + hλ + yn
3 2
n+1
(hλ)2

= . . . = 1 + hλ + y0 .
2

Por tanto,
2

(hλ)
lı́m yn = 0 ⇔ 1 + hλ + < 1.
n→∞ 2
Luego, este método no es A–estable y su región de A–estabilidad es
2


1 + hλ + (hλ) < 1.
2

Como coincide con la región de A–estabilidad del método de Heun (del ejercicio
anterior), hemos calculado que su radio de A–estabilidad es −2. En verdad, se
puede probar que todo método de Runge–Kutta explı́cito de 2 estados y orden 2
tiene la misma región de A-estabilidad. Animamos al lector a probarlo.
c) Obtenemos las raı́ces del polinomio caracterı́stico r2 + 105r + 452,25 aso-
ciado a la EDO. Éstas son r1 = −100,5 y r2 = −4,5. Por tanto la EDO es
asintóticamente estable. Para ver si es stiff, calculamos
100,5
rs = = 22,333...,
4,5
luego podemos considerar que el problema es stiff. Si se le aplicara el método del
apartado a), al ser un problema stiff y no ser este método A–estable pero con
radio de A-estabilidad −2, el paso debe cumplir de acuerdo a (6.12)

h < 2/100,5 ≈ 0,0199005.

269
y también dividir a la amplitud del intervalo donde resolvamos el PVI.
Finalmente, sabemos de la teorı́a básica de EDO que la solución de esta ecua-
ción diferencial viene dada por

y(t) = yp (t) + C1 e−100,5t + C2 e−4,5t ,

donde yp (t) es una solución particular de la EDO completa y puesto que la par-
te no homogénea es 10 sen(t) entonces yp (t) será una combinación lineal de las
funciones sen(t) y cos(t). En cualquier caso,

y(t) ≈ yp (t), t → ∞. 2

Ejemplo F.6. Una bola de nieve esférica de radio inicial 4cm se derrite de forma
que la variación de su radio, r(t), es proporcional al área de su superficie.

a) Establezca el modelo diferencial. Si a la media hora el radio es de 2cm,


calcule la constante de proporcionalidad y resuelva el modelo diferencial
analı́ticamente. Desde el punto de vista matemático, ¿cuándo se derrite
completamente la bola de nieve?

b) Con el dato obtenido en el apartado anterior, aplique el método de Euler en


[0, 1] con paso h ≤ 0,25.

c) Compare los resultados exactos y los aproximados obtenidos en el apartado


b) (construya una tabla de errores de discretización). Interprete los resul-
tados.

Solución: a) El área de la superficie de una esfera en función del radio r es 4πr2 .


Por tanto, el modelo es  0
r (t) = k4πr2 (t),
r(0) = 4,
donde k es la constante de proporcionalidad y además sabemos que r(0,5) = 2.
Podemos resolver analı́ticamente este problema y por tanto no hay necesidad
de métodos numéricos de ahı́ el nombre usual de “toy problem” que podemos
traducir como “problema de juguete” (es decir, es un problema para practicar,
“jugar”).

−1
Z Z
dr 2 dr dr
= 4πkr ⇒ 2 = 4πkdt ⇒ = 4πkdt ⇒ = 4πkt + C.
dt r r2 r
Por tanto,
−1
r(t) = ,
4πkt + C
usando la condición inicial y que sabemos que r(0,5) = 2, obtenemos C = −1/4
y k = −1/(8π). Ası́ que el modelo diferencial y su solución analı́tica son:
 0
r (t) = − 12 r2 (t), 4
⇒ r(t) = .
r(0) = 4, 2t + 1

270
Desde un punto de vista estrictamente matemático con este modelo la bola no
se derrite nunca, ya que r(t) no se anula nunca. Para tiempos suficientemente
grandes el radio serı́a insignificante.
b) Tomaremos h = 0,25, por tanto , N = 1/0,25 = 4. La aplicación al ser
un problema escalar simple es muy sencilla. Notaremos rn ≈ r(tn ), quedando el
método de Euler como
 
−1 2
rn+1 = rn + hf (tn , rn ) = rn + 0,25 r = rn − 0,125rn2 .
2 n

Luego,

r1 = r0 − 0,125r02 = 4 − 0,125 ∗ 42 = 2.
r2 = r1 − 0,125r12 = 2 − 0,125 ∗ 22 = 1,5.
r3 = r2 − 0,125r22 = 1,5 − 0,125 ∗ 1,52 = 1,21875.
r4 = r3 − 0,125r32 = 1,21875 − 0,125 ∗ 1,218752 ≈ 1,03308.

Lo que nos dice por ejemplo es que a los 3/4 de hora el radio de la bola de nieve
aplicando el método de Euler es de r3 = 1,21875 ≈ r(0,75).
c) La tabla de errores de discretización es:
Valor exacto Valor aproximado Error en valor absoluto
t=0.25 8/3 2 0.666667
t=0.5 2 1.5 0.5
t=0.75 8/5 1.21875 0.38125
t=1 4/3 1.03308 0.300252
Es obvio que los errores cometidos con la aproximación obtenida por el método
de Euler son muy grandes, pero hay que tener en cuenta que hemos usado un
método con orden 1 (el más pequeño posible) y a un paso muy grande h = 0,25,
ası́ que los errores son O(0,25). Se puede obtener resultados muchos mejores si
usan un paso más pequeño. Inténtelo con h = 0,001. 2
Ejemplo F.7. a) Un ingeniero requiere un método de Runge–Kutta de 2 es-
tados. Se le proporciona el siguiente, dado por la tabla de Butcher,
√ √
3− 3 1 3−2 3
6√ 4√ 12
3+ 3 3+2 3 1
6 12 4
1 1
3 2

Razonar la opinión del ingeniero sobre este método.


b) La tabla de Butcher de un método de Runge–Kutta explı́cito de 2 estados
convergente y de orden 2 es:

0
α 5/8
β 6γ

Calcule los valores de las constantes α, β y γ . De la expresión explı́cita el

271
método. Escriba un paso genérico de este método si tuviera que resolver el
PVI  0
y (t) = −t2 y(t) + t , t ∈ [0, 3/2],
y(0) = 1.

Solución: a) Pues no pensarı́a muy bien de nosotros ni del método pues no es


convergente ya que
1 1
+ 6= 1.
3 2
b) Para este apartado podemos proceder como en el ejemplo F.5, apartado a).
Ası́, para que sea convergente ha de cumplirse que β + 6γ = 1, por las condiciones
de orden (6.13), α = 5/8, y por el Lema 6.1, 15γ
4
= 1/2. Luego obtenemos

5 1 2
α= , β= , γ= .
8 5 15
Entonces, el método es
h
yn+1 = yn + (k1 (tn , yn , h) + 4k2 (tn , yn , h)),
5
donde

k1 (tn , yn , h) = f (tn , yn ),
 
5h 5h
k2 (tn , yn , h) = f tn + , yn + f (tn , yn ) .
8 8

Para el PVI escalar propuesto tenemos

f (tn , yn ) = −t2n yn + tn ,
 
5h 5h 2 5h
yn + f (tn , yn ) = 1 − tn yn + tn ,
8 8 8
   2   
5h 5h 5h 5h 2 5h
f tn + , yn + f (tn , yn ) = − tn + 1 − tn yn + tn
8 8 8 8 8
5h
+ tn + .
8
Por tanto, el método en un paso genérico quedarı́a como
(   2 
yn+1 = yn + 5 −tn yn + tn + 4 − tn + 5h
h 5h 2 5h 5h
2
 
8
1 − 8
tn yn + t
8 n
+ tn + 8
,
y0 = 1.

Evidentemente esto es un ejercicio teórico, si queremos resolverlo de forma prácti-


ca, aunque no lo pide el problema, podemos programar este método de forma
sencilla como se verá en la sección siguiente. 2

Ejemplo F.8. Estudie las propiedades del método de Adams–Moulton de 1 paso


o método trapezoidal (6.17).

272
Solución: El método es:
h
yn+1 − yn = (fn+1 + fn ) .
2
Por tanto,
r+1
α(r) = r − 1 y β(r) = .
2
El único cero de α(r) es 1, por tanto verifica la condición raı́z. Además α0 (1) =
β(1) = 1. Aplicando el Corolario 6.2 tenemos que es convergente y es evidente
que es fuertemente estable.
Veamos su orden. Sabemos que C−1 = C0 = 0.
1 1 1
C1 = α1 − β1 = − = 0,
2 2 2
1 1 1 1 1
C2 = α1 − β1 = − = − .
6 2 6 4 12
Por tanto, el método trapezoidal es de orden 2 con C2 = −1/12.
Estudiemos la A–estabilidad. Para ello consideremos la ecuación test y 0 (t) =
λy(t) con <(λ) < 0. Entonces, nos queda
   
hλ λh λh
yn+1 − yn = (yn + yn+1 ) ⇒ 1− yn+1 − 1 + yn = 0
2 2 2
1 + λh
2
⇒ yn+1 = yn .
1 − λh
2

Procediendo recursivamente tenemos


!n+1 n+1
1 + λh

2 1 + z
yn+1 = y0 = y0 ,
1 − λh
2
1−z

λh
donde hemos denotado z := = a + bi, con a < 0 puesto que <(λ) < 0. Basta
2
observar que
p p
|1 + z| = (1 + a)2 + b2 < (1 − a)2 + b2 = |1 − z|,

donde se ha usado que |1 + a| < 1 − a, cuando a < 0. Por tanto, 1+z
1−z
< 1, y ası́,

lı́m yn = 0.
n→∞

Aplicando la Definición 6.13 el método trapezoidal o Adams–Moulton de 1 paso


es A–estable.
Note que z está en el semiplano de la izquierda y 1+z
1−z
está en el disco unidad
1+z
abierto, en verdad, la transformación z ,→ 1−z es la transformación conforme del
semiplano de la izquierda en el disco unidad abierto. 2

Ejemplo F.9. Deduzca el método de Adams–Bashforth de 2 pasos del esquema

273
general (6.22). Aplı́quelo a la resolución del PVI
 00
y (t) = t(y 0 (t) + 1) + y(t), t ∈ [0, 1],
y(0) = −1, y 0 (0) = 2.

Solución: Tomando k = 2 en el esquema (6.22) obtenemos:


1
X
yn+2 − yn+1 = h γi ∇i fn+1 = h(γ0 fn+1 + γ1 ∇fn+1 ) = h(γ0 fn+1 + γ1 (fn+1 − fn ))
i=0
= h((γ0 + γ1 )fn+1 − γ1 fn ).

Puesto que
1
  Z 1
−s
Z
γ0 = ds = ds = s|s=1
s=0 = 1,
0 0 0
Z 1  Z 1 s=1
−s s2 1
γ1 = − ds = − (−s)ds = = ,
0 1 0 2 s=0 2

entonces el método es
yn+2 − yn+1 = h2 (3fn+1 − fn ),


y0 , y1 .

Sabemos por el Teorema 6.7 que es convergente, veamos de qué orden usando
(6.21):
1 3
C1 = (−1 + 4) − = 0,
2 2
1 1 3 7 3 5
C2 = (−1 + 8) − · = − = .
6 2 2 6 4 12
Luego el método es de orden 2 y teniendo en cuenta la Proposición 6.6 para
calcular y1 se necesita un método de 1 paso de orden al menos 2. Usaremos el
siguiente método de Runge–Kutta (RK) de orden 2

0
1/2 1/2
0 1

Puesto que lo vamos a hacer de forma manual (toy problem) tomaremos un paso
grande h = 0,25. Por tanto, N = 1/0,25 = 4. Lo primero que hemos de hacer
es pasar esta EDO de orden 2 a un sistema de EDO. Notamos y1 (t) := y(t) e
y2 (t) = y 0 (t), entonces nos queda
 0
 y1 (t) = y2 (t), t ∈ [0, 1],
y 0 (t) = t(y2 (t) + 1) + y1 (t),
 2
y1 (0) = −1, y2 (0) = 2.

Aplicar RK para un sistema EDO manualmente es bastante tedioso. f es una

274
función vectorial determinada por
 
f1 (tn , y1,n , y2,n ) y2,n ,
f (tn , yn ) = f (tn , y1,n , y2,n ) = =
f2 (tn , y1,n , y2,n ) tn (y2,n + 1) + y1,n .

Ası́,
   
h y1,n h f1 (tn , y1,n , y2,n )
yn + f (tn , yn ) = +
2 y2,n 2 f1 (tn , y1,n , y2,n )
h
 
y1,n + 2 y2,n
= ,
y2,n + h2 (tn (y2,n + 1) + y1,n )
y

f (tn + h/2, yn + h/2f (tn , yn )) =


 h

y2n + 2 (tn (y2n + 1) + y1n )
tn + h2 × y2n + h2 (tn (y2n + 1) + y1n ) + 1 + y1n + h2 y2n


Luego,
   
y1,n+1 y1n
=
y2,n+1 y2,n
 
y2n + h2 (tn (y2n + 1) + y1n )
+ 0,25 h
× y2n + 2 (tn (y2n + 1) + y1n ) + 1 + y1n + h2 y2n
h

tn + 2

Por tanto, sólo queda sustituir numéricamente n = 0


     
y1,1 −1 2 − 0,125
= + 0,25
y2,1 2 0,125(2 − 0,125 + 1) − 1 + 2 × 0,125
 
−0,53125
=
1,90234

Ya estamos en condiciones de aplicar el método de Adams–Bashforth de 2 pasos


que queda como
   
y1,n+2 y1,n+1
=
y2,n+2 y2,n+1
    
y2,n+1 y2,n
+ 0,125 3 − .
tn+1 (y2,n+1 + 1) + y1,n+1 tn (y2,n + 1) + y1,n

275
Entonces, el primer paso nos darı́a
   
y1,2 y1,1
=
y2,2 y2,1
    
y2,1 y2,0
+ 0,125 3 −
t1 (y2,1 + 1) + y1,1 t0 (y2,0 + 1) + y1,0
 
−0,53125
=
1,90234
    
1,90234 2
+ 0,125 3 −
0,25(1,90234 + 1) − 0,53125 −1
 
−0,0678725
= .
2,10022

Entonces y1,2 = −0,0678725 ≈ y1 (0,5) = y(0,5) e y2,2 = 2,10022 ≈ y2 (0,5) =


y 0 (0,5). Notad que al estar resolviendo una EDO de orden 2 lo que nos interesa
son los valores y1,n . Procediendo análogamente se obtiene:
       
y1,3 0,48192 y1,4 1,20630
= , = .
y2,3 2,63177 y2,4 3,64864
Obviamente este problema se ha hecho con este paso para que se comprenda como
se hace manualmente pero si estamos usando Matlab podemos coger un paso de
h = 0,001 y obtener la figura F.3. 2

Figura F.3: Dibujo de la solución (y de su derivada) del PVI planteado en Ejemplo


F.9
4

3.5
y(t)
3
y’(t)
2.5

1.5

0.5

−0.5

−1
0 0.2 0.4 0.6 0.8 1

Fuente: Elaboración propia.

Ejemplo F.10. Estudie en función del parámetro a ∈ R las propiedades del


siguiente método multipaso lineal
h
yn+2 − (a + 1)yn+1 + ayn = ((5 + a)fn+2 + 8(1 − a)fn+1 − (5a + 1)fn ) .
12
276
Solución: En primer lugar determinamos los polinomios caracterı́sticos α(r) y
β(r).

5 + a 2 2(1 − a) 5a + 1
α(r) = r2 − (a + 1)r + a y β(r) = r + r− .
12 3 12
Veamos las condiciones para que α(r) verifique la condición raı́z y, por tanto, sea
estable.
α(r) = 0 ⇒ r1 = a, r2 = 1.
Luego α(r) verifica la condición raı́z si y sólo si a ∈ [−1, 1). Por tanto, el método
no es convergente si a 6∈ [−1, 1). Note que si a = −1, el método será estable pero
no fuertemente estable. Respecto a la consistencia,

α0 (r) = 2r − (a + 1) ⇒ α0 (1) = 1 − a = β(1) 6= 0 ⇔ a 6= 1.

Por tanto, consistente si y sólo si a 6= 1. Aplicando el Corolario 6.2 tenemos que


el método propuesto es convergente si y sólo si a ∈ [−1, 1) y fuertemente
estable si a ∈ (−1, 1). El resto de propiedades solo tiene interés estudiarlas para
los valores de a para los cuales el método es convergente. Veamos el orden. Por
el Teorema 6.9 al ser el método de 2 pasos e implı́cito el orden a lo sumo es 4.
Partimos de los siguientes datos:

2(1 − a)
α1 = −(a + 1), β1 = ,
3
5+a
α2 = 1, β2 = .
12
Entonces,
 
1 2(1 − a) 5 + a 3−a 3−a
C1 = (−(1 + a) + 4) − + ·2 = − = 0,
2 3 12 2 2
 
1 1 2(1 − a) 5 + a 7−a 7−a
C2 = (−(1 + a) + 8) − + ·4 = − = 0,
6 2 3 12 6 6
 
1 1 2(1 − a) 5 + a −1 − a
C3 = (−(1 + a) + 16) − + ·8 = = 0 ⇔ a = −1.
24 6 3 12 24

Por tanto, el método es de orden exactamente 3 si y sólo a ∈ (−1, 1). ¿Qué pasa
si a = −1? Pues que C4 6= 0 para a = −1 ya que como hemos visto el método
tiene a lo sumo orden 4 y no hace falta calcularlo. Si se calcula C4 = −1/90.
En conclusión:
El método es convergente, fuertemente estable y de orden 3 si y sólo a ∈
(−1, 1).
El método es convergente y de orden 4 (es un método óptimo) si y sólo
si a = −1. Recuerde que los óptimos no son fuertemente estables. En este
caso el método queda como
h
yn+2 − yn = (fn+2 + 4fn+1 + fn ) ,
3
277
que es el método que se obtiene integrando con la regla de Simpson, por
eso es conocido como método de Simpson. 2

Ejemplo F.11. Obtenga el método de Adams–Moulton de 3 pasos. Dibuje su


región de A–estabilidad y compruebe que su radio de A–estabilidad es −3.

Solución: Tomando k = 3 en el esquema general de los métodos de Adams–


Moulton (6.23) se obtiene:
3 0  
−s
X Z
i i
yn+3 − yn+2 = h ηi ∇ fn+3 con ηi = (−1) ds.
i=0 −1 i

Calculemos todos los parámetros implicados:

∇0 fn+3 = fn+3 ,
∇1 fn+3 = fn+3 − fn+2 ,
∇2 fn+3 = ∇(∇fn+3 ) = ∇(fn+3 − fn+2 ) = ∇fn+3 − ∇fn+2
= fn+3 − 2fn+2 + fn+1 ,
∇ fn+3 = ∇(∇2 fn+3 ) = ∇(fn+3 − 2fn+2 + fn+1 ) = ∇fn+3 − 2∇fn+2 + ∇fn+1
3

= fn+3 − 3fn+2 + 3fn+1 − fn .

En verdad, hay una relación general, y muy bonita, con los coeficientes del
triángulo de Tartaglia (equivalentemente los coeficientes del binomio de Newton):
i  
k i
X
i
∇ fn+j = (−1) fn+j−k . (F.3)
k=0
k

Por otra parte,


Z 0
η0 = ds = s|s=0
s=−1 = 1,
−1
Z 0 s=0
s2 1
η1 = − (−s)ds = =− ,
−1 2 s=−1 2
Z 0 Z 0  s=0
1 s3 s2

−s(−s − 1) 1 2 1
η2 = ds = (s + s)ds = + =− ,
−1 2 2 −1 2 3 2 s=−1
12
Z 0 Z 0
−s(−s − 1)(−s − 2) 1
η3 = − ds = (s3 + 3s2 + 2s)ds
−1 6 6 −1
 4  s=0
1 s 1
= + s3 + s2 =− .
6 4 s=−1 24

278
Por tanto,
3
X 1 1
ηi ∇i fn+3 = fn+3 − (fn+3 − fn+2 ) − (fn+3 − 2fn+2 + fn+1 )
i=0
2 12
1
− (fn+3 − 3fn+2 + 3fn+1 − fn )
24
1
= (9fn+3 + 19fn+2 − 5fn+1 + fn ) ,
24
de donde se obtiene
h
(
yn+3 − yn+2 = (9fn+3 + 19fn+2 − 5fn+1 + fn ) ,
24
y0 , y1 , y2 .

Recordamos del Capı́tulo 6 que para obtener la frontera tomamos r = eiθ con
θ ∈ [0, 2π] (|r| = 1) y hacemos

α(eiθ )
p(eiθ ) = 0 ⇒ α(eiθ ) − λhβ(eiθ ) = 0 ⇒ λh = .
β(eiθ )
1
En nuestro caso α(r) = r3 − r2 y β(r) = 24 (9r3 + 19r2 − 5r + 1) . Un sencillo
script de Matlab para dibujar dicha frontera es:

al=@(r) r.^3-r.^2;
be=@(r) 1/24*(9*r.^3+19*r.^2-5*r+1);
frontera=[];
for j=0:pi/1000:2*pi
v1=al(exp(1i*j));
v2=be(exp(1i*j));
z=v1/v2;
frontera=[frontera,z];
end
plot(frontera,’*r’, ’MarkerSize’, 1.5)

Se obtiene la Figura F.4.


En el Capı́tulo 6 se dio que el radio de A–estabilidad de este método es
−3. Ahora vamos a probarlo usando el criterio de Routh–Hurwitz. Aplicamos el
método a la ecuación test y 0 = λy con λ < 0 y notando H = h/24 obtenemos:

yn+3 − yn+2 = H(9λyn+3 + 19λyn+2 − 5λyn+1 + λyn )


−λHyn + 5λHyn+1 − (19λH + 1)yn+2 + (1 − 9λH)yn+3 = 0.
Luego, el polinomio caracterı́stico es:

p(r) = −λH + 5λHr − (19λH + 1)r2 + (1 − 9λH)r3 .

279
Figura F.4: Dibujo de la región A-Estabilidad del método de Adams–Moulton de
3 pasos
2

1.5

0.5

Región de A-estabilidad
0

-0.5

-1

-1.5

-2
-3 -2.5 -2 -1.5 -1 -0.5 0 0.5

Fuente: Elaboración propia.

Considerando la transformación conforme r = (1 + z)/(1 − z) tenemos que


 
3 1+z
q(z) = (1 − z) p = (16λH + 2)z 3 + (4 − 16λH)z 2 + (2 − 48λH)z − 24λH.
1−z

Para mayor comodidad, notamos ĥ = λH y el criterio de Routh–Hurwitz (Lema


6.3) nos determina las siguientes desigualdades:


 2 + 16ĥ > 0

 4 − 16ĥ > 0


2 − 48ĥ > 0




 −24ĥ > 0
144ĥ2 − 2ĥ + 1 > 0

Resolviéndolas obtenemos
h
ĥ = λH = λ ∈ (−1/8, 0) ⇒ λh ∈ (−3, 0).
24
Luego el radio de A–estabilidad de Adams–Moulton de 3 pasos es −3. 2

F.2. Implementación en Matlab de los métodos


de Runge–Kutta y de Adams–Basforth. Órde-
nes ode
En esta sección vamos a implementar el método de Runge–Kutta clásico (6.15)
y el método de Adams–Bashforth de 4 pasos, ambos con paso fijo h. Además,

280
comentaremos las órdenes ode que Matlab tiene para la resolución de PVI. Su
aplicación a problemas concretos se verá en la sección siguiente.

F.2.1. Método de Runge–Kutta clásico


El simple código que se va a implementar resuelve numéricamente sistemas de
m EDO (y por tanto también ecuaciones diferenciales de orden m) con el método
de Runge–Kutta clásico (6.15). Variando de forma sencilla este código se puede
implementar cualquier método de Runge–Kutta explı́cito de R estados.
function [t,y]=rkc(f,a,b,y0,n)
h=(b-a)/n;
m=length(y0);
y=zeros(m,n+1);
t=a+h*(0:n); y(:,1)=y0’;
for i=1:n
k1=feval(f,t(i),y(:,i));
k2=feval(f,t(i)+h/2,y(:,i)+h/2*k1);
k3=feval(f,t(i)+h/2,y(:,i)+h/2*k2);
k4=feval(f,t(i)+h,y(:,i)+h*k3);
y(:,i+1)=y(:,i)+h/6*(k1+2*k2+2*k3+k4);
end
Nota F.1. Comentarios al programa:
1. Los inputs del programa son:
f. Es el sistema de EDO. Recuerde que tal y como vimos en el Capı́tulo
6 si el PVI a resolver está asociado a una EDO de orden superior ha
de convertirlo a un sistema (Proposición 6.2).
a. Es el extremo inferior del intervalo de resolución I = [a, b]. Usual-
mente es 0, o se puede hacer un cambio de variable para que sea 0 tal
y como se vio en el Capı́tulo 6.
b. Es el extremo superior del intervalo de resolución I = [a, b].
y0. Es el vector de las condiciones iniciales y tal como se ha hecho el
programa ha de ser introducido como un vector fila. Se puede modificar
fácilmente el programa para ser introducido como un vector columna.
n. El número de puntos menos 1 de la partición. Recuerde que una
partición ∆ = {ti }ni=0 tiene n + 1 puntos. Observe que en la lı́nea 5
de programa se ha definido t que es un vector de n + 1 puntos corres-
pondiente a la partición ∆. Probablemente, sea más intuitivo para un
usuario no versado que en vez de introducir el número n se introduje-
ra directamente el paso y se modificará la lı́nea 2 a n=(b-a)/h; Sin
embargo, esto causa problemas porque n ha de ser un número entero y
Matlab no lo identifica siempre ası́. Esto se puede paliar con algunas
órdenes de Matlab, pero para este capı́tulo básico hemos decidido op-
tar por la vı́a sencilla que es tomar n. En cualquier caso, se anima al
lector a que experimente.

281
2. Los outputs del programa son:

t. Es la partición creada de I.
y. Es la solución del PVI. Es una matriz de m filas y n + 1 columnas.

3. Se puede modificar el programa para que dibuje automáticamente la solu-


ción, por ejemplo incluyendo al final las lı́neas de programa

for i=1:m
plot(t, y(i,:),’*’,’Color’,[i/m,0,0],’MarkerSize’, 1.5), hold on
end

Las distintas componentes de la función vectorial solución son dibujadas en


una escala de rojos siendo el rojo más intenso el correspondiente a ym . Por
supuesto, esto puede ser modificado al gusto. También lo puede modificar
para que dibuje sólo una componente, lo cual puede resultar útil en el caso
de un PVI asociado a una EDO de orden superior.

F.2.2. Método de Adams–Bashforth de 4 pasos


Es un método de orden 4 ampliamente usado al igual que Runge–Kutta clásico
visto anteriormente. Recordamos que fue dado en (6.18)

h
yn+4 − yn+3 = (55fn+3 − 59fn+2 + 37fn+1 − 9fn ) .
24
Su implementación es sencilla y los otros métodos de Adams–Bashforth se
puede implementar de forma totalmente análoga.

function [t,y]=ab4(f,a,b,y0,n)
h=(b-a)/n;
m=length(y0);
t=a+h*(0:n);
y=zeros(m,n+1);
[w,z]=rkc(f,a, a+3*h,y0,3);
for i=1:4
y(:,i)=z(:,i);
end
for i=1:n-3
y(:,i+4)=y(:,i+3)+h/24*(55*feval(f,t(i+3),y(:,i+3))-...
59*feval(f,t(i+2),y(:,i+2))+37*feval(f,t(i+1),y(:,i+1))...
-9*feval(f,t(i),y(:,i)));
end

Nota F.2. Esencialmente son válidos los comentarios hechos para el programa
de Runge–Kutta clásico. Ası́ que sólo comentaremos lo nuevo:

282
1. Puesto que Adams–Bashforth de 4 pasos tiene orden 4 (puede comprobarlo
con (6.21)), el cálculo de las condiciones iniciales no proporcionadas por el
PVI, a saber y1 , y2 e y3 han de ser calculadas con un método de orden al
menos 4 (ver Proposición 6.6 y Nota 6.8). En esta implementación se usa
el método de Runge–Kutta clásico programado anteriormente.

2. Aunque debe ser conocido de Matlab, la manera de cortar lı́neas cuando


todo el texto no entra en una sola lı́nea es usar .... Por eso aparecen ...
en las lı́neas 11 y 12 del programa.

F.2.3. Órdenes ode de Matlab


Matlab tiene las órdenes ode... que son muy potentes para resolver todo tipo
de PVI. Es conveniente que consulte la ayuda del programa donde se describe
con claridad las órdenes y aconseja que método usar según sea el PVI. Un breve
resumen es:
Métodos para PVI no stiff
ode45 Usa el método Runge–Kutta embebido Dormand–Prince (4,5). Lo
aconseja como el aplicable “por defecto”.

ode23 Usa el método Runge–Kutta embebido Bogacki–Shampine (2,3).

ode113 Usa predictor–corrector Adams–Bashforth–Moulton.

Métodos para PVI stiff


ode15s Usa métodos basados en fórmulas de diferenciación numérica.

ode23s Usa una modificación del método de Rosenbrock de orden 2 ([9,


p.254]).

ode23t Basado en el método trapezoidal. Para problemas moderadamen-


te stiffs.

ode23tb Basado en el uso conjunto del método trapezoidal y de otro de


diferencias regresivas de orden 2.

También tiene la orden ode15i para resolver ecuaciones diferenciales implı́citas.


La sintaxis de las órdenes ode es sencilla y a la vez muy completa. Aquı́
indicaremos los aspectos básicos, pero recomendamos a lector que consulte la
ayuda de Matlab pues el input correspondiente a options es muy útil, por ejemplo,
se puede fijar una tolerancia. La sintaxis es:
[t,y] = ode23t(odefun,tspan,y0,options)
El primer input, odefun, corresponde al PVI a resolver; el segundo, tspan, al
intervalo donde vamos a resolver el PVI; el tercero, y0, a las condiciones iniciales;
y el cuarto, options, a las opciones. Los outputs básicos son la partición, t, y la
solución numérica del PVI, y.

283
F.3. Ejemplos usando Matlab
En esta sección vamos a mostrar ejemplos o ejercicios resueltos como en la
primera sección de este apéndice pero ahora usaremos Matlab para resolverlos.

Ejemplo F.12. Resuelva el PVI


 0
 y1 (t) = 1195y1 (t) − 1995y2 (t), t ∈ [0, 1],
y 0 (t) = 1197y1 (t) − 1997y2 (t), (F.4)
 2
y1 (0) = 2, y2 (0) = −2,

con el método de Runge–Kutta clásico. Compare con la solución la exacta. Use


también alguna orden ode para resolverlo.

Solución: Lo primero que tenemos que hacer es analizar la estabilidad de este


sistema. Para ellos creamos con Matlab la matriz de coeficientes y calculamos sus
valores propios.
a=[1195, -1995; 1197, -1997];
vp=eig(a)
vp =
-2.0000 -800.0000
Como todos los valores propios son negativos tenemos que el PVI es asintóti-
camente estable. Entonces veamos si es stiff, para eso calculamos su radio de
stiffness (ver (6.11))
rs = max(abs(real(vp)))/min(abs(real(vp)))
rs =
400.0000
Estamos ante un problema stiff. Entonces, si queremos resolverlo con el méto-
do de Runge–Kutta clásico (6.15), que no es A-estable (Teorema 6.5), tenemos
que hacerlo en su región de A–estabilidad. Como los valores propios son reales,
nos basta conocer su radio de A–estabilidad que es -2.785 (ver Ejemplo F.4). Ası́,
pues por (6.12) tenemos que tomar
2,785 2,785
h< = = 0,0069625, (F.5)
máx(|<(λi )|) 400

donde λi son los valores propios de la matriz de coeficientes del sistema. Ası́ pues
podemos tomar h = 0,001 (también podrı́amos tomar h = 0,005 u otros valores
que respeten la restricción anterior). Con estos datos n = 1/0,001 = 1000. Por
tanto, hacemos
sis=@(t,y)[1195*y(1)-1995*y(2);1197*y(1)-1997*y(2)];
[t,y]=rkc(sis,0,1,[2,-2],1000);
Si queremos dibujar las soluciones basta hacer
plot(t,y(1,:),t,y(2,:))
para obtener la Figura F.5. La leyenda se ha incluido desde la ventana gráfica.

284
Figura F.5: Solución del PVI (F.4).
10

8
y1
y2
6

-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Fuente: Elaboración propia.

Puesto que esto es un ejemplo básico (lo que en inglés suele denominarse “toy
problem”) podemos calcular la solución real y por tanto los errores cometidos.

solu=dsolve(’Dy1=1195*y1-1995*y2, Dy2=1197*y1-1997*y2’,’y1(0)=2,y2(0)=-2’);

Si queremos ver la solución analı́tica basta hacer


solu.y1
10*exp(-2*t) - 8*exp(-800*t)
solu.y2
6*exp(-2*t) - 8*exp(-800*t)
Para calcular el error de discretización evaluamos la solución en los puntos de la
partición t generada,
ana=[subs(solu.y1,t); subs(solu.y2,t)];
y restamos numérica (y) y analı́tica (ana)
enh=double(y-ana);
que nos devuelve una matriz 2 × 1001. Si queremos ver el error máximo cometido
en cada componente basta realizar:
format longEng
max(abs(enh(1,:)))
19.2349537288908e-003
para y1 . Análogamente para y2 . Fı́jese que el error es relativamente alto, ¿a qué
cree que es debido? ¿Dónde se alcanza este error?
Por otra parte, es interesante que ejecute el programa con un paso que no
cumpla la restricción (F.5). Como verá la solución es totalmente errónea y el
método no converge.

285
Si queremos usar una orden ode de las descritas en la sección anterior ha de
tener en cuenta que el sistema es stiff. Podemos tomar ode23t que se recomienda
para problemas moderadamente stiff.

[t1,y1]=ode23t(sis,[0,1],[2, -2]);
plot(t1,y1(:,1),’-o’,t1, y1(:,2),’-o’)

obteniendo la Figura F.6. Observe que las órdenes ode almacena la solución por
columnas, es decir, en matrices de dimensiones n × m donde n es el número de
elementos de la partición usada por la orden y m es el número de ecuaciones del
PVI. Para este ejemplo, tal y como puede ver en el Workspace, n = 50 y m = 2.
Es importante que observe que en los métodos programados en la Sección F.2 el
almacenamiento de la solución es por filas (Nota F.1, punto 2).

Figura F.6: Solución del PVI con ode23t


10

8 y
1
y
2

-2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Fuente: Elaboración propia.

Ejemplo F.13. Considere el modelo depredador–presa


 0
y (t) = α y(t) − β y(t) z(t),
z 0 (t) = γ z(t) + δ y(t) z(t),

donde t es dado en años. Vamos a aplicarlo a un ecosistema de linces (depredador


z(t)) y conejos (presa y(t)). La población inicial de linces es 35 y la de conejos
100. Resolver el modelo diferencial con un método de Runge–Kutta (RK) explı́cito
de 2 estados y orden 2 tomando α = 0,6 , β = 0,018 , γ = −0,7 y δ = 0,012 en
los siguientes casos:
a) (Toy problem) En el intervalo [0, 1] con h = 0,25.
b) En el intervalo [0, 10] con ayuda de Matlab. Dibuje la soluciones. Dibuje las
soluciones en el plano fase Y Z . ¿Qué interpretación biológica tienen los
resultados?

286
c) Se puede considerar una modificación del problema considerando que cuando
haya demasiados linces ellos compiten entre sı́ por la comida, quedando el
modelo como

 0
 y (t) = 0,6 y(t) − 0,018 y(t) z(t),
z 0 (t) = −0,01 z 2 (t) + 0,012 y(t) z(t),
y(0) = 100, z(0) = 35.

Donde también hemos reajustado el parámetro que multiplica a z 2 . Resuélva-


lo con Matlab y dibuje el plano fase Y Z en los intervalos [0, 10] y [0, 20].

Solución: El sistema a resolver es


 0
 y (t) = 0,6 y(t) − 0,018 y(t) z(t),
z 0 (t) = −0,7 z(t) + 0,012 y(t) z(t),
y(0) = 100, z(0) = 35.

Puesto que podemos escoger el método RK de 2 estados y orden 2, tomaremos


α = 1/2 en (6.14) obteniendo el método cuya tabla de Butcher es

0
1/2 1/2
0 1

es decir,

yn+1 = yn + hk2 (tn , yn ) = yn + hf (tn + h/2, yn + h/2f (tn , yn )).

Hay que tener en cuenta que f es una función vectorial y el problema manualmente
se vuelve muy tedioso
 
f1 (tn , yn , zn ) 0,6 yn − 0,018 yn zn ,
f (tn , yn ) = f (tn , yn , zn ) = =
f2 (tn , yn , zn ) −0,7 zn + 0,012 yn zn .

Ası́,
  
h f1 (tn , yn , zn )
yn
yn + h/2f (tn , yn ) = +
zn
2 f2 (tn , yn , zn )
h
 
yn + 2 (0,6yn − 0,018yn zn )
= ,
zn + h2 (−0,7zn + 0,012yn zn )
y

f (tn + h/2, yn + h/2f (tn , yn )) =


 
0,6(yn + 2 (0,6yn − 0,018yn zn )) − 0,018(yn + 2 (0,6yn − 0,018yn zn ))(zn + h
h h
2
(−0,7zn + 0,012yn zn ))
−0,7(zn + h2
(−0,7zn + 0,012yn zn )) + 0,012(yn + h2
(0,6yn − 0,018yn zn ))(zn + h2
(−0,7zn + 0,012yn zn ))

287
Luego, lo aplicamos con h = 0,25,
   
yn+1 yn
= + 0,25 ×
zn+1 zn
0,6(yn + 0,125(0,6yn − 0,018yn zn )) − 0,018(yn + 0,125(0,6yn − 0,018yn zn ))(zn + 0,125(−0,7zn + 0,012yn zn ))

−0,7(zn + 0,125(−0,7zn + 0,012yn zn )) + 0,012(yn + 0,125(0,6yn − 0,018yn zn ))(zn + 0,125(−0,7zn + 0,012yn zn ))

Por tanto, sólo queda sustituir numéricamente desde n = 0 hasta n = 3 ya que


N = 1/0,25 = 4. Por ejemplo, el primer paso serı́a
   
y1 100
= + 0,25 ×
z1 35
0,6(100 + 0,125(60 − 0,018 × 3500)) − 0,018(100 + 0,125(60 − 0,018 × 3500))(35 + 0,125(−0,7 × 35 + 0,012 × 3500))

−0,7(35 + 0,125(−0,7 × 35 + 0,012 × 3500)) + 0,012(100 + 0,125(60 − 0,018 × 3500))(35 + 0,125(−0,735 + 0,012 × 3500))
 
98,2721
=
39,6066

que nos indica el número estimado de conejos (98) y linces (40) a los tres meses.
Análogamente se obtiene

y2 = 94,5026 z2 = 44,4617
y3 = 88,8885 z3 = 49,2152
y4 = 81,8928 z4 = 53,4428

b) Si queremos de verdad abordar este PVI de EDO no lineales debes usar el


ordenador. Es muy sencillo adaptar el programa presentado en las prácticas con
Matlab a nuestra situación. De hecho podemos generar de forma elemental un
programa general para todos los métodos de RK explı́citos de 2 estados y orden
2.

function [t,y]=rk2g(f,a,b,y0,b1,n)
h=(b-a)/n;
m=length(y0);
y=zeros(m,n+1);
t=a+h*(0:n); y(:,1)=y0’;
b2=1-b1;
c2=1/(2*b2);
for i=1:n
k1=feval(f,t(i),y(:,i));
k2=feval(f,t(i)+c2*h,y(:,i)+c2*h*k1);
y(:,i+1)=y(:,i)+h*(b1*k1+b2*k2);
end

Observe que hemos introducido un parámetro nuevo b1 en el programa con esto


es suficiente pues sabemos que b1 + b2 = 1 para que sea convergente (Teorema
6.4) y que b2 c2 = 1/2 para que sea de orden 2 (Lema 6.1). Por tanto, si queremos
usar el método del apartado a) bastará tomar b1 = 0. Resolvamos,
lc=@(t,y)[0.6*y(1)-0.018*y(1)*y(2);-0.7*y(2)+0.012*y(1)*y(2)];

288
[t,y]=rk2g(lc,0,10,[100,35],0,100);
Podemos dibujar las gráficas de la evolución de linces y conejos como
plot(t,y(1,:),t,y(2,:))
obteniendo la Figura F.7.

Figura F.7: Población de linces y conejos en un periodo de 10 años


110

100

90 Conejos
Linces
80

70

60

50

40

30

20

10
0 1 2 3 4 5 6 7 8 9 10

Fuente: Elaboración propia.

Si queremos dibujar en el plano YZ, es decir, conejos frente a linces, solo hay
que hacer.
plot(y(1,:),y(2,:))
obteniendo la Figura F.8. Desde el punto de vista biológico nos quiere decir que
estas dos especies cohabitan y coexisten si no hay intervención de agentes externos
como, por ejemplo, los humanos. A la gráfica F.8 se le suele denominar ciclo de
la vida.
c) Procedemos como en el apartado b) y por variar de método RK vamos a
tomar b1 = 1/2.
lcm=@(t,y)[0.6*y(1)-0.018*y(1)*y(2);-0.01*y(2).^2+0.012*y(1)*y(2)];
[t,y]=rk2g(lcm,0,10,[100,35],1/2,100);
[t1,y1]=rk2g(lcm,0,20,[100,35],1/2,100);
Si dibujamos los planes fases requeridos obtenemos las Figuras F.9 y F.10.
Ejemplo F.14. Considere el método de Adams–Bashforth (AB) de 4 pasos (6.18).
a) Dibuje su región de A–estabilidad.

b) Aplı́quelo a la resolución del sencillo PVI


 0
 y1 (t) = −101y1 (t) + 99y2 (t), t ∈ [0, 1]
y 0 (t) = 99y1 (t) − 101y2 (t),
 2
y1 (0) = 2, y2 (0) = −1.

289
Figura F.8: Ciclo de la vida
60

55

50

45

Linces 40

35

30

25

20

15
30 40 50 60 70 80 90 100 110
Conejos

Fuente: Elaboración propia.

Figura F.9: Plano fase en [0,10] Figura F.10: Plano fase en [0,20]
70 70

65 65

60 60

55 55

50 50
Linces

Linces

45 45

40 40

35 35

30 30

25 25
10 20 30 40 50 60 70 80 90 100 10 20 30 40 50 60 70 80 90 100
Conejos Conejos

Fuente: Elaboración propia.

Obtenga el valor de la solución en los puntos t = 0,025 y t = 0,83.


Solución: a) El método de AB de 4 pasos viene dado por:

h
yn+4 − yn+3 = (55fn+3 − 59fn+2 + 37fn+1 − 9fn ) .
24
El dibujo de su región de A–estabilidad se puede hacer de forma totalmente
análoga a la hecha en el Ejemplo F.11 para el método de Adams–Moulton de 3
pasos. Por tanto,

al=@(r) r.^4-r.^3;
be=@(r) 1/24*(55*r.^3-59*r.^2+37*r-9);
frontera=[];

290
for j=0:pi/1000:2*pi
v1=al(exp(1i*j));
v2=be(exp(1i*j));
z=v1/v2;
frontera=[frontera,z];
end
plot(frontera,’*r’, ’MarkerSize’, 1.5)

obteniendo la Figura F.11 donde en la venta gráfica se ha marcado con una lı́nea
negra el eje imaginario.

Figura F.11: Región de A–estabilidad del método de Adams–Bashforth de 4 pasos.


1

0.8 Región de
A-estabilidad
0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5

Fuente: Elaboración propia.

b) Lo primero es analizar la estabilidad.


a=[-101, 99; 99, -101];
vp=eig(a)
vp =
-200
-2
Como todos los valores propios son negativos tenemos que el PVI es asintóti-
camente estable. Entonces veamos si es stiff, para eso calculamos su radio de
stiffness (ver (6.11))
rs = max(abs(real(vp)))/min(abs(real(vp)))
rs =
100
Estamos ante un PVI stiff, ası́ que tendremos que usar AB dentro de su
región de A–estabilidad. Conocemos del Capı́tulo 6 que el radio de A–estabilidad
del método de AB de 4 pasos es −3/10. Por tanto, el paso ha de cumplir por
(6.12)
3/10 3/10 3
h< = = = 0,0015.
máx(|<(λi )|) 200 2000

291
La primera parte de apartado b) es elemental con el programa ab4.m que hemos
creado en la sección anterior.

si=@(t,y)[-101*y(1)+99*y(2); 99*y(1)-101*y(2)];
[t,y]=ab4(si,0,1,[2,-1],1000);
plot(t,y(1,:),’o’, t, y(2,:),’o’)

obteniendo la Figura F.12

Figura F.12: Solución numérica del PVI usando el método AB de 4 pasos.


2

1.5 y
1

y2

0.5

-0.5

-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Fuente: Elaboración propia.

Si queremos evaluar en el punto t = 0,025 hay que tener en cuenta que tn =


a + n h , de donde n = (tn − a)/h . En nuestro caso, tn := z = 0,025 , a = 0 y
h = 0,001 . Luego,
y(:,0.025/0.001+1)
ans =
0.4858
0.4655
Para el otro punto se hace de forma análoga, pero Matlab nos da la sorpresa
siguiente
y(:,0.83/0.001+1)
Subscript indices must either be real positive integers or logicals.
Esto es debido a que 0.83/0.001+1 no es identificado por Matlab como un número
entero positivo. Sin embargo, 0,025/0,001 + 1 sı́ ha sido interpretado como entero
positivo. Ante esta situación hay dos opciones: poner directamente 831, o bien
y(:,round(0.83/0.001+1))
ans =
0.0951
0.0951

292
Es importante observar que en las particiones se numera desde 0, sin embargo
Matlab numera desde 1 por eso hay que poner “+1”, es decir, en el ejemplo ante-
rior el punto t = 0,83 para nuestra notación corresponde a t830 porque numeramos
desde 0, pero para Matlab es el punto t831 pues numera desde 1. 2
Ejemplo F.15. Resuelva con una orden ode el PVI
 00
y (t) + ty 0 (t) + y(t) = sen(t), t ∈ [0, 20],
(F.6)
y(0) = 1, y 0 (0) = −2.

Solución. Para resolverlo numéricamente hay que pasarlo a sistema de EDO.


Sea y1 (t) := y(t) e y2 (t) := y 0 (t), entonces

 y1 (t) = y2 (t))
y2 (t) = −ty2 (t) − y1 (t) + sen(t),
y1 (0) = 1, y2 (0) = −2.

Lo resolvemos con ode45 que suele ser el más recomendado.


edo2=@(t,y) [y(2);-y(1)-t.*y(2)+sin(t)];
[t,y]=ode45(edo2,[0,20],[1, -2]);
plot(t, y(:,1))
obteniendo la Figura F.13. Fı́jese que sólo se ha dibujado y1 (t) = y(t), pues
estamos resolviendo una EDO de segundo orden, no un sistema, en este caso el
sistema de EDO es auxiliar.

Figura F.13: Solución numérica del PVI (F.6).


1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 2 4 6 8 10 12 14 16 18 20

Fuente: Elaboración propia.

Si observa el Workspace Matlab (versión 2017a) usa 425 puntos en un PC


estándar. Sin embargo si usa la orden ode23t que es para sistemas stiff, sólo
necesita 126 puntos. Note que es normal ya que la Figura F.13 muestra un decai-
miento brusco al comienzo del intervalo. 2
Ejemplo F.16. La invasión zombi. En un artı́culo de 2009, Munz et al. ([10])
describieron cómo podrı́a ser una invasión zombi. En este ejemplo plantearemos

293
una versión más simple. Se consideran 3 poblaciones: los humanos h(t), los zombis
z(t) y los zombis “muertos” r(t) pero que pueden volver a ser zombis. Se supone
que un zombi puede convertir a un humano en zombi y que los zombis no pueden
ser asesinados pero un humano sı́ los puede mandar temporalmente a la clase de
zombis muertos o inactivos. Los zombis no se atacan entre sı́. El tiempo t está
dado en meses. En este contexto, el modelo diferencial que se plantea es:
 0
 h (t) = −βh(t)z(t),
z 0 (t) = ...
 0
r (t) = αh(t)z(t) − µr(t),

donde α es la constante que expresa la proporción de zombis eliminados cuando se


encuentran con humanos, β expresa la proporción de humanos que se convierten
en zombis cuando ambas poblaciones se encuentran y µ la proporción de zombis
muertos o inactivos que pasan a zombis.

a) ¿Cual es la ecuación que determina la evolución de los zombis, es decir,


z 0 (t)?

b) Consideramos el escenario de ciencia ficción donde un grupo de 10 zombis


ataca a una pequeña población (500 humanos) de la Alpujarra (Andalucı́a,
España). Tomando α = 0,006, β = 0,01 y µ = 0,02, y aplicando el método de
Adams–Bashforth de 2 pasos con Matlab obtenga la evolución de la población
de zombis y humanos en [0, 4].

c) Por cierto, ¿quién gana? ¿Podrı́a conseguir que la situación cambiara? Si


es ası́, ¿cómo?

Solución. a) Cuando nos piden z 0 (t) nos están preguntando por como evo-
luciona la población de zombis. La respuesta es sencilla crecen en función de los
humanos que convierten a zombis (βh(t)z(t)) y de los zombis muertos o inactivos
(µr(t)) y decrecen en función de los que son eliminados temporalmente por los
humanos (−αh(t)z(t)). Por tanto,

z 0 (t) = (β − α)h(t)z(t) + µr(t),

quedando el sistema completado como


 0
 h (t) = −βh(t)z(t),
z 0 (t) = (β − α)h(t)z(t) + µr(t), (F.7)
 0
r (t) = αh(t)z(t) − µr(t).

En verdad, este sistema es muy similar a un sistema clásico de EDO de Teorı́a


de Epidemias conocido como SIR (ver, por ejemplo, [5] para saber más de Teorı́a
de Epidemias).
b) Si particularizamos el sistema (F.7) a los datos que se nos proporciona
obtenemos

294
 0

 h (t) = −0,01h(t)z(t),
 0
z (t) = 0,004h(t)z(t) + 0,02r(t),
(F.8)

 r0 (t) = 0,006h(t)z(t) − 0,02r(t),
h(0) = 500, z(0) = 10, r(0) = 0.

Tenemos que resolver el sistema (F.8) con el método de Adams–Bashforth (AB) de


2 pasos. Primero deduzcamos el método. En el esquema general (6.22) tomamos
k = 2, obteniendo
Z 1 
yn+2 − yn+1 = h 1i=0 γi ∇i fn+1 ,

−s
P
i
con γi = (−1) ds.
y0 , . . . , y1 . 0 i

Tenemos:

∇0 fn+1 = fn+1 ,
∇1 fn+1 = fn+1 − fn ,
Z 1  Z 1
−s
γ0 = ds = ds = 1,
0 0 0
Z 1  Z 1 s=1
−s s2 1
γ1 = − ds = sds = = .
0 1 0 2 s=0 2

Nos queda el método de AB de 2 pasos


 
1 h
yn+2 − yn+1 = h fn+1 + (fn+1 − fn ) = (3fn+1 − fn ).
2 2

El método es fuertemente estable ya que α(r) = r2 − r cuyas raı́ces son r1 = 0 y


r2 = 1. Ası́, sabemos por el Teorema 6.9 que el orden máximo que puede tener
es 3. Veamos que orden tiene exactamente usando las fórmulas dadas por (6.21).
Tenemos:
3 1
α(r) = r2 − r, β(r) = r − .
2 2
Luego,
1 3
C1 = (−1 + 4) − = 0,
2 2
1 13 7 3 5
C2 = (−1 + 4) − = − = 6= 0.
2 22 6 4 12
Por tanto, el método es de orden 2 y de acuerdo a la Proposición 6.6 para calcular
y1 tenemos que usar un método de orden al menos 2. Podemos usar cualquier
método de Runge–Kutta de 2 estados y orden 2 que fueron implementados en el
Problema F.13. La implementación de AB de 2 pasos es totalmente similar a la
hecha en la Sección F.2 de este apéndice. Por tanto,

function [t,y]=ab2(f,a,b,y0,n)
h=(b-a)/n;

295
m=length(y0);
t=a+h*(0:n);
y=zeros(m,n+1);
[w,z]=rk2g(f,a, a+h,y0,1/2,1);
for i=1:2
y(:,i)=z(:,i);
end
for i=1:n-1
y(:,i+2)=y(:,i+1)+h/2*(3*feval(f,t(i+1),y(:,i+1))-...
feval(f,t(i),y(:,i)));
end

Nota F.3. Observe que se ha usado el programa rk2g implementado en el Pro-


blema F.13 tomando b1 = 1/2 y con n = 1 pues solo necesitamos calcular y1 .

La resolución numérica del PVI (F.8) es ahora sencilla. Si deseamos resolverlo


con un paso h = 10−3 , entonces n = 4000 y realizamos:
zom=@(t,y) [-0.01*y(1)*y(2); 0.004*y(1)*y(2)+0.02*y(3);0.006*y(1)*y(2)-0.02*y(3)];
[t,y]=ab2(zom,0,4,[500,10,0],4000);
Por ejemplo, si quisiéramos conocer la estimación de las poblaciones a los 3
meses podemos proceder como en el Ejemplo F.14,
y(:,round(3/0.001+1))
ans =
16.7390
212.1852
281.0758
Es decir la población de humanos está casi extinta, sólo quedan aproximadamente
17 humanos, mientras que hay 212 zombis y 281 zombis muertos o inactivos. La
gráfica de la evolución en el perı́odo pedido se puede ver en la Figura F.14.
c) Del apartado b) y con esos datos hemos visto que esta población humana
de la Alpujarra se extingue. ¿Se podrı́a evitar? La clave esta en ver que pasa con
la cantidad β − α. Con los datos anteriores β − α = 0,004, eso quiere decir que
en los enfrentamientos entre humanos y zombis salen ganando los zombis y por
tanto la consecuencia lógica es que los humanos de esa población desaparecen.
Podemos tomar β −α < 0, esto significarı́a que los humanos les ganan a los zombis
en los enfrentamientos. Tomemos β igual que en el apartado b) pero α = 0,011.
Entonces
zom=@(t,y) [-0.01*y(1)*y(2); -0.001*y(1)*y(2)+0.02*y(3);0.011*y(1)*y(2)-0.02*y(3)];
[t,y]=ab2(zom,0,4,[500,10,0],4000);
plot(t,y(1,:),t,y(2,:),t,y(3,:))
obteniendo la Figura F.15.

296
Figura F.14: Evolución de las poblaciones del PVI (F.8).
500

450
Humanos
400 Zombis
Zombis muertos o inactivos
350

300

250

200

150

100

50

0
0 0.5 1 1.5 2 2.5 3 3.5 4

Fuente: Elaboración propia.

Figura F.15: Evolución de las poblaciones con datos diferentes.


500

450

400

350
Humanos
300 Zombis
Zombis muertos o inactivos
250

200

150

100

50

0
0 0.5 1 1.5 2 2.5 3 3.5 4

Fuente: Elaboración propia.

Ahora en 4 meses no se extinguen pero ¿qué pasa en 2 años? A los 2 años


la población de ese pueblo ha quedado extinta. Los humanos ganaban en los
enfrentamientos. ¿Cómo explica esto? Experimente y reflexione.
Este es un modelo básico donde en la población humana no se ha tenido en
cuenta ni nacimientos, ni muertes por causa natural. Puede intentar mejora el
modelo. 2

297
F.4. Ejercicios propuestos
Con los 16 ejemplos (o ejercicios resueltos) de la Sección F.3 de este apéndi-
ce el lector puede tener una idea de los problemas que puede resolver y cómo.
Además, como ya hemos comentado, la literatura sobre métodos numéricos para
la resolución de PVI es amplı́sima (un escueto resumen son los textos considera-
dos en las referencias del Capı́tulo 6) y además existe gran variedad de material
en Internet. Por tanto, aquı́ propongo unos pocos ejercicios al lector a la vez que
le animo a la consulta de otros textos.
1. Estudiar la estabilidad de los siguientes PVI con condiciones iniciales genéri-
cas y cuya EDO viene dada por:
a) y 0 (t) = Ay(t) con
   
−1 0 −1 10
(a1) A = (a2) A =
 0 −100
  0 −2
1 3 0 1
(a3) A = (a4) A =
3 1 −1 0

b) y (4) (t) = 2y (3) (t) + 7y 00 (t) − y(t) .


c) y 000 (t) + 5y 00 (t) − 2y 0 (t) − 24y(t) = et .
d) y 00 (t) + 4y(t) = t .
e) y 00 (t) + 2y 0 (t) + 2y(t) = t + 3 .
f) y 0 (t) = Ay(t) con
 1 3
1 − 34 sen(2t)

− 4 + 4 cos(2t)
A(t) =
−1 − 34 sen(2t) − 14 − 43 cos(2t)

g) y 000 (t) − 6y 00 (t) + 11y 0 (t) − 6y(t) = 0.


h) y 00 (t) − 4y 0 (t) + 3y(t) = t + 2.
i ) y 00 (t) + a2 y(t) = 0.
2. a) Dé un ejemplo de ecuación diferencial de tercer orden que sea asintóti-
camente estable. Dé otro ejemplo de ecuación diferencial de cuarto
orden que sea estable pero no asintóticamente estable.
b) Dado el PVI

y 0 (t) = sen(t)

t
y(t) , t ∈ [−2, −0,001] ,
y(−2) = 1 ,

se considera el problema perturbado

z 0 (t) = sen(t)

t
z(t) + ε , t ∈ [−2, −0,001] ,
z(−2) = 1 + δ .

De una cota para |y(t) − z(t)| con t ∈ [−2, −0,001] . Interprete el


resultado.

298
c) Considere el P.V.I.
 0
 y1 (t) = 2sen(y1 (t)) + sen(y2 (t)) , t ∈ [0, 2]
y 0 (t) = sen(y1 (t)) + 2sen(y2 (t)) ,
 2
y1 (0) = α , y2 (0) = β, α,β ∈ R.

¿Es un problema bien planteado? Halle el número de condición del


problema.

3. Se tiene el siguiente modelo matemático de un fenómeno fı́sico


 0
y (t) = f (t, y) , t ∈ [0, a], a > 0,
y(0) = y0 ,
2
donde f (t, y) = 4y − e−t . Sin embargo, el modelo resulta más realista si se
cambia y0 por ỹ0 y se introduce un ruido especı́fico, es decir, una pertur-
bación de f (t, y) determinada por una combinación convexa de funciones
seno y coseno. Hallar una cota para |y(t) − ỹ(t)| siendo ỹ(t) la solución del
problema perturbado. ¿Es estable este PVI?

4. Calcular, resolviendo el PVI adecuado y con un método de un paso:


Rt 2
a) erf(2) siendo erf(t) = √2π 0 e−x dx la función error.
Rt
b) f (1) siendo f (t) = 0 sen(x2 )dx la integral de Fresnel.

5. a) Sea el método

yn+1 = yn + h[ 34 f (xn , yn ) − 31 f (xn − 32 h, yn − 32 hf (xn , yn ))],




y(a) = y0 ,
 0
y (t) = f (t, y),
asociado al PVI ¿Qué tipo de método es? ¿Es con-
y(0) = y0 .
vergente?, ¿de qué orden?
b) Se considera el método de Merson dado por la tabla de Butcher:

0 0 0 0 0 0
1/3 1/3 0 0 0 0
1/3 1/6 1/6 0 0 0
1/2 1/8 0 3/8 0 0
1 1/2 0 −3/2 2 0
1/6 0 0 2/3 1/6

¿Cumple las condiciones para ser convergente? ¿Es explı́cito o implı́ci-


to? Determine su región de A-estabilidad.

6. El modelo de una masa unida a un resorte no amortiguado es


 00
y (t) + 119y(t) = 0, t ∈ [0, 5],
y(0) = 16 , y 0 (0) = 0.

299
Resolverlo numéricamente con el método de Euler y con el de Runge–Kutta
clásico. Compare las soluciones con la solución analı́tica.

7. Determinar cuáles de los siguientes PVI son stiff


 0
y (t) = 3y1 (t) − y2 (t),
 10


y2 (t) = −2y1 (t) + 4y2 (t) − 3y3 (t), t ∈ [0, 2],
a) 0
y (t) = −y 2 (t) + y3 (t),
 3


y1 (0) = y2 (0) = 0, y3 (0) = −1.
 00
y (t) = −20y 0 (t) − 19y(t), t ∈ [0, 1],
b)
y(0) = 2, y 0 (0) = −20.
En los casos afirmativo, ¿qué paso tomarı́a si aplicara el método de Runge–
Kutta clásico? ¿Y si fuera con el de Adams–Bashforth de 3 pasos? Con un
paso adecuado para cada situación y con ayuda de Matlab, resuélvalos.

8. Razone brevemente si son verdaderas o falsas las siguientes aserciones:

a) A un PVI cuya ecuación diferencial de segundo orden es inestable se


le debe aplicar necesariamente un método numérico A–estable.
b) La tabla de Butcher
0
α β
1 1
2 2
+α−β
proporciona infinitos métodos de Runge–Kutta de 2 pasos y de orden
2.

9. Se conoce, gracias a la experimentación, que la concentración en sangre C(t)


de un medicamento decrece con el tiempo proporcionalmente a la exponen-
cial de dicha concentración. A un paciente se le ha suministrado una dosis
d de medicamento.

a) Establezca el modelo diferencial. Para el tiempo T (en horas), ¿cuál


serı́a la concentración en la sangre?
b) Si se toma la constante de proporcionalidad igual a −0,75 y d =
1,5 mg/cm3 , ¿en qué momento deja de haber concentración del medi-
camento en la sangre? Esta pregunta se ha de resolver numéricamente,
manualmente con h = 0,1, y analı́ticamente. Compare ambos resulta-
dos e interprételos. Ahora trabaje con Matlab, ¿qué método escogerı́a?
¿con qué paso? y ¿por qué? Resuélvalo con la elección hecha.
c) ¿Qué ocurre en T=2 horas? Dé una interpretación razonada del resul-
tado.

10. Estudiar las propiedades (convergencia y orden) de los siguientes métodos


numéricos:

a) yn+2 − (1 + a)yn+1 + ayn = 21 h [(3 − a)fn+1 − (1 − a)fn ], a ∈ R.

300
b) Método de Quade
8 6
yn+4 − (yn+3 − yn+1 ) − yn = h[fn+4 + 4fn+3 + 4fn+1 + fn ].
19 19
11. Resuelva el siguiente PVI con el método de Adams–Bashforth de 4 pasos.
 0
 y1 (t) = y1 (t) + 4y2 (t) − et ,
y20 (t) = y1 (t) + y2 (t) + 2et , t ∈ [0, 1],
y1 (0) = 4, y2 (0) = 54 .

12. Dibuje las regiones de A–estabilidad de los métodos de diferencias regresivas


(6.24) que sean convergentes.

13. La ecuación que describe el movimiento libre (no amortiguado y sin fuerzas
externas) de una masa m sujeta a un resorte es

m y 00 (t) + k y(t) = 0, (F.9)


r
k
donde k > 0 es la llamada constante del resorte. Denote por ω = que
m
se denomina frecuencia. Entonces (F.9) queda como

y 00 (t) + ω 2 y(t) = 0.

Tome como condiciones iniciales y(0) = 1, y 0 (0) = 1 y como frecuencia


ω = 5.

a) Encuentre la posición de la masa m en el instante t, o sea, y(t) de


forma analı́tica (y simplificada).
b) Aplique el método de Adams–Bashforth de 2 pasos de forma manual
(tome h = 0,25) y también usando Matlab.
c) Construya una tabla donde aparezca el valor real de la solución y las
aproximaciones obtenidas en b), ası́ como los errores absolutos come-
tidos en cada caso. Comente y explique el por qué de los resultados.

14. La población de lagartos en un determinado paraje de Cabo de Gata a 1 de


marzo de 2017 era de 300. Sea y(t) la población de lagartos en el tiempo t
en años, se ha estimado la siguiente EDO para la evolución de los lagartos
en los próximos dos años:

y(y − 1500)
y 0 (t) = − .
3200
a) Calcule la evolución de la población de lagartos a lo largo de dos años
con un método numérico de orden 4. Represente gráficamente la solu-
ción.
b) ¿Qué población se estima para el 1/3/2018?, ¿y para el 1/9/2018? (los
datos han de obtenerse con el método numérico).

301
F.5. Algunas demostraciones
Esta sección está destinada a aquellos avezados lectores que quieran profundi-
zar algo más en los fundamentos matemáticos de la resolución numérica de PVI.
La escueta longitud del Capı́tulo 6 no ha hecho posible incluir demostraciones,
aquı́ a modo de ilustración se incluyen dos: teorema de Lax y teorema sobre la
convergencia de los métodos de Runge–Kutta explı́citos. Además, se incluye como
se generan los métodos de Adams.

F.5.1. Demostración del Teorema de Lax 6.2.


Recordemos que dicho teorema nos decı́a:

Teorema F.1. Un método numérico de 1 paso (6.8) consistente y estable es


convergente.

Demostración: Se considera el problema perturbado



y(tn+1 ) = y(tn ) + h(φ(tn , y(tn ), h) + εn ), n = 0, . . . , N − 1,
y0 .

Por ser (6.8) estable se tiene

máx ||yn − y(tn )|| ≤ M1 ||y0 − y0 || + M2 máx ||εn || = M2 máx ||εn ||.
n=0,...,N n=0,...,N −1 n=0,...,N −1
(F.10)
Despejando εn del método perturbado y aplicando que (6.8) es consistente se
deduce

y(tn+1 ) − y(tn )
lı́m máx ||εn || = lı́m máx − φ(tn , y(tn ), h) = 0.
h→0 n=0,...,N −1 h→0 n=0,...,N −1 h

Tomando lı́mites en (F.10) y aplicando el lı́mite anterior se tiene

lı́m sup máx ||yn − y(tn )|| ≤ 0 ⇒ lı́m e(h) = 0. 2


h→0 n=0,...,N h→0

Nota F.4. Se vio posteriormente en el Teorema de Lax generalizado 6.6 que la


consistencia y la estabilidad son condiciones necesarias y suficientes de conver-
gencia. Demostrar la condición suficiente de convergencia en el Teorema 6.6 es
prácticamente igual que la que se acaba de hacer y se anima al lector a realizar-
la. La condición necesaria, si bien no es difı́cil, requiere unas técnicas algo más
sofisticadas que superan los objetivos de este capı́tulo.

F.5.2. Demostración del teorema sobre la convergencia de


los métodos de Runge–Kutta explı́citos (Teorema
6.4).
Recordamos que este teorema nos decı́a:

302
Teorema F.2. Bajo las hipótesis del Teorema 6.1 de Cauchy–Lipschitz, h sufi-
R
X
cientemente pequeña y la condición adicional bi = 1, se tiene que los métodos
i=1
de Runge–Kutta explı́citos son convergentes.
Para probar este teorema necesitamos un resultado general para los métodos
de 1 paso, a saber,
Proposición F.1. Si φ es continua en [0, b] × Rm × R+ , Lipschitz respecto a la
segunda variable (y), φ(t, y, 0) = f (t, y) y h suficientemente pequeña, entonces
el método numérico (6.8) es convergente.
Demostración de la proposición: Podemos observar que si φ en el método
numérico (6.8) es continua en [0, b] × Rm × R+ , entonces el hecho que φ(t, y, 0) =
f (t, y) es equivalente a que el método sea consistente.
Vamos ahora a probar que es estable. Consideramos el método perturbado
(6.10), entonces

||yn+1 − zn+1 || = ||yn + hφ(tn , yn , h) − zn − hφ(tn , zn , h) − hεn ||


≤ ||yn − zn || + h||φ(tn , yn , h) − φ(tn , zn , h)|| + h||εn ||
≤ ||yn − zn || + hL||yn − zn || + h||εn ||
= (1 + hL)||yn − zn || + h||εn ||, (F.11)

donde hemos usado que φ es Lipschitz respecto a la segunda variable, es decir,

||φ(tn , yn , h) − φ(tn , zn , h)|| ≤ L||yn − zn ||.

Vamos a probar por inducción que:

(1 + hL)n − 1
||yn − zn || ≤ (1 + hL)n ||y0 − z0 || + máx ||εk ||, n ≥ 1. (F.12)
L k≤n−1

Para n = 1 es directo tomando n = 0 en la desigualdad (F.11). Supongamos lo


cierto para n y lo probamos para n + 1. Aplicando primero (F.11) y después la
hipótesis de inducción tenemos:
||yn+1 − zn+1 || ≤ (1 + hL)||yn − zn || + h||εn ||
(1 + hL)n − 1
 
≤ (1 + hL) (1 + hL)n ||y0 − z0 || + máx ||εk || + h||εn ||
L k≤n−1

(1 + hL)n+1 − 1 − hL
= (1 + hL)n+1 ||y0 − z0 || + máx ||εk || + h||εn ||
L k≤n−1

(1 + hL)n+1 − 1 − hL
 
≤ (1 + hL)n+1 ||y0 − z0 || + + h máx ||εk ||
L k≤n

(1 + hL)n+1 − 1
= (1 + hL)n+1 ||y0 − z0 || + máx ||εk || .
L k≤n

Teniendo en cuenta que et ≥ t + 1, para t ≥ 0 y usando (F.12) obtenemos:

ehnL − 1
||yn − zn || ≤ ehnL ||y0 − z0 || + máx ||εk ||
L k≤n−1

ebL − 1
≤ ebL ||y0 − z0 || + máx ||εk ||,
L k≤n−1

303
donde hemos usado que hn ≤ hN = h hb = b. Por tanto, tomando

ebL − 1
M1 = ebL y M2 = ,
L
hemos probado que el método (6.8) es estable. Aplicando el Teorema de Lax 6.2,
al ser consistente y estable es convergente. 2

Demostración del teorema: Para los métodos de Runge–Kutta (RK) se tiene


que la función φ del esquema general de los métodos de 1 paso (6.8) viene dada
por
R
X
φ(t, y, h) = bi ki (tn , yn , h),
i=1

que es continua por serlo f y


R
X R
X
φ(t, y, 0) = bi ki (t, y, 0) = f (t, y) bi = f (t, y).
i=1 i=1

Entonces como hemos visto en la demostración de la Proposición F.1 los métodos


de RK son consistentes. Queda probar que son estables. Entonces de acuerdo de
nuevo a la Proposición F.1 bastarı́a ver que φ es lipschitziana para la segunda
variable.

XR
||φ(t, y, h) − φ(t, z, h)|| = bi (ki (t, y, h) − ki (t, z, h)


i=1
R
X
≤ |bi | ||ki (t, y, h) − ki (t, z, h)||. (F.13)
i=1

Pero,
||k1 (t, y, h) − k1 (t, z, h)|| = ||f (t, y) − f (t, z)|| ≤ L||y − z||
Para simplificar la notación usaremos

ki := ki (t, y, h), k̃i := ki (t, z, h).

||k2 (t, y, h) − k2 (t, z, h)|| = ||f (t + hc2 , y + ha21 k1 ) − f (t + hc2 , z + ha21 k̃1 )||
≤ L||y + ha21 k1 − z − ha21 k̃1 || ≤ L||y − z||
+ L|a21 |h||k1 − k̃1 || ≤ L||y − z|| + L2 |a21 |h|||y − z||
= (L + L2 h|a21 |)||y − z|| := C2 (L, h)||y − z||.

304
Se hace lo mismo con los otros ||ki − k̃i ||, i = 3, . . . R − 1 y
R−1
X R−1
X
||kR (t, y, h) − kR (t, z, h)|| ≤ L||y + h aRj kj − z − h aRj k̃j ||
j=1 j=1
R−1
X
≤ L||y − z|| + Lh |aRj |||kj − k̃j ||
j=1
R−1
X
≤ L||y − z|| + (Lh |aRj |Cj (L, h))||y − z||
j=1
:= CR (L, h)||y − z||,

donde C1 (L, h) = L. Por tanto aplicando estas desigualdades en (F.13) se obtiene


R
X
||φ(t, y, h) − φ(t, z, h)|| ≤ |bi | ||ki (t, y, h) − ki (t, z, h)||
i=1
R
!
X
≤ |bi |Ci (L, h) ||y − z|| ≤ C(L)||y − z||,
i=1

donde en el último paso se ha utilizado que h es suficientemente pequeña. Por


tanto, φ es Lipschitz respecto a la segunda variable y de aquı́ los métodos de RK
son estables. Aplicando el Teorema de Lax 6.2 o directamente la Proposición F.1
tenemos que los métodos RK explı́citos son convergentes. 2

F.6. Generación de los métodos de Adams


Una manera de obtener métodos multipaso lineales es mediante integración.
Por comodidad usaremos un PVI escalar, aunque los métodos son aplicables a
PVI vectoriales. Para ello integraremos el polinomio interpolador a una nube de
puntos (para lo relacionado con interpolación el lector puede consultar los textos
de la bibliografı́a del Capı́tulo 6).
Paso 1. Se considera la nube de puntos y su polinomio interpolador de Newton en
diferencias regresivas. En este caso la nube es:

(tn , f (tn , y(tn ))), . . . , (tn+k−1 , f (tn+k−1 , y(tn+k−1 ))),

y por tanto el polinomio interpolador de grado k − 1 es


k−1  
X
i −s t − tn+k−1
Pk−1,n (t) = (−1) ∇i f (tn+k−1 , y(tn+k−1 )), s= , k ≥ 1,
i=0
i h

s

donde i son números combinatorios generalizados definidos como
 
s s(s − 1) · · · (s − (i − 1)) s(s − 1) · · · (s − i + 1)
= = , i ∈ N ∪ {0}.
i i! i!

305
Por tanto,
 
−s −s(−s − 1) · · · (−s − i + 1) s(s + 1) · · · (s + i − 1)
= = (−1)i .
i i! i!

Paso 2. Se integra y 0 (t) = f (t, y(t)) entre tn+k−1 y tn+k y se cambia f por su poli-
nomio interpolador Pk−1,n (t).
Z tn+k Z tn+k
0
y(tn+k ) − y(tn+k−1 ) = y (t)dt = f (t, y(t))dt
tn+k−1 tn+k−1
Z tn+k
≈ Pk−1,n (t)dt
tn+k−1
k−1  tn+k 
−s
X Z
i i
= (−1) ∇ f (tn+k−1 , y(tn+k−1 )) dt
i=0 tn+k−1 i
k−1 Z 1 
X
i i −s
= h (−1) ∇ f (tn+k−1 , y(tn+k−1 )) ds
i=0 0 i
k−1
X
= h γi ∇i f (tn+k−1 , y(tn+k−1 )),
i=0

donde hemos notado


1  
−s
Z
i
γi = (−1) ds.
0 i

Paso 3. Si queremos tener una igualdad en vez de una aproximación como tenemos
ahora, hay que cambiar y(tn+k ) por yn+k y f (tn+k−1 , y(tn+k−1 )) por fn+k−1 =
f (tn+k−1 , yn+k−1 ), obtenido ası́ los métodos de Adams–Bashforth de k pasos.
 Pk−1 1  
−s
Z
yn+k − yn+k−1 = h i=0 γi ∇i fn+k−1 i
con γi = (−1) ds
y0 , . . . , yk−1 . 0 i

Observe que los métodos de Adams–Bashforth son explı́citos. Los métodos de


Adams–Moulton (6.23) se obtienen de igual forma pero ahora la nube sobre la
que se interpola es

(tn , f (tn , y(tn ))), . . . , (tn+k , f (tn+k , y(tn+k ))).

Se deja al lector que repita los pasos anteriores. Si se plantea además obtener los
métodos de diferencias regresivas entonces ha de considerar la nube

(tn , y(tn )), . . . , (tn+k , y(tn+k )),

y en este caso derivar el polinomio interpolador.

306
Métodos Numéricos para el Análisis
Matemático con Matlab
Edición digital 2017-2018.
www.utmachala.edu.ec

Das könnte Ihnen auch gefallen