Beruflich Dokumente
Kultur Dokumente
Ediciones UTMACH
ISBN: 978-9942-24-104 -7
Publicación digital
COORDINACIÓN EDITORIAL
Juan F. Mañas-Mañas
Maritza A. Pinta
Coordinadores
Resumen
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
vii
viii
Agradecimientos
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
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
xvii
xviii
Índice de figuras
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
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
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
xxii
Capı́tulo 1
CONCEPTOS PRELIMINARES
1
Figura 1.1: Función Continua.
2
f (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
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.
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
3
Figura 1.4: Teorema de Bolzano.
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].
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:
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]).
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
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.
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:
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]
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).
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).
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.
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 ,
3. Y f (a) = f (b).
Entonces ∃c ∈ (a, b), tal que f 0 (c) = 0, por donde pasa la tangente horizontal.
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)
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
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.
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.
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
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
Z Z
u.dv = u.v − v.du. (1.3)
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]
16
Tabla 1.5: Ecuaciones diferenciales de primer orden.
an rn + an−1 rn−1 + · · · + a2 r2 + a1 r + a0 = 0.
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 .
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).
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
18
Propiedades.
Asociativa: A + (B + C) = (A + B) + C
Elemento neutro: A + 0 = A
Conmutativa: A + B = B + A
Multiplicación de Matrices.
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:
Propiedades [13]
1. A(B + C) = AB + AC
2. (A + B)C = AC + BC
3. A(BC) = (AB)C
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)
20
a11 a12 . . . a1n
a21 a22 . . . a2n
|A| = ..
.
an1 an2 . . . amn
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.
Propiedades.
2. det(AT ) = det(A).
n
X
det(A) = 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.
AB = BA = In
Demostración:
Si A es invertible, entonces existe B tal que:
AB = BA = In
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
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]
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
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]
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 )
24
Bibliografı́a
[2] Bernard, K., Hill, D. R. (2006) Álgebra lineal. Mexico: Pearson Educación.
[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.
[7] Del Valle Sotelo, J. D. (2011) Álgebra lineal: Para estudiantes de Ingenierı́a
y Ciencias. Monterrey, México: Mc Graw Hill.
[12] Larson, R. y Edwards B. (2016) Cálculo, vol. 1. México D.F.: Cengage Lear-
ning Editores S.A.
25
[16] Pinta, M., Castillo E. (2015) Derivación de funciones en una variable. Ma-
chala, Ecuador: Universidad Técnica de Machala.
[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
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:
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.
Command Window
>> 5 + 6
ans =
11
fx >>
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].
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]:
30
Figura 2.5: Tipo de variables disponibles en MATLAB
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
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.
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
variable=inicio:incremento:fin
variable=inicio:fin
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 1 2 3 4 5 6 7 8
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)
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
fx 0 0 0 0 0 0 0 0 0 0
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
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
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
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
En MATLAB el punto (.) es necesario siempre que se quieran realizar las ope-
raciones de producto, división y potencia entre 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
35
División La Figura 2.14 presentan ejemplos de 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
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
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.
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
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.
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
Command Window
>> I=eye ( 3 , 3 )
I =
1 0 0
0 1 0
fx 0 0 1
37
2.5.2. Operaciones con matrices
Las operaciones entre matrices se rigen por las reglas del algebra matricial.
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
Command Window
>> C=A-B % A menos B
C =
-1 -1 -1
3 7 -1
fx 1 1 -3
Command Window
>> C=A∗B % A por B
C =
152 176 240
126 182 234
fx 340 476 564
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
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
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
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].
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
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
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).
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 =
El resultado que MATLAB entrega es un vector fila con las coeficientes, por
lo tanto el polinomio es:
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
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
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
42
Figura 2.31: Ventana del Editor en MATLAB
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.
1 % Condicional simple
2
3 if condicion
4 instrucciones;
5 end
1 % Condicional Doble
2
3 if condicion
4 instrucciones1;
5 else
6 instrucciones2;
7 end
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.
1 % Condicional Multiple
2 if condicion1
3 instrucciones1;
4 elseif condicion2
5 instrucciones2;
6 else
7 instrucciones3;
8 end
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.
46
Figura 2.38: Estructura de Repetición Condicionada : Sı́ntaxis en MATLAB (iz-
quierda) y Diagrama de flujo (derecha)
47
Figura 2.40: Interrupción con CONTINUE: Sı́ntaxis en MATLAB (izquierda) y
Diagrama de flujo (derecha)
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
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 >>
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
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
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
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].
50
Bibliografı́a
[1] Ataurima, M. (2013) MATLAB & Simulink para Ingenierı́a Nivel I. Peru:
Universidad de Ciencias y Humanidades.
[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.
[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.
[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
51
[15] MathWorks (2017) Fundamental MATLAB Classes. https://goo.gl/
fr5tNi
52
Capı́tulo 3
DERIVACIÓN NUMÉRICA
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]).
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!
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
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.
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
(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).
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
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
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:
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
f (x0 + h) − f (x0 )
= + O(h),
h
con ξ ∈ (x0 , x0 + h). 2
f (x0 ) − f (x0 − h)
f 0 (x0 ) = + O(h). (3.7)
h
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.
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
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:
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 )]
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 (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.
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
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
−f (x + 2h) + 8f (x + h) − 8f (x − h) + f (x − 2h)
f 0 (x) = + O(h4 ). (3.15)
12h
62
sintetizaremos en esta sección.
Ejemplo 3.5. Obten una fórmula para aproximar la f 00 (x) con orden 2.
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
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
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
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
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
65
Segunda derivada hacia atrás
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
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
68
[2], [4, Cap. 2], [8, Cap. 1] ó [11, Cap. 8]) tenemos que
por lo tanto,
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).
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
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
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
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.
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
f (x1 ) − f (x0 )
p0 (x) = f [x0 , x1 ] = .
x1 − x0
71
p(x) = f (x0 ) + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 ).
Derivando:
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:
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)
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
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:
τ 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:
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.
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
[4] Gautschi, W. (2002) Numerical Analysis. New York, Estados Unidos: Sprin-
ger.
77
78
Capı́tulo 4
INTEGRACIÓN NUMÉRICA:
CUADRATURAS DE NEWTON
- COTES, MÉTODO DE
ROMBERG Y CUADRATURAS
ADAPTATIVAS
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.
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]).
81
mide (b − a) y de altura f (a) (ver figura 4.1).
1.5
1.0
0.5
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
ası́, dependerá de cada función y un análisis del error será hecho en la siguiente
sección.
1.5
1.0
0.5
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
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
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).
1.5
1.0
0.5
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.
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
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
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
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):
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
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.
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
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
(b − a)2
IRI (f ) = (b − a)f (a), ERI (f ) = f 0 (ξ)
2
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
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
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
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
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 ).
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
1 1 f 00 (ξ) 3
Trapecios 1 2 2
1 h=b−a h
12
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
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
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.
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,
95
Con lo cual, tenemos que
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
Nota 4.6. Se puede obtener exactamente el mismo resultado de cota del error
para la cuadratura de Rectángulo a Derecha Compuesto.
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
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
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:
Simpson Compuesta
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,
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.
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
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
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
G0,0
G1,0 G1,1
G2,0 G2,1 G2,2
.. .. .. ...
. . .
Gm,0 G3,1 Gm,2 . . . Gm,m
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.
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
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.
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
105
106
Capı́tulo 5
INTEGRACIÓN NUMÉRICA:
CUADRATURAS
GAUSSIANAS
Pero ahora nos surgen algunas preguntas que vamos a tratar de resolver durante
el desarrollo de este capı́tulo:
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
λ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.
h·, ·i : Lw (a, b) → R,
Z b
hf, gi = f (t)g(t)w(t)dt,
a
verificando
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, . . .
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:
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 .
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)):
(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).
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.
(α) (α)
tL(α) (α)
n (t) = Ln+1 (t) + (2n + α + 1)Ln + n(n + α)Ln−1 (t), α > −1.
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.
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
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
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
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).
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
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.
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
Cuadratura de Gauss-Chebyshev
2k + 1
xk = cos π , 0 ≤ k ≤ n, (5.9)
2n + 2
π
λ0 = λ1 = · · · = λn = . (5.10)
n+1
116
Cuadratura de Gauss-Laguerre
x = t + a, dx = dt (5.11)
Con ello tenemos que
Z +∞ Z +∞
f (x)dx = f (t + a)dt.
a 0
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.
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
• Z b
2
||pn || = p2n (t)w(t)dt.
a
Γ(a + k)
(a)0 = 1 (a)k = a(a + 1) . . . (a + k − 1) = , k = 1, 2, 3 . . .
Γ(a)
118
(2) (2) (2)
L2 (t) = (t − α1 )L1 (t) − β1 L0 (t)
= (t − 5)(t − 3) − 3 · 1
= t2 − 8t + 12.
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.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
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)):
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
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)
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
EG (f ) → 0, n → +∞.
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
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
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:
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
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:
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:
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.
% 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.
• 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);
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)
syms x
FF=int(exp(-x^2)/(x+1)*x^2*exp(-x),x,0,inf);
vpa(FF,10)
128
Bibliografı́a
[8] Gautschi, W. (2002) Numerical Analysis. New York, Estados Unidos: Sprin-
ger.
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.
130
Capı́tulo 6
ECUACIONES
DIFERENCIALES
ORDINARIAS
131
Definición 6.1. Se llama ecuación diferencial ordinaria (escalar) de orden n a
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 .
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 .
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.
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 ||.
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
L ≥ ||Jy f ||,
Definición 6.5. Un PVI que tenga solución única se dice que es un PVI bien
planteado.
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 |,
134
Estable ⇔ <(λ) ≤ 0.
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
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))),
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
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,
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
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:
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,
Solución analítica
Error
y(tn)
yn
Error
Error
Error
Error
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
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 ).
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 ,
141
Las definiciones de convergencia, estabilidad y consistencia dadas anterior-
mente son difı́ciles de verificar. Sin embargo, el siguiente resultado lo simplifica
notablemente.
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.
Ası́,
lı́m yn = 0 ⇔ |1 − 10h| < 1 ⇔ 0 < h < 0,2.
n→∞
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.
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
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
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.
|r|
h< (6.12)
máxi |<(λi )|
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
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
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.
145
Estados 1≤R≤4 5≤R≤7 R = 8 ó 9 R ≥ 10
Orden máximo R R-1 R-2 ≤R−2
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.
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
−α α
0
1/2 1/2
1/2 0 1/2
1 0 0 1
1/6 1/3 1/3 1/6
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 ) .
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
Si k = 1 y tomando α1 = β0 = 1, α0 = −1 y β1 = 0 obtenemos
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.
lı́m e(h) = 0,
h→0
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
150
para toda solución de la ecuación diferencial y0 (t) = f (t, yT (t)).
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.
Por tanto, usando el Teorema de Lax generalizado 6.6 y las Proposiciones 6.5
y 6.7 se ha probado el siguiente resultado.
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
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θ )
iθ
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])
k = 2. Entonces, ai > 0, i = 0, 1, 2.
154
Bibliografı́a
[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.
[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.
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
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.
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.
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 (x) = x2 − 4x + 3 = 0 ⇒ (x − 3)(x − 1) = 0 ⇒ x = 3 ∨ x = 1
160
f (a) = f (b) = 0 [10], y en este punto c donde f 0 (c) = 0, pasa una tangente
horizontal.
1.
f (2) − f (−1)
f 0 (c) =
2 − (−1)
Es decir,
161
A.5. Integración
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
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.
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
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
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
Ejemplo A.18.
5 5
x3 53 23
Z
2 125 8 117
x dx = +C = − = − =
2 3 2 3 3 3 3 3
165
A.6.1. Solución de una Ecuación Diferencial
Ejemplo A.20. Sea la ecuación diferencial
y0 + y = 0
x2
ln y = + 5x + C
2
2 +5x+C 2 +5x
y = ex = eC .ex
2 +5x
y = C.ex
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.
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
167
a 0 0
A = 0 b 0
0 0 c
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
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.
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 (−).
−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
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.
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
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
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
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
−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
(3x − 2)
f (x) =
(x − 1)
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
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.
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)
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
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
180
B.2. Matrices
Command Window
>> A = f i x ( 1 0 ∗ rand ( 3 ) )
A =
9 6 9
7 0 6
fx 9 8 7
Command Window
>> rank (A)
ans =
3
>> norm (A)
ans =
fx 21.3242
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
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
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
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.
184
El resultado del uso del comando hold en la Figura B.8 se muestra en la
Figura B.9
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.
1400
1200
1000
800
600
400
200
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
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
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]
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
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;
188
Figura B.17: Área bajo la curva de una función
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)
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.
190
Figura B.21: Uso de los comandos meshgrid y mesh
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.
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
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
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
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
Desarrollo:
194
Figura B.29: Descomposición de un número de 3 cifras
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
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
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
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
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
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
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
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
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');
Command Window
4
El dado s e ha l a n z a d o :
7
fx v e c e s
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
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
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
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
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.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
202
Figura B.45: Cilindro de radio r = 5 y altura h = 10
203
204
Apéndice C
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
π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
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
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
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 :
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:
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:
1 = 2a2 + 4a3 .
4 = 4a2 + 16a3 .
207
Tabla de datos
t(horas) d(Km)
0 0
0.5 38
1 78
1.5 105
2 147
2.5 191
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ó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
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 =
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
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.
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;
Command Window
>>Ejemplo3
Derivada central orden 2, con h=0,10
0.110852841757425
π
Ejemplo C.5. Calcular la derivada de f (x) = sen(x) en x = 4
y con h = 0,01.
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
π
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
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’])
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
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
Resultados:
218
Código en Matlab
%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)
220
Código en Matlab
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
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;
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
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;
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
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
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
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
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
(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:
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
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.
229
f=@(x)exp(-x).*sin(5.*x)+1;
a=0;
b=2;
ri=(b-a)*feval(f,a)
errorizqierda=abs(valorreal-ri)
f=@(x)exp(-x).*sin(5.*x)+1;
a=0;
b=2;
rd=(b-a)*feval(f,b)
errorderecha=abs(valorreal-rd)
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)
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);
231
una mejor comprensión de lo que estamos haciendo.
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
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
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:
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
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,
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):
10
−5
−10
−15
−20
−25
0 0.5 1 1.5 2
234
Figura D.2: Representación de |f 00 (t)|.
25
20
15
10
0
0 0.5 1 1.5 2
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
(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
600
500
400
300
200
100
0
0 0.5 1 1.5 2
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:
Solución:
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.
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
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.
1.5
1.0
0.5
0.0
0.5 1.0 1.5 2.0
238
En este caso h = 0,2 asi que el error queda
(2 − 0)5
ERIC (f ) = 0,2 = 1.
2
IRDC (f ) = 2,191036598442997.
1.5
1.0
0.5
0.0
0.5 1.0 1.5 2.0
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
R2
e−x sen(5t) + 1 dt usan-
Ejemplo D.7. Calcula una aproximación de I(f ) = 0
do:
(c) La cuadratura de Trapecios Compuesta con 1000 nodos (n = 999) y una cota
del error cometido.
Solución:
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
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.
1.5
1.0
0.5
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
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?
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.
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:
(b) La cuadratura de Simpson Compuesta con 15 nodos (n = 14) y una cota del
error cometido.
Solución:
h4 (4) (2/4)4
ESC (f ) = (b − a)f (ξ) = · 2 · 600 = 0,4166667.
180 180
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
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
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.
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 .
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 )
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
(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.
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
que resulta exacta para todas las funciones de la forma f (t) = aet b cos(πx/2).
249
250
Apéndice E
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) (ξ).
80 000
60 000
40 000
20 000
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:
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.
syms x
FF=int(exp(x)*sin(x^2)/(sqrt(1-x^2)),x,-1,1);
vpa(FF,16)
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.
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
.
αn = 0,
n
βn = .
2
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
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
√ r ! √ √ r !
π 3 2 π π 3
IG (f ) = f − + f (0) + f = 1,996362777658229,
6 2 3 6 2
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
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.
function [p,nd,r]=gaussianas(f,a,b,n,b0)
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
256
Figura E.2: Gráfica de |f (10) (t)| en el intervalo [0, 10].
2 4 6 8 10
como ya sabı́amos, el error tiende a cero cuando aumenta el valor de los nodos.
2
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 ).
Z 3
3. cos(4t)e−t dt.
0
Z 2
1
4. sen dt.
1
2π
t
Z 1
1
5. √ dt.
0,04 t
Z 2 √
6. 4t − t2 dt.
0
Ejercicio E.4.
(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.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.
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.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.
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.
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
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
||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
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
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
0
1 1
1/2 1/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
265
simple la frontera de esta región, a saber,
2
1 + z + z = 1
2
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)
0.5
−0.5
−1
−1.5
−2
−2 −1.5 −1 −0.5 0 0.5
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
Luego,
z 2 z 3 z 4
−
RA = z ∈ C / 1 + z + + + <1 .
2 6 24
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-
-1
-2
-3
-3 -2.5 -2 -1.5 -1 -0.5 0 0.5
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
268
A–estabilidad.
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)
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
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.
−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
0
α 5/8
β 6γ
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.
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
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.
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
λ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→∞
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.
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.
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
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
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
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
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,
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
∇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
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
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)
⇓
−λHyn + 5λHyn+1 − (19λH + 1)yn+2 + (1 − 9λH)yn+3 = 0.
Luego, el polinomio caracterı́stico es:
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
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
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.
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.
for i=1:m
plot(t, y(i,:),’*’,’Color’,[i/m,0,0],’MarkerSize’, 1.5), hold on
end
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.
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.
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
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’);
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).
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
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.
0
1/2 1/2
0 1
es decir,
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
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 ))
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
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
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.
100
90 Conejos
Linces
80
70
60
50
40
30
20
10
0 1 2 3 4 5 6 7 8 9 10
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.
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
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
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.
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
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’)
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
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.
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
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),
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,
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:
∇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
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
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
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
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
y 0 (t) = sen(t)
t
y(t) , t ∈ [−2, −0,001] ,
y(−2) = 1 ,
z 0 (t) = sen(t)
t
z(t) + ε , t ∈ [−2, −0,001] ,
z(−2) = 1 + δ .
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.
5. a) Sea el método
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
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.
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 .
13. La ecuación que describe el movimiento libre (no amortiguado y sin fuerzas
externas) de una masa m sujeta a un resorte es
y 00 (t) + ω 2 y(t) = 0.
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.
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
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
(1 + hL)n − 1
||yn − zn || ≤ (1 + hL)n ||y0 − z0 || + máx ||εk ||, n ≥ 1. (F.12)
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
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
Pero,
||k1 (t, y, h) − k1 (t, z, h)|| = ||f (t, y) − f (t, z)|| ≤ L||y − z||
Para simplificar la notación usaremos
||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||,
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
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
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
306
Métodos Numéricos para el Análisis
Matemático con Matlab
Edición digital 2017-2018.
www.utmachala.edu.ec