Está en la página 1de 188

NOTAS DE ANÁLISIS NUMÉRICO

CON MATLAB

Luis Eduardo Olivar Robayo

Héctor Andrés Granada

UNIVERSIDAD DEL TOLIMA


FACULTAD DE CIENCIAS
DEPARTAMENTO DE MATEMÁTICAS Y ESTADÍSTICA
2019
Olivar Robayo, Luis Eduardo
Notas de análisis numérico con MATLAB / Luis
Eduardo Olivar Robayo, Héctor Andrés Granada. -- 1ª. Ed.
-- Universidad del Tolima, 2019.
190 p. : il., tablas
Contenido: Conceptos básicos -- Aritmética del
Computador -- Solución de Ecuaciones no Lineales –
Solución de Sistemas de Ecuaciones Lineales –
Aproximación de Funciones a Partir de Datos.

ISBN: 978-958-5569-16-4

1. Ecuaciones no lineales - Soluciones numéricas


2. Ecuaciones lineales I. Título II. Granada, Héctor Andrés

519.5
O48n

© Sello Editorial Universidad del Tolima, 2019


© Luis Eduardo Olivar Robayo y Héctor Andrés Granada

Primera edición electrónica


ISBN electrónico: 978-958-5569-16-4
Número de páginas: 190
Ibagué-Tolima

Facultad de Ciencias Básicas

Notas de análisis numérico con MATLAB


Grupo de Investigación Matemáticas del Tolima
publicaciones@ut.edu.co
leolivar@ut.edu.co

Impresión, diseño y diagramación por PROVEER PRODUCTOS Y SERVICIOS S.A.S

Todos los derechos reservados. Prohibida su reproducción total o parcial por cualquier medio,
sin permiso expreso del autor.
Contenido

Prólogo........................................................................................... 11

Capítulo 1
Conceptos Básicos........................................................................ 17

1.1. Conceptos básicos de Matlab......................................................................................19


1.1.1. Introducción a Matlab........................................................................................20
1.1.2. Operaciones con vectores y matrices.........................................................24
1.1.3. Gráficas en Matlab................................................................................................27
1.1.4. Gráficos en 2D y 3D..............................................................................................28
1.1.5. Programación en Matlab...................................................................................34
1.1.6. Funciones en Matlab............................................................................................37
1.2. Conceptos Básicos Matemáticos................................................................................46
1.2.1. Límites, Continuidad y Diferenciabilidad.................................................46
1.2.2. Redondeo................................................................................................................64
1.2.3. Notación de O mayúscula y o minúscula................................................67
1.2.4. Orden de convergencia........................................................................................70
1.2.5. Multiplicación anidada (W.G Horner 1756-1837).............................71
1.2.6. Sistemas de Ecuaciones Lineales.................................................................73
1.2.7. Propiedades de las Matrices..........................................................................74
1.3. Ejercicios...................................................................................................................79
Capítulo 2
Aritmética del computador........................................................ 85

2.1. Números de Punto Flotante y Error de Redondeo...........................................87


2.2. Algoritmo para transformar números reales a binarios.................................92
2.3. Números de Máquina Próximos.................................................................................96
2.4. Operaciones con Error de Punto Flotante.........................................................101
2.5. Propagación del Error....................................................................................................105
2.5.1. Análisis del error de propagación............................................................105
2.6. Procesos inestables y mal condicionados...........................................................106
2.7. Ejercicios................................................................................................................................109

Capítulo 3
Solución de Ecuaciones no Lineales......................................... 113

3.1. Método de Bisección.....................................................................................................115


3.1.1. Interpretación Gráfica...................................................................................116
3.1.2. Análisis del Error...............................................................................................121
3.2. Método de Newton Raphson...................................................................................123
3.2.1. Interpretación Gráfica...................................................................................126
3.2.2. Fracaso del Método de Newton...............................................................127
3.2.3. Análisis de Errores............................................................................................127
3.3. Método de la Secante....................................................................................................131
3.3.1. Interpretación Gráfica.......................................................................................131
3.3.2. Análisis de Errores y Orden de Convergencia...................................133
3.4. Ejercicios................................................................................................................................137

Capítulo 4
Solución de Sistemas de Ecuaciones Lineales........................ 139

4.1. Solución de Sistemas Lineales...................................................................................141


4.2. Permutaciones y Matrices Triángulares...............................................................143
4.3. La factorización LU y la factorización de Cholesky.......................................144
4.4. Eliminación gaussiana con pivote...........................................................................147
4.5. Ejercicios................................................................................................................................149
Capítulo 5
Aproximación de Funciones a Partir de Datos...................... 153

5.1. Interpolación Polinomial.............................................................................................155


5.1.1. Forma de Newton del polinomio de interpolación......................157
5.1.2. El error de la interpolación polinomial.................................................159
5.2. Otros comandos en Matlab.......................................................................................160
5.3. Forma de Lagrange para el polinomio de interpolación............................164
5.4. Diferencias Divididas......................................................................................................165
5.5. Interpolación de Hermite............................................................................................171
5.6. Ejercicios................................................................................................................................174

Referencias Bibliográficas.......................................................... 179


Listado de figuras

Figura 1.1. Editor - Ventana de Comandos...................................................................20


Figura 1.2. Asignación de valores........................................................................................21
Figura 1.3. Formatos Numéricos.........................................................................................21
Figura 1.4. Quitar asignación de variables.....................................................................22
Figura 1.5. Ventana de Ayuda...............................................................................................22
Figura 1.6. Tutorial Interactivo.............................................................................................23
Figura 1.7. Generando una partición de un intervalo.............................................24
Figura 1.8. Operaciones con las componentes de un vector..............................25
Figura 1.9. Matrices y Operaciones con componentes..........................................25
Figura 1.10. Tipos de Gráficas.................................................................................................27
Figura 1.11. Gráfica de puntos................................................................................................29
Figura 1.12. Dos gráficas en una pantalla.........................................................................30
Figura 1.13. Subgráficas en una pantalla...........................................................................30
Figura 1.14. Propiedades gráficas..........................................................................................31
Figura 1.15. Comando Fill3.......................................................................................................32
Figura 1.16. Comando plot3....................................................................................................33
Figura 1.17. Comando surf........................................................................................................34
Figura 1.18. Editor de texto o Script....................................................................................35
Figura 1.19. Comandos básicos para programar..........................................................35
Figura 1.20. Creación de un Script........................................................................................36
Figura 1.21. Cambiar de Folder..............................................................................................36
Figura 1.22. Ejecución del Script............................................................................................37
Figura 1.23. Creación de una función.................................................................................38
Figura 1.24. Creación de subfunciones..............................................................................38
Figura 1.25. Proporciones con Matlab...............................................................................40
Figura 1.26. Bucle Switch - Case.............................................................................................40
Figura 1.27. Bucle Try - Catch..................................................................................................40
Figura 1.28. Bucle for....................................................................................................................41
Figura 1.29. Bucle parfor............................................................................................................42
Figura 1.30. Comparación bucle for con bucle parfor...............................................42
Figura 1.31. Configuración modo paralelo......................................................................43
Figura 1.32. Comando parfor en modo paralelo..........................................................44
Figura 1.33. Bucle While.............................................................................................................44
Figura 1.34. Ejemplo bucle While..........................................................................................44
Figura 1.35. Comando if - elseif -else...................................................................................45
Figura 1.36. Ejemplo if - elseif -else.......................................................................................45
Figura 1.37. Ejemplo Comando break - continue - return .....................................46
Figure 1.38. Gráfica de una Sucesión..................................................................................49
Figura 1.39. Comparación del polinomio y la Función del Ejemplo 1.2.3.......58
Figura 1.40. Comparación entre S y P del Ejemplo 1.2.4...........................................63
Figura 1.41. Combinación lineal de vectores columna.............................................76
Figura 2.1. Representación de un número en punto flotante del
Ejemplo 2.1.1..........................................................................................................91
Figura 2.2. Ubicación del Número Redondeado y Truncado de x...................96
Figura 3.1. Cuando f (a) f (c) < 0 .....................................................................................116
Figura 3.2. Cuando f (c) f (b) < 0......................................................................................116
Figura 3.3. Gráficas del ejemplo 3.1.1............................................................................119
Figura 3.4. Primer caso fracaso de método ..............................................................121
Figura 3.5. Segundo caso de fracaso..............................................................................121
Figura 3.6. Gráfica del Método de Newton ..............................................................126
Figura 3.7. Fracaso del Método de Newton...............................................................126
Figura 3.8. Método de la Secante....................................................................................132
Figura 5.1. Nodos y polinómio Interpolador............................................................156
Figura 5.2. Puntos Interpolados del ejemplo 5.2.1 (2)..........................................162
Figura 5.3. Error entre interpolación y exactos del ejemplo 5.2.1 (2)..........163
Figura 5.4. Gráfica del ejemplo 5.2.1 (3).......................................................................163

Listado de cuadros

Cuadro 1.1. Operaciones con los elementos de un vector......................................24


Cuadro 1.2. Operadores matriciales....................................................................................26
Cuadro 1.3. Funciones y matrices especiales..................................................................27
Cuadro 1.4. Estilo de la línea de la gráfica........................................................................29
Cuadro 1.5. Operadores relacionales..................................................................................39
Cuadro 1.6. Conectivos lógicos..............................................................................................39
Cuadro 2.1. Notación Científica Normalizada...............................................................87
Cuadro 5.1. Datos en general...............................................................................................155
Cuadro 5.2. Valores del ejercicio 5.1.1..............................................................................159
Cuadro 5.3. Valores del ejercicio 5.1.2................................................................................160
Cuadro 5.4. Solución del ejemplo 5.1.2.............................................................................160
Cuadro 5.5. Valores del ejemplo 5.4.1................................................................................169
Listado de códigos

Código 1.1. Graficación y generación de Polinomio de Taylor.............................58


Código 1.2. Procedimiento en Matlab para encontrar el polinomio de
Taylor..........................................................................................................................59
Código 1.3. Procedimiento en Matlab para general el polinomio de
Taylor alrededor de un punto.......................................................................59
Código 1.4. Graficación y Comparación de Polinomio de Taylor.......................63
Código 1.5. Comando Taylor de Matlab...........................................................................64
Código 2.1. Transformación de un Número entero a Binario...............................95
Código 2.2. Transformación de un Número Fraccionario a Binario..................96
Código 2.3. Utilización del código 2.2 en el Ejemplo 2.3.1......................................99
Código 2.4. Cálculo del épsilon de máquina...............................................................103
Código 2.5. Otro código en Matlab para encontrar épsilon...............................104
Código 3.1. Programa de Bisección..................................................................................118
Código 3.2. Función para utilizar con el código 3.1.................................................119
Código 3.3. Utilización del código bisec.m para el ejemplo 3.1.1....................120
Código 3.4. Método de Newton Raphson....................................................................125
Código 3.5. Derivada de f del ejemplo 3.2.1.................................................................125
Código 3.6. Función del ejemplo 3.2.1............................................................................126
Código 3.7. Función del ejemplo 3.2.1............................................................................126
Código 4.1. Solución de sistema triangular..................................................................146
Código 4.2. Solución de sistema triangular..................................................................146
Código 5.1. Interpolación polinomial.............................................................................160
Código 5.2. Utilización del comando de Matlab poly2sym................................161
Código 5.3. Interpolación de 200 puntos y graficación.........................................161
Código 5.4. Error en la interpolación de los 200 puntos.......................................162
Código 5.5. Interpolación de f en 10 puntos y graficación..................................162
Código 5.6. Diferencias divididas.......................................................................................170
Dedicado a
mi esposa Aydee,
mis hijos y mis hermanos
Luis Eduardo

Dedicado a
Wilson y Luz Marina mis padres
Silvana y Juan Esteban mis hijos
Érika mi esposa
Hector Andrés
Fuente: Freepik.es

PRÓLOGO

11
F
recuentemente en las carreras de matemáticas, ingeniería y
ciencias afines nos enfrentamos a problemas en los cuales
se requiere resolver un sistema de ecuaciones para el cual
es necesario visualizar u obtener su solución y no se puede hacer por
métodos analíticos. Los métodos numéricos nos permiten obtener
soluciones exactas o aproximadas y resolver sistemas de ecuaciones entre
muchas otras cosas apoyados en un ordenador; además de la obtención
explícita de resultados obtenidos por cada método es necesario realizar
análisis teórico a través de la teoría del error, condicionamiento y
estabilidad numérica.

El análisis numérico se ha convertido en una rama del conocimiento


fundamental para los investigadores en matemáticas y matemáticas
aplicadas y en muchas investigaciones y publicaciones actuales su
utilización potencia los resultados obtenidos. Algunas de las publicaciones
científicas actuales que utilizan el análisis numérico como una potente
herramienta son: [12, 30] dentro de los problemas inversos, pero también
son utilizados en diferentes campos del conocimiento para conocer
resultados y para interpretar soluciones como en sismología [6], o en
odontología [5]. Pero donde se encuentra el mayor número de aplicaciones
es en las diferentes líneas de la ingeniería donde podemos encontrar gran
número de publicaciones como [29, 20] y muchos otros.

En particular, como profesores de métodos numéricos y de análisis


numérico por alrededor de 10 años en los programas de matemáticas con
énfasis en estadística, ingenierías y afines; en la universidad del Tolima y la
universidad Nacional de Colombia nos hemos dado cuenta de la evidente
dificultad que presentan los estudiantes de estos cursos porque tienen
que enfrentar problemas que enmarcan capacidades de programación,
de análisis y de síntesis al mismo tiempo, esto obliga al estudiante a 13
Notas de análisis numérico con MATLAB recurrir a varios libros de programaci ón, de análisis matemático y de
métodos numéricos, de los cuales algunos son de difícil comprensión,
escritos en otros idiomas y con altos costos. Y como consecuencia de
lo anterior los cursos presenten bajo nivel y resultados poco favorables
tanto para el profesor como para el estudiante. Estos inconvenientes, nos
motivaron a escribir este libro de texto que está acorde con las necesidades
metodológica y de bajo costo que permita subsanar las dificultades antes
mencionadas. Los lectores en general tendrán un texto clave de fácil
comprensión y lo más importante, autocontenido. En un principio lo
pensamos para estudiantes de matemáticas por su rigurosidad y énfasis
en las demostraciones, pero sin dejar de lado la parte computacional y
aplicada que en este caso la desarrollamos con el software Matlab R2017b,
pero por su carácter autocontenido puede ser utilizado por la comunidad
universitaria en general, o por cualquier persona con interés de aprender
métodos numéricos y con algunas bases de matemáticas.

Por ser un libro de texto, los contenidos y resultados en su gran mayoría


no son originales, es una recopilación organizada de diferentes textos y
de nuestra experiencia con las notas de clases, los cuales constituyen un
material de consulta obligada para los estudiantes, lo que les generará un
diálogo directo con los profesores que orienten este curso.

Este libro de texto reúne los siguientes capítulos: conceptos básico de


matemáticas y Matlab, aritmética del computador, solución de ecuaciones
no lineales, solución de sistemas de ecuaciones lineales y aproximación
de funciones. Cada sección está acompañada de ejemplos ilustrativos
que permitan la aplicación directa de la teoría y de esta manera que los
estudiantes puedan asimilar poco a poco los conceptos teóricos y adquirir
los conocimientos requeridos en su formación universitaria. Al final de
cada sección aparecen ejercicios propuestos, donde los estudiantes pueden
medir el grado de comprensión adquirido.

Esperamos que este libro sirva a los estudiantes y en general a la


comunidad universitaria con deseo de profundizar en varios de los temas
y para enfrentar los ejercicios de otros libros, como el libro de Kincaid (ver
[13]), el libro de Burden (ver [4] ), el libro del profesor de la un universidad
nacional de Bogotá, Mantilla (ver [16]), las notas del profesor Mejía (ver
14 [18] ), o uno más reciente como Ryaben’kii (ver [24]); otros más aplicados
como [20, 7]. Un libro que contiene una gran cantidad de referencias

Prólogo
bibliográficas es el deW. Smith [26]. Esperamos que al hacer un riguroso
seguimiento de nuestro libro, el estudiante o lector quede en capacidad
de resolver los ejercicios de los libros mencionados anteriormente, o
cualquiera de los libros de métodos numéricos para ingeniería. Este libro
se puede utilizar para el desarrollo de un semestre normal con 4 horas de
presencialidad y 12 horas de trabajo independiente del estudiante.

Agradecemos, inicialmente a la universidad del Tolima por darnos


la oportunidad de orientar los cursos de métodos numéricos y análisis
numérico por varios años; de igual forma a las otras universidades
mencionadas al comienzo de éste prólogo. También agradecemos al doctor
Juan Carlos Muñoz, profesor de planta de la universidad de Valle y quien
orienta los cursos de métodos y análisis numérico a nivel de pregrado y
posgrado en su universidad, por habernos revisado inicialmente este
libro y hacernos algunas sugerencias para mejorarlo. Por último, a todos
los estudiantes que pasaron por nuestros cursos de métodos numéricos y
análisis numérico desde el año 2001, por su colaboración y porque muchos
de sus aportes y correcciones quedaron reflejadas en este libro.

15
Fuente: Freepik.es

Capítulo 1

CONCEPTOS
BÁSICOS

17
1.1. Conceptos básicos de Matlab
Como lo indicamos en el título, daremos algunos elementos básicos
para que el lector sin bases en Matlab pueda introducirse en este software
y trabajar los ejercicios y ejemplos, los interesados en temas más completos
y avanzados pueden ver [22, 19].

MATLAB es un entorno de computación técnica que posibilita la


ejecución del cálculo numérico y simbólico de forma rápida y precisa,
acompañado de características gráficas y de visualización avanzadas,
aptas para el trabajo científico y la ingeniería. La arquitectura de MATLAB
es abierta y ampliamente extensible, permitiendo la relación con Excel,
C, Fortran y otras aplicaciones externas muy utilizadas e importantes. El
nombre MATLAB viene de la abreviatura, “Laboratorio de Matrices”.

En la versión del software Matlab R2017b, la ventana de comandos o


ventana principal del Matlab (ver Figura 1.1) aparece apenas iniciamos el
programa. Podemos utilizar el comando ver que brinda información de las
herramientas que tiene Matlab.

19
Notas de análisis numérico con MATLAB

Figura 1.1. Editor - Ventana de Comandos

1.1.1. Introducción a Matlab

Para asignar valores a las variables se hace de una manera natural como
se muestran en los ejemplos de la Figura 1.2. Se puede apreciar que los
resultados se pueden visualizar en diferentes formatos; pero por defecto,
Matlab muestra los resultados en formatos numéricos cortos “short”, lo
que indica que sólo mostrará 4 cifras decimales. Existen otros formatos
como el “rat”, que expresa los resultados como un número racional, el
formato “long” que muestra hasta con 16 cifras decimales y si se quiere
visualizar una cantidad deseada de dígitos se puede emplear la función de
valor de precisión aritmética “vpa”. Otros formatos numéricos que pueden
ser empleados se presentan en la Figura 1.3, los cuales pueden obtenerse
al escribir en la ventana de comandos “help format.” (ver Figura 1.3) éstos
luego pueden ser borrados a través del comando “clc”, pero aquí las variables
quedan almacenadas como lo muestra la subventana “Workspace”, situada
en la parte inferior izquierda de la ventana principal. Ahora, si queremos
borrar la asignación de variables, se emplea el comando “clear all” en la
ventana de Matlab, para este caso la subventana “Workspace” quedará
vacía.

20
Conceptos básicos
Figura 1.2. Asignación de valores

Figura 1.3. Formatos Numéricos 21


Notas de análisis numérico con MATLAB Cuando estamos trabajando en la ventana de comandos, queremos
que no se sature con mucha información, puesto que al asignar un valor a
una variable y al teclear enter, aparecerá de nuevo, indicando que la variable
ya fue asignada. Para evitar que vuelva a aparecer, podemos finalizar la
asignación con un punto y coma, como se muestra en la Figura 1.4.

Figura 1.4. Quitar asignación de variables

Para pedir ayuda con alguna función podemos digitar en la pantalla de


comandos la palabra “help” seguida de la función. Por ejemplo, si queremos
saber como es la sintaxis de la función exponencial, podemos digitar “help
exp” como se muestra en la Figura 1.5.

22 Figura 1.5. Ventana de Ayuda


Al dar click en la página de referencia mostrada en la Figura 1.5,

Conceptos básicos
podemos encontrar información adicional de la función exponencial,
como sintaxis, argumentos de entrada y de salida, gráficos y ejemplos.

Con la tecla F1 podemos encontrar una ventana interactiva que le


proporciona al aprendiz un tutorial sobre los conceptos básicos para iniciar
en Matlab, la ventana interactiva se muestra en la Figura 1.6.

Figura 1.6. Tutorial Interactivo

Para iniciar se recomienda que el lector interactúe con las opciones


“Getting Started with MATLAB”, el cual le enseñará los elementos básicos
del escritorio, definir matrices y arreglos, variables en el Workspace,
trabajar con texto y caracteres, realizar llamado de funciones, gráficas en
2D y 3D, elaboración de programas y scripts, finalmente mostrará ayuda
y documentación, todas las funciones tienen documentación de respaldo.
En la opción “Functions in MATLAB”, se muestran todas las funciones
internas del Matlab por orden alfabético o por categoría. También puede
consultar la página web de Matlab [17].

23
Notas de análisis numérico con MATLAB 1.1.2. Operaciones con vectores y matrices

Para generar una partición del intervalo [a, b] mediante un vector


conformado por N puntos equiespaciados del intervalo, se puede proceder
de la siguiente forma:

1. Emplear comando linspace.


b-a
2. Se calcula ∆x = ——— como incremento.
N-1
En la Figura 1.7 se calcula la partición del intervalo [2,5] en 10 puntos
equiespaciados de las dos formas.

Figura 1.7. Generando una partición de un intervalo

Operación Descripción

x (n) Elemento n-ésimo de x

x (a : b) Elementos de x situados entre el a-ésimo y b-ésimo

x (a : p : b) Separados de a p posiciones iniciando con a, (a < b)

x (b : — p : a) Separados de a — p posiciones iniciando con b (a < b)

Cuadro 1.1. Operaciones con los elementos de un vector.

Para trabajar con las componentes de un vector podemos utilizar los


comandos de la Tabla 1.1 y en la Figura 1.8 se muestran algunos ejemplos
24 de estos comandos al emplear los vectores definidos en la Figura 1.7.
Conceptos básicos
Figura 1.8. Operaciones con las componentes de un vector

Para definir una matriz de tamaño m × n, separamos los elementos


de una fila por una coma o un espacio, y las columnas por un punto y
coma, como se muestra en la Figura 1.9(a). Al emplear los comandos de
la Tabla 1.1 se pueden obtener los componentes de una matriz, como
también submatrices de una matriz, algunos ejemplos de estos comandos
se muestran en la Figura 1.9(b).

(a) Definiendo Matrices (b) Operando con las componentes de


Matrices
Figura 1.9. Matrices y Operaciones con componentes 25
Notas de análisis numérico con MATLAB Matlab puede operar con matrices por medio de operadores como
suma (+), producto (*) y traspuesta (’), y funciones como invertir inv( ). En la
Tabla 1.2 se muestran los operadores (u operaciones) matriciales elementales
con su respectiva descripción, donde A(i, j) es la componente de la matriz
A que está en la fila i y la columna j, por ejemplo en la Figura 1.9(b) se tiene
A(3, 2) = 0. Y en la Tabla 1.3 se presenta la sintaxis de algunas funciones y
los comandos para generar matrices especiales. Estos operadores se aplican
también a las variables o valores escalares, aunque con algunas diferencias
Todos estos operadores son coherentes con las correspondientes
operaciones matriciales, no se puede, ejemplo sumar matrices que no
sean del mismo tamaño. Si los operadores no se usan de modo correcto se
obtiene un mensaje de error.

Operación Descripción

A+B Suma

A—B Resta

A * B Producto usual

A . * B Producto por componentes A (i, j) * B (i, j)

A\B inv (A)*B

A.\B B(i, j) / A (i, j)

A/B A * inv (B)

A./B A (i, j) / B (i, j)

A.^n Potenciación usual

A.^B A (i, j)B(i, j)

A.' Transpuesta

Cuadro 1.2. Operadores matriciales.

Función Descripción

diag (A) Extrae la diagonal de A

det (A) Determinante de A

inv (A) Inversa de A

26 trace (A) Traza de A


Conceptos básicos
Función Descripción

expm (A) Matriz exponencial de A

log (A) Matriz logaritmica de A

eye (m,n) Matriz con unos en la diagonal

zeros (m,n) Matriz nula

ones (m,n) Matriz de unos

rand (m,n) Matriz aleatoria con 0 < Ai j < 1

magic (n) Suma de filas, columnas y diagonal constante

Cuadro 1.3. Funciones y matrices especiales

Figura 1.10. Tipos de Gráficas

1.1.3. Gráficas en Matlab

Matlab ofrece una gama amplia de opciones a la hora de realizar


representaciones gráficas. Entre ellas curvas planas y superficies, las
representaciones de funciones pueden realizarse en coordenadas implícitas, 27
Notas de análisis numérico con MATLAB explícitas y paramétricas. También permite realizar gráficas de barras,
líneas, estrellas, histogramas, poliedros, mapas geográficos y animaciones.
Algunas de las gráficas que se pueden realizar aparecen en la Figura 1.10.

El comando plot (X, Y, S) grafica los puntos (X ,Y), siendo X;Y 2 ℝn;
con las funciones definidas en S mediante dígitos entre comillas, el primero
de los cuales fija el color de la línea del gráfico y el segundo fija el caracter
a usar en el gráfico. En la Tabla 1.4 se muestran las opciones que se pueden
definir en S.

1.1.4. Gráficos en 2D y 3D

Para acceder a la ayuda de los gráficos bidimensionales, se puede


introducir el comando “help graph2d”. En lo que sigue se mostrarán varios
ejemplos que permiten practicar los gráficos en Matlab.

Ejemplo 1.1.1. En la Figura 1.11 se presentan los gráficos de los puntos


(1, 2), (-1, 0), (3, 1) y (2, 3) al utilizar varias configuraciones de la Tabla 1.4.

Ejemplo 1.1.2. En la Figura 1.12 se presentan los gráficos de las funciones


Y1 = sin(X) y Y2 = cos(X) en el intervalo [-π, π].

Ejemplo 1.1.3. Para generar subgráficas en una sola pantalla gráfica se


utiliza el comando subplot(m, n, v), aquí se genera una matriz de tamaño
m × n y se reserva las posiciones asignadas en el vector v para originar el
gráfico de cada subfigura. La Figura 1.13 muestra una matriz de tamaño
2 × 3, asignando los espacios 3 y 6 de la matriz para realizar el gráfico
mediante el comando subplot(2, 3, [3 6]).

Símbolo Color Símbolo Marcadores


y amarillo . puntos
m magenta o círculos
c cyan x x
r rojo + +
g verde * *

28 b azul s cuadrados
Conceptos básicos
w blanco d diamantes
k negro ^ triángulo apuntando arriba
v triángulo apuntando abajo
Símbolo Estilo de línea > triángulo apuntando derecha
- líneas continuas < triángulo apuntando izquierda
: líneas a puntos p estrella de 5 puntas
-. líneas barra - punto h estrella de 6 puntas
-- líneas a trazos

Cuadro 1.4. Estilo de la línea de la gráfica

Figura 1.11. Gráfica de puntos 29


Notas de análisis numérico con MATLAB

Figura 1.12. Dos gráficas en una pantalla

30 Figura 1.13. Subgráficas en una pantalla


Podemos realizar varias gráficas ubicadas en pantallas diferentes,

Conceptos básicos
mediante el comando figure, también dar nombre a los ejes, con los
comandos xlabel y ylabel, para agregar una leyenda a una pantalla gráfica
que tiene varios gráficos se emplea el comando legend, y se puede dar un
título a un gráfico con el comando title. También se puede controlar el
valor máximo y mínimo en X y en Y con el comando axis, agregar una
cuadrícula a la gráfica con grid. Como lo veremos en el Ejemplo 1.1.4.

Ejemplo 1.1.4. Las dos primeras líneas de comandos que aparecen en


la Figura 1.14 permiten obtener dos ventanas gráficas, sobre la variable f1 le
asignamos una ventana gráfica de color rgb y con nombre Pantalla Gráfica
1 sin numeración, y de forma análoga se hace con f2 de nombre Pantalla
Gráfica 2 y de color blanco.

Posteriormente, se hace una partición regular de 100 puntos sobre el


intervalo [−1, 1] y este vector lo asignamos a la variable x. Procedemos
a generar las funciones y, z y w, se abre la ventana gráfica f1 y sobre ella
se genera una matriz de subgráficos de tamaño 2 × 2, en el primer espacio,
se hace referencia mediante subplot(2,2,1) y se grafica la función y de color
negro con líneas a trazos, con un ancho de línea de 2 puntos. Seguimos con el
subplot(2,2,2) en el cual se grafica la función z con círculos azules, finalmente
en el subplot(2,2,[3 4]) se grafica la función w de color rojo.

Figura 1.14. Propiedades gráficas

Luego se abre la ventana gráfica f2 y sobre ella se grafica la función w de


color negro, con el comando hold on se pega sobre este gráfico la otra función
y de color rojo, con el comando legend colocamos en orden las respectivas 31
Notas de análisis numérico con MATLAB funciones, como se muestra en la leyenda de la ventana f2, con xlabel y ylabel
colocamos los nombres a los ejes coordenados, con title podemos colocar un
título en el gráfico, además el comando axis permite controlar los rangos de
los ejes en los cuales se quiere ver el gráfico, el comando grid on genera una
malla y el comando text, permite ingresar textos dentro del gráfico, iniciando
en las coordenadas deseadas.

Para acceder a la ayuda de los gráficos tridimensionales se puede


introducir el comando “help graph3d”. Los comandos más empleados
para hacer superficies y curvas en ℝ3 son fill3, plot3 y surf, para entender
cómo funcionan mostraremos algunos ejemplos.

Ejemplo 1.1.5 (Comando fill3). El comando fill colorea el interior de un


polígono, utilizando este comando, podemos realizar el gráfico de un plano
en ℝ3. ℝ3 por ejemplo, para graficar el plano dado por la ecuación z = 1.

Primero debemos delimitar el plano dando coordenadas en 2 ≤ x ≤ 5 y en 1


≤ y ≤ 3, el plano se podría representar por el polígono limitado por los puntos
(2; 1; 1) ; (5; 1; 1) ; (5; 3; 1) ; (2; 3; 1) U ℝ3, al tener en cuenta estos puntos se
puede graficar como se muestra en la Figura 1.15.

32 Figura 1.15. Comando Fill3


Ejemplo 1.1.6 (Comando plot3). El comando plot3 es similar al comando

Conceptos básicos
plot y nos sirve para graficar curvas en ℝ3. ℝ3 Por ejemplo, para graficar
la curva parametrizada por t U [0;10] con ecuaciones x(t) = 2*cos(t),
x(t) = 2 * sin(t) y z(t) = 2* cos(t) podemos realizar los comandos que se
muestran en la Figura 1.16.

Figura 1.16. Comando plot3

Ejemplo 1.1.7 (Comando surf). El comando surf nos permite graficar


superficies en ℝ3. Por ejemplo, para graficar la superficie generada por la
sin (√x2+y2+0.5)
ecuación z = con dominio [-8, 8] × [-5; 5] lo podemos
√x2+y2+0.5
realizar con los comandos que se muestran en la Figura 1.17. Donde el
comando meshgrid nos da como resultado dos matrices x y y que representan
el mallado del dominio.

33
Notas de análisis numérico con MATLAB

Figura 1.17. Comando surf

1.1.5. Programación en Matlab

Matlab puede utilizarse como un lenguaje de programación de alto


nivel que incluye estructuras de datos, funciones, instrucciones de control
de flujo, manejo de entradas/salidas e incluso programación orientada a
objetos. los programas de Matlab se escriben en archivos conocidos como
M-ficheros. En los M- Ficheros podemos ejecutar una serie de comandos
o funciones que aceptan argumentos de entrada y producen una salida.
Estos se crean empleando el editor de texto o Script (ver Figura 1.18), en
este editor de texto aparece una numeración por cada renglón empleado,
la cual permite identificar los errores que se muestran en la ventana de
comandos. Los comandos más utilizados para programar se muestran en
la Figura 1.19.

Los scripts con los M-ficheros más sencillos no tienen argumentos


de entrada ni de salida, simplemente están formados por instrucciones
que se ejecutan secuencialmente y que podrían escribirse igualmente
desde la ventana de comandos. Los scripts operan con datos existentes
34 en el espacio de trabajo o con nuevos datos creados por el propio Script.
Sobre la pestaña de un Script aparece el nombre Untitled, lo cual indica

Conceptos básicos
que no ha sido guardado, y para poder ejecutar las instrucciones, debemos
guardarlo en una carpeta y ejecutarlo con el comando Run (ver óvalo azul)
de la pestaña EDITOR del Matlab (ver óvalo rojo) de la Figura 1.20.

Figura 1.18. Editor de texto o Script

Figura 1.19. Comandos básicos para programar 35


Notas de análisis numérico con MATLAB

Figura 1.20. Creación de un Script

Figura 1.21. Cambiar de Folder

Las instrucciones numeradas hasta el renglón 9 pueden ser ejecutadas


al dar click sobre el Item Run. Por primera vez, aparecerá una ventana con
el nombre Select File for Save As, en la cual, podemos colocarle el nombre
al Script (ver óvalo naranja), es importante no modificar la opción del ítem
Tipo. Finalmente, buscamos la carpeta en la cual queremos guardar y le
damos click en Guardar, posteriormente, aparecerá una ventana como la
que se muestra en la Figura 1.21, que al darle click en la opción Change
Folder ejecuta el código del Script como se muestra en la Figura 1.22. Note
que se ha ubicado la ruta donde se guardó el Script (ver óvalo rojo) con el
nombre que hemos puesto previamente (ver óvalo naranja).

36
1.1.6. Funciones en Matlab

Conceptos básicos
Matlab además de poseer funciones predeterminadas, tiene la opción
para definir funciones, estas se realizan en M-ficheros con el comando
function, precedido de los argumentos de salida, el nombre de la función
que deseamos crear, y es el mismo con el que se especifican los argumentos
de entrada, esta función deberá guardarse en una carpeta de trabajo y puede
ser empleada por otro Script o M-fichero que se encuentre en la misma
carpeta. Es necesario que figure la ruta de la carpeta donde se guardó la
función y el nombre de la función deberá ser el mismo con el que se guarde
el Script. También se puede utilizar el comando pwd, que nos informa en qué
ubicación, dentro del sistema de archivo, estamos trabajando.

Figura 1.22. Ejecución del Script

Ejemplo 1.1.8 (Creando una función). En la Figura 1.23 se muestra la


construcción de una función llamada ejemplo1, que dados 2 números reales
x1 y x2 , calcule su promedio aritmético. Al guardar el Script con el nombre de
la función (ver óvalo rojo), podemos ejecutar la función desde la ventana de
comandos, previamente se ubique la ruta de la carpeta donde se guardó la
función (ver ovalo azul).

Para crear subfunciones dentro de un Script, se debe iniciar con la


función principal que llevará el nombre del archivo, esta empleará las
subfunciones y deben ir en la parte de abajo del mismo M-fichero como se
muestra en la Figura 1.24. 37
Notas de análisis numérico con MATLAB 1.1.7. Bucles y Comandos Básicos de programación

El uso de funciones recursivas, condicionales y definidas a trazos es


muy común en matemáticas. Para la definición de este tipo de funciones
es necesario el manejo de los bucles básicos de programación (ver la
Figura 1.19). En la tabla 1.5 se muestran los comandos para trabajar con las
relaciones de equivalencia y de orden. En la Tabla 1.6 se presenta la sintaxis
para trabajar con los conectivos. Estas tablas nos permitirán construir
proposiciones simples y compuestas como se puede ver en la Figura 1.25,
las proposiciones son utilizadas en los bucles.

Figura 1.23. Creación de una función

38 Figura 1.24. Creación de subfunciones


Conceptos básicos
Operador Descripción

≤ Menor que

<= Menor o igual que

> Mayor que

>= Mayor o igual que

== Igual a

~= Diferente a

Cuadro 1.5. Operadores relacionales

Operador Función Equivalente

A&B and (A,B)

A|B or (A,B)

~A not (A)

Cuadro 1.6. Conectivos lógicos

1.1.7.1. Bucle Switch-Case-Otherwise


El bucle Switch-Case-Otherwise sirve para ejecutar un segmento de
código al cual llamaremos Caso, este se ejecuta cuando sea llamado o la
condición que satisface dicho caso se cumple. Un ejemplo de este bucle se
puede ver en la Figura 1.26.

1.1.7.2. Bucle Try-Catch


Se usa para probar si cierto comando en el código genera un error, si
el error se produce dentro del bloque try, Matlab salta inmediatamente al
bloque catch. En la Figura 1.27 se muestra un ejemplo de este bucle. Dadas
dos matrices A y B, si las matrices son compatibles se realiza el producto,
de lo contrario muestra un mensaje informando que el producto no se
puede realizar y da como resultado NaN, que significa que el resultado No
es numérico!. Nótese que a pesar que el producto no se puede realizar, se
puede seguir con las demás líneas del código, en caso de que existan, sin
que se salga del programa. 39
Notas de análisis numérico con MATLAB

Figura 1.25. Proporciones con Matlab

Figura 1.26. Bucle Switch - Case

40 Figura 1.27. Bucle Try - Catch


Conceptos básicos
Figura 1.28. Bucle for

1.1.7.3. Bucle for


Se emplea para fórmulas de recurrencia, donde for k = a : p : b indica
que la variable k se incrementa cada vez en p unidades desde a hasta llegar
a b cada vez que termina las líneas de código internas en el bucle for. El
Script de la Figura 1.28 muestra los números pares 2 ≤ x ≤ [N].

1.1.7.4. Bucle parfor


El concepto del comando parfor es similar al de un bucle for, en el
sentido que la serie de sentencias dentro del cuerpo del bucle se ejecuta
para determinado rango de valores. Cuando ejecutamos el comando
parfor, parte del cuerpo del bucle se ejecuta en el cliente (donde se emite
el parfor) y otra parte se ejecuta en paralelo en los trabajadores, a medida
que se van obteniendo los resultados de los trabajadores se envían al
cliente.

En la Figura 1.30 se puede apreciar que el bucle parfor no necesariamente


opera en forma ordenada como lo hace el bucle for. La ventaja de trabajar
con el parfor se hace evidente cuando se cuenta con varios trabajadores en
bucles con varias iteraciones que requieran de realizar varias operaciones
en cada iteración.

1.1.7.5. Configuración en modo paralelo


Para configurar el modo en paralelo, ubique en la pestaña Home la
opción parallel y de click en la opción Parallel Preferences, de donde se
abre la ventana de Preferences, sobre esta ventana se especifica el número 41
Notas de análisis numérico con MATLAB de trabajadores, finalmente, damos click en ok. El número de trabajadores
está limitado y depende de la cantidad de núcleos que tenga el ordenador.
En la Figura 1.31 se puede apreciar la forma de configuración en modo
paralelo.

Figura 1.29. Bucle parfor

Figura 1.30. Comparación bucle for con bucle parfor

42
Conceptos básicos
Figura 1.31. Configuración modo paralelo

En la Figura 1.32 se presenta una comparación de los bucles for con el


parfor, donde al configurar el modo paralelo con 4 trabajadores, el bucle
parfor realiza la misma actividad que el bucle for con menor tiempo de
cálculo. Para el trabajo de prueba se crea un vector a de 100 componentes
con a(k) = máx {σMagic(10k) }, donde Magic(10k) es una matriz mágica de
tamaño 10k, cuya suma por diagonales, filas y columnas, es igual a una
constante, σA representa el conjunto formado por los módulos de los
valores propios σ(A) de la matriz A.

1.1.7.6. Bucle While


En la Figura 1.33 se presenta la sintaxis del bucle while, el cual permite
ejecutar de forma repetitiva un comando o grupo de comandos, un
número determinado de veces para mientras se cumpla una condición
lógica específica.

En la Figura 1.34 se presenta una función que permite reescribir un


vector dado de la última componente a la primera. Nótese que para realizar
comentarios se puede utilizar el símbolo %. 43
Notas de análisis numérico con MATLAB

Figura 1.32. Comando parfor en modo paralelo

Figura 1.33. Bucle While

Figura 1.34. Ejemplo bucle While


44
Conceptos básicos
Figura 1.35. Comando if - elseif -else

Figura 1.36. Ejemplo if - elseif -else

1.1.7.7. Comandos if - elseif- else


En la Figura 1.35 se presenta la sintaxis de los comandos if, el cual
permite ejecutar una serie de comandos mientras se cumpla la condición
dentro del comando condicional if. También se puede condicionar dentro
de un comando if, para esto se utiliza el comando elseif que realiza los
comandos internos mientras se satisfaga la condición. El comando else (de
lo contrario) permite ejecutar las siguientes lineas de comandos sino se
satisfacen las condiciones especificadas en los anteriores if o elseif.

En la Figura 1.36 se muestran dos ejemplos del uso de los comandos if,
elseif y else para calcular el número mayor de dos y tres números dados.
45
Notas de análisis numérico con MATLAB 1.1.7.8. Comandos return - break- continue
break: Sale del bucle en el que aparece (for o while). En bucles
anidados, el control pasa al siguiente bucle exterior.

Figura 1.37. Ejemplo Comando break - continue - return

continue: Omite las declaraciones restantes en el bucle actual (for o


while). El control pasa a la siguiente iteración del mismo
bucle.

return: Se emplea en cualquier parte. Inmediatamente sale de la


función en la que aparece, retorna al llamado de la función.
En la Figura 1.37 se presenta un ejemplo del uso de los comandos break,
continue y return. Para ello, dado un número a como argumento de entrada,
si el número a < 0 emplea el comando return para salir de la función sin ejecutar
el bucle. En el caso que a > 0 se genera aleatoriamente un número entero
s U 2 {1, ...,10} y se hace una actualización para a = a + 1, posteriormente
entrará en el bucle while, dentro de este se preguntará si a <= s, en caso
que no lo sea (else) se muestra un mensaje de texto con el comando sprintf
del último número aleatorio generado s y se ejecuta el comando break que
terminará con el programa sin ingresar más al bucle. En caso contrario, es
decir a >= s se generará un listado de los valores que satisfacen a >= s
donde s y a se están actualizando cada vez que se ejecuta el bucle while.

1.2. Conceptos Básicos Matemáticos


1.2.1. Límites, Continuidad y Diferenciabilidad
Los interesados en las demostraciones de este capítulo, que son
46 fundamentales para el desarrollo posterior del curso las pueden ver en los
libros [1, 27]. Aquí se plantean como ejercicios de repaso fundamental.

Conceptos básicos
También referenciamos el libro de cálculo de Leithold para ejercicios de
esta sección [14].

Definición 1.2.1.
1. Una sucesión de números reales (o simplemente una sucesión), es
una función f : ℕ D ℝ; que a un número natural n le asigna un
número real denotado como an ; esta función escrita como conjunto
de parejas ordenadas es

{(1,a1 ), (2,a2 ),..., (n,an ),...}

y este conjunto lo escribimos de forma resumida

{a1 , a2 ,..., an ,...}

y lo denotamos por {an }n2ℕ (o {an }).

2. Dada una sucesión {an } de números reales, una serie infinita de


números reales (o simplemente una serie), generada por {an }, es
una sucesión {sn } definida por

s1 = a1
s2 = s1 + a2 (= a1 + a2 )
...
sk = sk -1 + ak (= a2 + a2 + ... + ak )
...
Los números an son llamados los términos de la serie y los números
sk son llamados las sumas parciales de la serie. Si nDTlím sn existe (esto
es si la sucesión {sn } converge) decimos que la serie es convergente y
llamamos este límite la suma o el valor de esta serie. Si este límite no
existe, decimos que la serie {sn } es divergente. Se utiliza la notación

∑ an o ∑ an, (1.2.1)
n=1
para denotar la serie generada por la sucesión {an }, y cuando la serie

converge ∑n =1 an = n→∞lı́m sn , en el caso que exista el límite. Así los
símbolos (1.2.1) puede ser considerado como una forma de mostrar
una serie, que queremos saber si converge o diverge. Puede consultar
más sobre series en [23]. 47
Notas de análisis numérico con MATLAB 3. Si tenemos funciones definidas en los reales de la forma fn(x) = an(x-c)
n
, con an U ℝ para n = 0,1,... podemos hablar de la sucesión de
funciones { fn(x)}, (o simplificada {fn }) y por lo tanto, podemos
formar la serie de funciones ªfn(x) o ªfn. Esta serie se conoce como
una serie de potencias alrededor del punto x = c U ℝ. Esto es

∑ an(x − c) n.
n= 0

Si c = 0 entonces

∑ an x n = a0 + a1 x + a2 x2 + · · ·+ an x n + · · ·.
n =0

1 1
Si la sucesión {|an | n } acotada, establecemos ρ = lı́m sup(|a n | n ) ;
si esta sucesión no es acotada establecemos ρ = ∞ . Definimos el
radio de convergencia 1/ρ por

0 si ρ = ∞,
1
si 0 < ρ < ∞,
ρ
∞ si ρ = 0.
El intervalo de convergencia es el intervalo abierto (‒R,R).

En la Figura 1.38 podemos visualizar los puntos o gráfica de una


sucesión, la cual es una serie de puntos en el plano.

Definición 1.2.2.
1. Decimos que una función f : A=ℝDℝ tiene un límite α cuando x
tiende a a; en símbolos
lı́m f (x) = α ,
x→a
si para todo ε > 0 existe un δ > 0 tal que

si 0 < |x‒a| < δ implica que | f (x) ‒ α| < ε .

2. Decimos que una sucesión {an } tiene un límite α cuando n tiende a


48 infinito, en símbolos
lı́m an = α , o an → a

Conceptos básicos
n→∞

si para todo ε > 0 existe N U ℕ tal que

si n > N implica que |an ‒ α| < ε

Teorema 1.2.1.
1. El límite si existe es único.

2. El límite de una suma o resta de funciones o sucesiones es la suma o


resta de los límites de las respetivas funciones o sucesiones, siempre que
estos límites existan. En símbolos: si lı́m f (x) = α 1 , lı́m g(x) = α 2
x→a x→a
entonces lı́m ( f + g )( x) = lı́m f (x) + lı́m g(x) = α 1 + α 2 . De forma
x→a x→a x→a
similar para sucesiones.

a1 (1, a1 )

a2

an+ 1

1 2 3 n n+ 1 ℕ
a3
an
(n, an )

Figure 1.38. Gráfica de una Sucesión

lı́m f (x) = α entonces lı́m λ f (x) = λ α


3. Si λ es un número real fijo y x→a x→a
De forma similar para sucesiones.
4. El límite de un producto de funciones o sucesiones es igual al producto
de los límites, siempre que estos existan; y el límite de un cociente
de funciones o sucesiones es igual al cociente de los límites, siempre
que la función del denominador o sucesión sea diferente de cero y 49
Notas de análisis numérico con MATLAB los límites existan. Luego si lı́m f (x) = α 1 , lı́m g(x) = α 2 , entonces
x→a x→a
lı́m ( f (x)g(x)) = α 1 α 2 y lı́m ( f (x)/ g(x)) = α 1 / α 2 . De forma
x→a x→a
similar para sucesiones.

Omitimos la mayoría de demostraciones de esta parte por no ser el


objetivo principal de este libro de notas, pero para las demostraciones
referimos al lector a los libros [1, 27].

Definición 1.2.3.
Decimos que una función f : A = ℝDℝ , es continua en a U A si
lı́m f (x) = f (a), y por la definición 1.2.2, decimos que f : A = ℝDℝ
x→a
es continua en a U A, si para todo ε > 0 existe un δ > 0 tal que

si |x-a| < δ implica que | f (x) - f (a)| < ε.

Cuando f es continua en todos los puntos de A decimos que f es


continua.

Nota 1.2.1.
Claramente las sucesiones no son continuas. Se deja como ejercicio
demostrarlo.

Teorema 1.2.2.
(Continuidad por Sucesiones). Una función f : A = ℝDℝ , es continua en
a U A si y solo si dada la sucesión {an } en A con an Da entonces {f (an )}
converge a f (a).
Demostración. Ejercicio.
Del teorema 1.2.1 podemos deducir el siguiente teorema de continuidad
de funciones:

Teorema 1.2.3.
La función constante, la suma, resta, producto, cociente de funciones
continuas, es continua.
Demostración. Ejercicio.

Nota 1.2.2.
1. No mencionamos el caso de continuidad del producto de una
constante por una función, porque es un caso particular del producto
50 de funciones.
2. Una función polinómica (o polinomio) la definimos así: dados

Conceptos básicos
a1, a2, ..., an números fijos en los reales, y x una variable real (no fija)
tenemos
n
f (x) = a0 + a1 x + · · ·+ an− 1 xn− 1 + an xn = ∑ ai xi.
i= 0

Luego un polinomio es una función formada por sumas y productos


y por el teorema 1.2.3 es continua.

Teorema 1.2.4.
(Teorema de Valor Intermedio). Si f es continua en el intervalo cerrado
[a,b] y f (a) < y < f (b), entonces existe un α U [a,b] tal que f (α) = y.
Demostración. Ejercicio

Definición 1.2.4.
1. Si A es un intervalo abierto en los números reales, decimos que una
función f : A = ℝDℝ, es diferenciable en a U A si

f (a + h) − f (a)
lı́m
h→0 h

existe, en tal caso denotamos este límite como f '(a) y lo llamamos


derivada de f en a. La derivada de f es otra función definida sobre A,
y en general para n U ℕ, la derivada n-ésima (en símbolos f (n)) es
otra función definida en A.

2. El conjunto de todas las funciones continuas sobre A lo denotamos


C (A). El conjunto de funciones para las que f ' es continua en A lo
denotamos C 1 (A). El conjunto de todas las funciones para las que f
'' es continua en A lo denotamos C 2 (A); de igual manera se define
C n (A) para cada número natural n y se lee conjunto de funciones
de clase c, conjunto de funciones de clase c uno, conjunto de funciones
de clase c dos, y conjunto de funciones de clase c n respectivamente. Y
C T(A) es el conjunto de funciones para las cuales todas sus derivadas
son continuas en A (se lee conjunto de funciones de clase c infinito).

C (n)(A) = { f : A = ℝDℝ : f (n) existe y es continua,


para n = 0,1,2, ... , T} 51
Notas de análisis numérico con MATLAB Teorema 1.2.5.
Se presenta una contenencia propia entre estos conjuntos, esto es:

C T (A) = C T-1 (A) = ... C n (A) = ... = C 1 (A) = C (A) (1.2.2)

Demostración. Ejercicio.

Ejemplo 1.2.1.
1. f (x) = e x U C T (ℝ).

1
2. f (x) = √x U C ([0,T)) pero no es C1 ([0,T)) ya que f ʹ(x) =
2 √x
no es continua en cero.

Teorema 1.2.6.
Dada f definida sobre un intervalo abierto de los reales A y con derivada
en a U A; entonces f es continua en a.
Demostración. Ejercicio.
Utilizando las propiedades de los límites, obtenemos las siguientes
propiedades de la derivada.

Teorema 1.2.7.
Dadas las funciones f, g definidas sobre un intervalo abierto de los reales
A, y con derivada en a U A. Tenemos:

1. f ) g es diferenciable en a, y (f ) g)'(a) = f ' (a) ) g' (a).

2. f · g es diferenciable en a, y (f . g)'(a) = f '(a) . g(a) + f(a) . g'(a)

f
3. ‒‒ es diferenciable en a, con g(x) ≠ 0 para todo x U A, y
g

f ʹ f ʹ(a) ·g(a) − f (a) ·g ʹ(a)


(a) = .
g [g(a)]2

Demostración. Ejercicio.
Las demostraciones de los siguientes resultados se pueden ver en [27].

52
Teorema 1.2.8.

Conceptos básicos
(Regla de la Cadena). Si g es diferenciable en a; y f es diferenciable en
g(a), entonces f o g es diferenciable en a, y

(f o g)'(a) = f ' (g (a)) . g'(a)

Teorema 1.2.9.
(Teorema de Rolle). Si f es continua en el intervalo cerrado [a,b] y
diferenciable en el intervalo abierto (a,b), y f (a) = f (b), entonces existe un
número z U (a,b) tal que f ' (ζ) = 0.

Teorema 1.2.10.
(Teorema del Valor Medio). Si f es continua en el intervalo cerrado [a,b]
y diferenciable en el intervalo abierto (a,b), entonces existe un número h U
(a,b) tal que
f (b) − f (a)
f ʹ(η ) = .
b−a

Corolario 1.2.11.
Sea A un intervalo abierto.

1. Si f es definida en A y f '(a) = 0 para todo a U A; entonces f es


constante.

2. Si f '(a) > 0 para todo a U A, entonces f es creciente en A; si f '(a) <


0 para todo a U A, entonces f es decreciente en A.

Teorema 1.2.12.
Una serie de potencias puede ser derivada término a término en su
intervalo de convergencia. Esto es si
∞ ∞
f (x) = ∑ anxn, entonces f ʹ(x) = ∑ nanx n −1, para |x| < R.
n=0 n=0

Estas nuevas series tiene radio de convergencia R.

Teorema 1.2.13.
(Fundamental del Cálculo). Sea f integrable en [a,b], definamos F sobre
[a,b] por
F(x) = ꭍ a
x
f (τ )dτ
53
Notas de análisis numérico con MATLAB Si f es continua en c U [a,b], entonces F es diferenciable en c; y
F'(c) = f (c). (Si c = a o b; entonces F'(c) se entiende como la derivada a la
izquierda o a la derecha de F).

El siguiente teorema es de suma importancia en el análisis numérico, su


demostración la podemos ver en [13].

Teorema 1.2.14.
(Teorema de Taylor con la fórmula de Lagrange para el residuo). Si
f U C n ([a,b]) y si f (n+1) existe sobre el intervalo abierto (a,b) entonces para
puntos cualesquiera c y x en [a,b] existe un punto ξ entre c y x con c ≠ x
tal que
n
1
f (x) = ∑ f (k) (c) ( x − c) k + En (x) (1.2.3)
k=0
k!
donde
1
En (x) = f (n +1) (ξ ) ( x − c) n+ 1. (1.2.4)
(n + 1)!
Demostración. Sea P un número real definido por la relación

(x − c) n+ 1 f ʹ (c) f (n) (c)


P = f (x) − f (c) + (x − c) + · · ·+ (x − c) n
(n + 1)! 1! n!

(1.2.5)
esto es
(x − c) n+ 1 n
1
(n + 1)!
P = f (x) − ∑ k! f (k) (c) ( x − c) k
k =0

y consideremos la función φ definida en J = [a,b] por


ʹ
f ʹ (t) f (n) (t)
φ (t) = f (x) − { f (t) + (x − t) + · · ·+ (x − t) n
1! n!
P
+ (x − t) n+ 1 }
(n + 1)! (1.2.7)

Claramente φ es continua en J porque es la suma de funciones continuas


diferenciables; por lo tanto, tiene derivada en (a,b). Se puede verificar que
54
φ (x) = 0 y φ (c) = 0 utilizando (1.2.5) en (1.2.7). Por el teorema de Roll,

Conceptos básicos
existe un punto ξ entre c y x tal que φ' (ξ) = 0. Calculamos ϕ' utilizando el
teorema 1.2.12, obtenemos la serie telescópica.

f ʹʹ (t) f (n) (t)


φ ʹ (t) = −{ f ʹ (t) − f ʹ (t) + (x − t) + · · · + ( − 1) (x − t) n −1
1! (n + 1)!
f (n +1) (t) P
+ (x − t) n − (x − t) n }
n! n!
(1.2.8)
P − f (n+ 1) (t)
φ ʹ (t) = (x − t) n
n!
(1.2.9)

Puesto que φ' (ξ) = 0, entonces P = f (n+1) (ξ) probando el teorema

Ejemplo 1.2.2.
Calcular el polinomio de Taylor con centro en c = 1 y orden n para
f (x) = ln (x) tomando los valores a = 0.9, b = 2. Tenemos f ' = x -1,
f '' = -x -2, f ''' = 2x -3, f (4) = -6x -4 y así sucesivamente. Para k = 1, f (k)
(x) = (-1) k-1 (k-1)!x -k y f (k) (1) = (-1) k-1 (k-1)! y f (0) (1) = ln (1) = 0.

n
1 (0) 1
ln x =
0!
f (1) ( x − 1) 0 + ∑ k! f (k) (1) ( x − 1) k
k =1
0
1
+ f (n+ 1) (ξ ) ( x − 1) n+ 1 (1.2.10)
(n + 1)!

n
1
ln x = ∑ k! (− 1) k −1 (k − 1)! (x − 1) k
k =1
1
+ ( − 1) n (n)!ξ − (n +1) (x − 1) n +1 , (1 ≤ x ≤ 2)
(n + 1)!
(1.2.11)

1 1
ln x = ∑ (− 1) k− 1 k (x − 1) k + ( − 1) n n + 1 ξ − (n + 1) (x − 1) n +1 , (1.2.12)
k=1

aplicando las propiedades k! = (k-1)!k y (n+1)! = n! (n+1) en donde


1 < ξ < x. 55
Notas de análisis numérico con MATLAB Nota 1.2.3.
a) La sumatoria Σ produce una función polinomial en x. Esta puede
considerarse como una función simple que aproxima a la más compleja
función ln x. El termino después de la sumatoria puede considerarse
como un término error. Este nos dice que tanto difiere el polinomio de
ln x.

b) El término error no es un polinomio ya que ξ depende de x de un


modo no polinomial.

Reescribiendo la ecuación (1.2.12):



1 1 1
ln x = (x − 1) − (x − 1) 2 + (x − 1) 3 − · · · + ( − 1) n −1 (x − 1) n + En (x)
2 3 n

(1.2.13)
donde
1 1
|En (x)| = ξ − (n +1) (x − 1) n +1 < (x − 1) n +1
n+ 1 n +1 (1.2.14)

ya que 1 < ξ , se tiene ξ-(n+1) < 1.

Calculemos ln 2 :
n
1 1 1 1 1
ln 2 = 1 − + − + · · · + ( − 1) n −1 + En (2) =
2 3 4 n ∑ (− 1) k− 1 k + En (2)
k =1

(1.2.15)
con
1
|En (2)| < .
n+ 1 (1.2.16)

Calcular ln2 con una precisión de 10-8. Esto es se quiere que n se elija de
1
modo que En (2) ≤ 10− 8 esto significa que ≤ 10− 8 o bien que n+1 ≥
n+ 1
108. Un cálculo con tal presición requiere un polinomio con cien millones de
términos.

Corolario 1.2.15.
Si Pn(x) representa la parte polinómica de grado n del teorema de
56 Taylor, entonces Pn(k) (x0 ) = f (k)(x0 ) con k = 0,...,n.
Demostración. La parte polinómica del teorema de Taylor es

Conceptos básicos
n
1
pn (x) = ∑ k! f (k) (x 0) ( x − x0) k
k =0 (1.2.17)

que es igual a

n
1
pn (x) = f (x0 ) + ∑ k! f (k) (x0) ( x − x0) k ,
k=1 (1.2.18)

claramente tenemos que pn(x0 ) = f (x0 ). Derivando pn(x) en (1.2.17)


tenemos

2 f ʹʹ (x0 )( x − x0 ) n (n)
pnʹ (x) = f ʹ (x0 ) + + · · ·+ f (x0 )( x − x0 ) n− 1
2! n!
(1.2.19)

utilizando (1.2.19) se tiene que p'n (x0 ) = f '(x0 ) y por inducción sobre
n llegamos a que

(n) n! f (n) (x0 )


pn (x0 ) = = f (n) (x0 ) (1.2.20)
n!

y se verifica que pn(n) (x0 ) = f (n)(x0 )

Definición 1.2.5.
El polinomio que aparece del teorema de Taylor se llama polinomio de
Taylor y cuando c = o se llaman polinomio de MacLaurin.

Ejemplo 1.2.3.
(Ejemplo en Matlab). Utilizar comandos de Matlab para graficar la
1
función f = , encontrar el polinomio de Taylor y graficar junto
5 + 4 cos(x)
con la función.

Un procedimiento realizado en Matlab es código 1.1 en él se muestra


como se introducen los comandos exactamente, y podemos ver la gráfica
resultante en 1.39.
57
Notas de análisis numérico con MATLAB

Figura 1.39. Comparación del polinomio y la Función del Ejemplo 1.2.3

1 >> syms x % convierte en simbólica a x


2 >> f=1./(5+4*cos(x)); % definición de la función
3 >> T=taylor(f,'order',8); % Crea el polinomio de taylor
4 >> pretty(T) % forma simb´olica del polinomio de Taylor
5 6 4 2
6 49 x 5 x 2 x 1
7 ------ + ---- + ---- + -
8 131220 1458 81 9
9 >> ezplot(T,[-pi,pi]) % Graficación del polinomio
10 >> x=-pi:0.05:pi;
11 >> F=subs(f,x); % Crea la función numérica
12 >> hold on
13 >> plot(x,F,'.') % Grafica la función numérica
14 >> title( ' Polinomio de Taylor Vs Función ' );
15 >>legend('Taylor grado 8','Función Teórica')

Código 1.1: Graficación y generación de Polinomio de Taylor

Otros códigos en Matlab son 1.2, y 1.3.

58
Conceptos básicos
1 >> taylor(log(x),x,'ExpansionPoint',1,'Order',6)
2
3 ans =
4
5 x - (x - 1)ˆ2/2 + (x - 1)ˆ3/3 - (x - 1)ˆ4/4 + (x - 1)ˆ5/5 - 1
6
7 >> pretty(ans)
8 2 3 4 5
9 (x - 1) (x - 1) (x - 1) (x - 1)
10 x - -------- + -------- - -------- + -------- - 1
11 2 3 4 5

Código 1.2. Procedimiento en Matlab para encontrar el polinomio de Taylor

El código 1.2 genera un polinomio con 6 términos diferentes de cero


alrededor del punto 1.

1 >> taylor(sin(x),x,'ExpansionPoint',pi/2,'Order',6);
2
3 >> pretty(ans)
4
5 / pi \ 4 / pi \2
6 | -- - x | | -- - x |
7 \ 2 / \ 2 /
8 ----------- - ----------- + 1
9 24 2

Código 1.3. Procedimiento en Matlab para general el polinomio de Taylor


alrededor de un punto

El código 1.3 genera un polinomio de grado 4 al rededor del


π
punto .
2
Otra presentación del teorema de Taylor es dada por el siguiente teorema

Teorema 1.2.16.
(El teorema de Taylor con la fórmula integral para el residuo).

Si f ∈ C n+1 [a,b] entonces para cualquier punto x y c en [a,b]

n
1
f (x) = ∑ k! f (k) (c) ( x − c) k + Rn (x) (1.2.21)
k=0 59
Notas de análisis numérico con MATLAB donde


1 x
Rn (x) = f (n+ 1) (t) ( x − t) n dt
n! c (1.2.22)

Demostración. Utilizando la integración por partes en (1.2.22)


(x − t) n n (x − t) n− 1
con u = , dv = f (n+ 1) (t) dt entonces du = − dt
n! n!
y por el teorema fundamental del cálculo (1.2.13) tenemos v = f (n) (t)


t= x
(x − t) n (n) x n (x − t) n− 1 (n)
Rn (x) = f (t) + f (t) dt
n! t= c c n!

ꭍ n (x − t) n− 1
1 x
Rn (x) = − f (n) (c) ( x − c) n + f (n)
(t) dt
n! c (n − 1)!n

ꭍ (x − t) n− 1
1 (n) x
Rn (x) = − f (c) ( x − c) n + f (n) (t) dt
n! c (n − 1)!


1 (n) 1 x
Rn (x) = − f (c) ( x − c) n + f (n) (t) ( x − t) n− 1 dt
n! (n − 1)! c
Rn− 1

1 (n)
Rn (x) = − f (c) ( x − c) n + Rn− 1
n!
(1.2.23)

Repitiendo el proceso de integración por parte en (1.2.23),


eventualmente llegamos a
n
1
Rn (x) = − ∑ k! f (k) (c) ( x − c) κ + R0 (1.2.24)
k=1

nuevamente por el teorema fundamental del cálculo tenemos


x
Ro = f ʹ (t) dt = f (x) − f (c) (1.2.25)
c

La ecuación (1.2.24) queda


n
1
60
Rn (x) = − ∑ k! f (k) (c) ( x − c) κ + f (x) − f (c)
k=1 (1.2.26)
y despejando f tenemos

Conceptos básicos
n
1
f (x) = f (c) + ∑ k! f (k) (c) ( x − c) κ + Rn (1.2.27)
k=1

Otra forma para la fórmula de Taylor

Remplazando x por x + h y c por x tenemos


n
1
f (x + h) = ∑ k! f (k) (x) h k + En (h) (1.2.28)
k=0
con
1
En (h) = f (n + 1) (ξ ) hn + 1 (1.2.29)
(n + 1)!

ξ se encuentra entre x y x + h.

Esta fórmula se puede utilizar en el caso que se quiera calcular una


función donde el argumento se altere en un pequeño valor por ejemplo
ln(2.5) en este caso h = 0.5.

Ejemplo 1.2.4.
Veamos una aplicación del teorema de Taylor 1.2.14

Busquemos un polinomio que aproxime a la función


1 x sen (t)
S (x) = dt en [− 1, 1] (1.2.30)
x 0 t

Aplicando el teorema de Taylor a la función sen x que satisface las


condiciones
x3 x5 x2n− 1 x2n+ 1
sen x = x − + − · · · + ( − 1) n− 1 + ( − 1) sen (ξ )
3! 5! (2n − 1)! (2n + 1)!
(1.2.31)

reemplazando (1.2.31) en (1.2.30) con el respectivo cambio de variable.

ꭍ t2 t4 t 2n− 2
1 x
S (x) = 1− + − · · · + ( − 1) n− 1 dt + R2n− 2 (x)
x 0 3! 5! (2n − 1)!
(1.2.32) 61
Notas de análisis numérico con MATLAB Integrando en (1.2.32) y simplificando tenemos

x2 x4 x2n − 2
S (x) = 1 − + − · · · + ( − 1) n− 1 + R2n − 2 (x) .
3!3 5!5 (2n − 1)! (2n − 1)

donde

ꭍ t 2n
1 x
R2n− 2 (x) = (− 1) n sen (ξt ) dt con 0 ≤ ξt ≤ t
x 0 (2n + 1)!

como | sen ξt | ≤ 1

ꭍ t 2n x2n
1 x
|R2n− 2 (x)| ≤ dt =
x 0 (2n + 1)! (2n + 1)! (2n + 1) (1.2.33)

Podemos elegir el grado tal que

|R2n-2 (x)| ≤ 5 % 10-9 (elegido arbitrariamente)

1
máx |R2n− 2 (x)| ≤
|x| ≤ 1 (2n + 1)! (2n + 1)

elegido n tal que

1
≤ 5 × 10− 9 (1.2.34)
(2n + 1)! (2n + 1)

La desigualdad (1.2.34) es válida cuando 2n + 1 ≥ 11. Luego el polinomio


que usamos para aproximar a (1.2.30) es

x2 x4 x6 x8
P (x) = 1 − + − + , con − 1 ≤ x ≤ 1. (1.2.35)
3!3 5!5 7!7 9!9

El código 1.4 es un procedimiento en Matlab para graficar y comparar


(1.2.30) y (1.2.35). Podemos ver la comparación en la figura 1.40.

62
Conceptos básicos
Figura 1.40. Comparación entre S y P del Ejemplo 1.2.4

(1.2.35). Podemos ver la comparación en la figura 1.40.

1 >> x=-1:0.05:1;
2 >> P = C
1-x.ˆ2/(factorial(3)*3)+x.ˆ4/(factorial(5)*5)-x.ˆ6/
3 (factorial(7)*7) +x.ˆ8/(factorial(9)*9);
4 >> plot(x,P,'o')
5 >> hold on
6 >> syms x
7 >> S=(1/x)*sinint(x);
8 >> ezplot(S,[-1 1])
9 >> title('Polinomio de Taylor P(x) vs funci ´on S(x)')
10 >> legend('P(x)','S(x)')

Código 1.4. Graficación y Comparación de Polinomio de Taylor

Otro procedimiento utilizando comando Taylor de Matlab es el código


1.5

63
Notas de análisis numérico con MATLAB 1 >> syms x
2
3 >> P = taylor(sinint(x)/x,x,0,'Order',9)
4
5 ans =
6
7 xˆ8/3265920 - xˆ6/35280 + xˆ4/600 - xˆ2/18 + 1

Código 1.5. Comando Taylor de Matlab

1.2.2. Redondeo

Consideremos un número decimal positivo x de la forma

x = 0. d1 d2 d3 . . . dm-1 dm (1.2.36)

Donde di es cualquier elemento del conjunto {0, 1, 2, ..., 9}. Se redondea


x a n cifras decimales (n < m) de manera que depende del valor del dígito
(n + 1). Si el dígito dn+1 es 0,1, 2, 3 o 4, entonces el n-ésimo dígito dn no
se cambia y los que siguen se eliminan, este redondeo se llama redondeo
por defecto.

0, 1, 2, 3, 4
0.d1 d2 · · ·dn dn+ 1 dn+ 2 · · ·dm− 1 dm · · · ≈ 0.d1 d2 · · ·dn

Si el dígito dn+1 es 5, 6, 7, 8 o 9, entonces el dígito dn se incrementa en


una unidad y los que siguen se eliminan, este redondeo se llama redondeo
por exceso.

5, 6, 7, 8, 9
0.d1 d2 · · ·dn dn+ 1 dn+ 2 · · ·dm− 1 dm · · · ≈ 0.d1 d2 · · ·(dn + 1)

Ejemplo 1.2.5.
Redondear a cuatro dígitos los siguientes números:

1. 0.1735499 < 0.1735 redondeo por defecto


2. 0.9999500 < 1.0000 redondeo por exceso
64 3. 0.4321609 < 4.322 redondeo por exceso.
Nota 1.2.4.

Conceptos básicos
Si x se redondea de modo que x es su aproximación con n dígitos, entonces

1
|x − x| ≤ × 10− n (1.2.37)
2
Veamos:
1. Si el dígito n+1 es 0, 1, 2, 3 o 4 entonces x = x + ε con ε < 12 × 10− n
y se cumple (1.2.37).

2. Si el dígito n+1 es 5, 6, 7, 8, o 9 entonces x̃ = x̂ + 10− n donde x


es un número con los mismos primeros n dígitos que x y todos los
restantes iguales a cero.

Ahora, x = x̂ + δ × 10− n con δ ≥ 12 y x − x = ( 1 − δ ) × 10− n .



como 1 − δ ≤ 12 tenemos x − x = ( 1 − δ ) × 10− n ≤ 12 × 10− n .

Si x es un número decimal, su aproximación por truncamiento a n


dígitos es el número x que se obtiene al descartar todos sus dígitos más
allá del n-ésimo. Tenemos

|x − x̂| < 10− n (1.2.38)

Es decir, que la relación entre x y x es tal que x − x̂ arrojan cero en las


primeras n posiciones y |x − x̂| < 10− n con 0 ≤ δ < 1

|x − x| = |δ | × 10− n < 10− n ya que δ < 1 (1.2.39)

Nota 1.2.5.
Pensemos en solucionar un problema, digamos: buscar el cero de una
ecuación complicada o el valor numérico de una integral definida, difícil
de trabajar. En tal caso, un programa de computación quizá produzca una
solución de números reales x1 , x2 , x3 ,... que se está aproximando a la solución
correcta. Denotemos con {xn } este conjunto de datos. Tenemos lím xn = L,
(ver 1.2.2). Donde L es la solución exacta.

65
Notas de análisis numérico con MATLAB Ejemplo 1.2.6.
1 n
1. Recordemos que e = lı́m 1 − que nos sirve para definir el
n→∞ n
importante número e. Utilizando un archivo .m de Matlab podemos
calcular términos de la sucesión

1 n
xn = 1 + .
n
Y el programa en Matlab en archivo .m es:

function y = xn(n)
y = (1+1./n).ˆn;

Valores calculados con el anterior archivo:

x1 = 2.000000
x10 = 2.593742
x30 = 2.674319
x50 = 2.691588
x1000 = 2.716924

Esta es una sucesión que converge más bien en forma lenta ya que el
límite es e = 2.71822818...

En el milésimo termino hay un error de 0.001358.

2. Como ejemplo de sucesión que converge rápidamente:

x1 = 2
{xn } = 1 1
xn+ 1 = xn + (n > 1)
2 xn (1.2.40)

Utilizando un archivo de Matlab podemos calcular algunos de sus
términos.

archivo .m
function y = xn2(n)
66 if n == 1, y = 2.0;
else

Conceptos básicos
y = 1/2 * xn2(n-1) + 1 / xn2 (n-1); end

Algunos de sus términos son:

x1 = 2.000000
x2 = 1.500000
x3 = 1.416667
x4 = 1.414216

El límite de esta sucesión es √2 = 1.414213562...

1.2.3. Notación de O mayúscula y o minúscula

Sean {xn } y {αn } dos sucesiones distintas. Decimos que xn es o


mayúscula (u o grande) de αn , en símbolos O(αn ), si existen constantes
c ≠ 0 y r, tal que |xn| < c |αn| cuando n ≥ r. Si αn ≠ 0 para n ≥ r, esto significa

que αxnn ≤ c (permanece acotada por c) cuando nDT. Decimos que xn

es o minúscula (u o pequeña) de αn, en símbolos o(αn), cuando


lı́m (xn / α n ) = 0.
n→∞

Estas notaciones nos proporcionan un método para comparar dos


sucesiones. Si xn = O(αn ) entonces xn converge al menos tan rápidamente
como αn. Si xn = o(αn ), entonces xn converge a cero más rápidamente que
αn (ver [13]).

Ejemplo 1.2.7. n+ 1
n+ 1 1 2 1
1. Con las sucesiones y tenemos n1 = 1 + ≤
n2 n n
n
n+ 1 1
c con c ≥ 2 (constante). Luego = O . esto quiere
n2 n
decir que la primera sucesión converge de forma lenta, ya que la
segunda converge muy lento.

67
Notas de análisis numérico con MATLAB 1
2. Con las sucesiones n + 1 y 1 tenemos n ln(n) 1
=
n In (n) n 1 ln(n)
n
1
no se puede acotar. Calculando el límite se tiene lı́m = 0
n→∞ ln (n)
1 1
luego = o .
n ln (n) n

sen n n+ 3
3. Con las sucesiones y , no se pueden comparar
n n3
1 1
directamente las comparamos inicialmente con n y n2
respectivamente.
sen n
lı́m
Por el teorema del emparedado sabemos que n→∞ = 0 (ya que
n
n+ 3
-1 ≤ sen n ≤ 1) y lı́m 3 = 0.
n→∞ n

sen n
n = |sen n| ≤ 1. sen n 1
1 Luego = O y por otro lado, se
n n
n
verifica que
n+ 3 1
3
= O .
n n2  

sen n 1
La rapidez de convergencia de es similar a la de mientras que
n n
n+ 3 1
la rapidez de convergencia de es similar a la más rapida 2
n n
n+ 3 sen n
por lo tanto converge más rápidamente a cero que . Esto
n n
es n + 3 = o sen n
n n
n
k− 1 1
4. Como para ln2 se tenía Pn = ∑ (− 1) tenemos que
k =1 k
n
1 1
68 ln 2 − ∑ (− 1) k− 1 k = O
n (1.2.41)
k=1
1

Conceptos básicos
y como la convergencia a cero de es lenta igual sucede para
n
n 1
ln 2− ∑ (− 1) k− 1 .
k=1 k
n− 1 1 k 1 n− 1 1
5. ex − ∑ x =O para ( |x| ≤ 1 ). De donde e x − ∑ xk
k = 0 k! n! k= 0 k!

converge más rápido a cero.

Ejercicio 1.2.1.
1 1
1. = o
n ln (n)

2. 5 + e− n = O 1 c) e− n = o
1
.
n n n2

Nota 1.2.6.
El concepto de O mayúscula y o minúscula se generaliza a funciones así:

Una ecuación de la forma f (x) = O(g (x)) . (xDT) significa que existen
constantes r y c tales que | f (x)| ≤ c |g (x)| siempre que x ≥ r. Una ecuación
de la forma f (x) = O(g (x)) (xDx0 ) significa que existe una constante c y
una vecindad de x0 tales que | f (x)| ≤ c |g (x)| en esa vecindad.

Ejemplo 1.2.8.
√x2+1 = O (x). (xDT) pues x2+1 ≤ 4x2 para x ≥ 1 (esto es xDT)
entonces √x2+1 ≤ 2x.

Ejemplo 1.2.9.
1. Sea f (x) = cosx al aplicar el teorema de Taylor con c = 0 y n = 3
tenemos

1 2 1 4
cos x = 1 − x + x cos ξ , (1.2.42)
2 24
luego

1 2 1 4
cos x + x = 1+ x cos ξ . (1.2.43)
2 24 69
Notas de análisis numérico con MATLAB Esto implica que cos x + 12 x2 = 1 + O x4 ya que

1 2
cos x + x −1 1 1 1
2 = cos ξ ≤ |cos ξ | ≤
x 4 24 24 24

Porque |cos ξ| ≤ 1.

La implicación es que cos x + 12 x2 converge a 1 aproximadamente

con la misma rapidez con la que x4 converge a cero.


x3
2. Se puede verificar que sen x − + O x5 ..cuando (xD0). (ejercicio)
6

Esto significa que hay una vecindad de cero y una constante c tales
x3
que en esa vecindad sen x − x + ≤ c x5 . Lo cual se comprueba
6
con el teorema de Taylor tomando n = 4 y f (x) = sen x.

De manera semejante f (x) = o (g (x)) (xDx0 ) significa que


f (x)
lı́m = 0
x→x0 g (x)

1.2.4. Orden de convergencia


Sea {xn} una sucesión de números reales que tiende a x*. La rapidez
de convergencia es por lo menos lineal si existe una constante c > 1 y un
entero N tales que

|xn+1 - x*| ≤ c |xn - x*| para (n ≥ N). (1.2.44)

La razón de convergencia es superlineal si existe una sucesión {ξn } que


converge a cero y un entero N tales que

|xn+1 - x*| ≤ ξn |xn - x*| siempre que (n ≥ N). (1.2.45)

La rapidez o razón de convergencia es cuadrática si existe una constante


70 c y un entero N tales que
|xn+1 - x*| ≤ c |xn - x*|2 (n ≥ N). (1.2.46)

Conceptos básicos
La rapidez o razón de convergencia es de orden α si existen dos
constante c, α y un entero N tales que

|xn+1 - x*| ≤ c |xn - x*|α (n ≥ N). (1.2.47)

1.2.5. Multiplicación anidada


(W.G Horner 1756-1837)

El polinomio

Pn (x) = a0 x n + a1 x n-1 + ... + an-2 x2 + an-1 x + an (1.2.48)

se puede escribir

n k
Pn (x) = ∑ ak ∏ x .
k=0 j =1 (1.2.49)

Recordemos
que si n ≤ m, entonces
m
∑ sk = sn + sn+ 1 + sn+ 2 + · · ·+ sm− 1 + sm
k= n
m m
y ∏ x = xm− n+ 1 . Por convención, si m ≤ n, entonces ∑ sk = 0
k= n k=n
m
y ∏ yn = 1.
k=n

Para evaluar el polinomio (1.2.5), sin realizar tantas operaciones de


multiplicación (eficientemente) podemos valernos de la multiplicación
anidada así:

P (x) = ((...((a0 x + a1 )x + a2 )x + an-1 )x + an. (1.2.50)

Su evaluación en un punto s, se realiza de la siguiente forma:

b0 ≡ a0 , bi ≡ bi-1 s + ai para i = 1, 2, ..., n. Con lo cual bn = Pn(s). 71


Notas de análisis numérico con MATLAB Renombrando
Pn-1 (x) = b0 x n-1 + b1 x n-2 + ... + bn-2 x + bn-1 .

Entonces

Pn(x) = (x-s) Pn-1 (x) + bn. (1.2.51)

En efecto

(x-s) Pn-1 (x) + bn = b0 x n + b1 x n-1 + ... + bn-1 x (1.2.52)


+ bn - sb0 x n-1 - sb1 x n-2 - ... - sbn-2 x - sbn-1

(x − s)Pn− 1 (x) + bn = b0 xn + ( b1 − sb0 ) xn− 1 + · · ·(1.2.53)


a0 a1
+ ( bn − sbn− 1 )
an

como bn = Pn (s) tenemos de (1.2.5)

Pn (x) − Pn (s)
Pn− 1 (x) =
x− s (1.2.54)

calculando el límite cuando xDs a ambos lados de (1.2.54) se tiene

Pn-1 (s) = P'n (s) (1.2.55)

Algoritmo 1.2.1.
1. Simple: que solo comprende n multiplicaciones y n adiciones para la
evaluación de un polinomio:

P ← ak
para k = n − 1, n − 2, · · ·, 0 hacer
P ← xP + ak
fin
2. Compuesto: para calcular la evaluación del polinomio y su
72 derivada:
p ʹ ← a0

Conceptos básicos
b0 ← a0
para i = 1 : n − 1, hacer
bi ←bi− 1 s + ai
Pʹ ←sP ʹ + bi
fin de para
bn ←sbn− 1 + an
fin del algoritmo

Ejercicio 1.2.2. Elaborar los programas en Matlab de los anteriores


algoritmos y verificarlos con ejemplos.

1.2.6. Sistemas de Ecuaciones Lineales


El sistema de ecuaciones lineales
a11 x1 + a12 x2 + a13 x3 + ... + a1n xn = b1
a21 x1 + a22 x2 + a23 x3 + ... + a2n xn = b2
a31 x1 + a32 x2 + a33 x3 + ... + a3n xn = b3 (1.2.56)
. ..
...... + ........ + ....... + . . + ...... = .
an1 x1 + an2 x2 + an3 x3 + ... + ann xn = bn

es un sistema de n ecuaciones con n incógnitas x1 , x2 , x3 , ..., xn. los


ai j y bi se suponen que son números reales fijos.

El sistema (1.2.56) se puede escribir:

a11 a12 a13 · · · a1n x1 b1

a21 a22 a23 · · · a2n x2 b2


(1.2.57)
a31 a32 a33 · · · a3n x3 = b3 .
.. .. .. ... .. .. ..
. . . . . .

an1 an2 an3 · · · ann xn bn

A x b 73
Notas de análisis numérico con MATLAB Simplificando
Ax = b.

Recordemos que la matriz identidad es:

1 0 0 ··· 0

0 1 0 ··· 0

I= 0 0 1 ··· 0 ,
.. .. .. .. ..
. . . . .

0 0 0 ··· 1

Definición 1.2.6.
Si dos sistemas tienen exactamente las mismas soluciones, decimos que
son sistemas equivalentes.

Llamamos operaciones elementales entre filas o columnas los


siguientes procedimientos:

Si εi : representa la i-ésima ecuación del sistema.


i) εi $ εj (intercambio de filas)
ii) λεi , λ ≠ 0 (multiplicar una fila por una constante)
iii) εi + λεj , i ≠ j (a la fila i-ésima sumarle el producto de otra fila por
una constante)

Teorema 1.2.17.
Si un sistema de ecuaciones se obtiene a partir de otro por medio de una
sucesión finita de operaciones elementales, los dos sistemas son equivalentes.

1.2.7. Propiedades de las Matrices

Definición 1.2.7. Si A y B son dos matrices tales que AB = I, se


dice que B es una inversa por la derecha de A; y A es una inversa por la
izquierda de B.
74
Ejemplo 1.2.10.

Conceptos básicos
Dados α, β ∈ ℝ tenemos

1 0
1 0 0 1 0
0 1 = ,
0 1 0 0 1
α β

Las matrices de la izquierda del igual, no son únicas.

Teorema 1.2.18.
Una matriz cuadrada puede tener a lo sumo una inversa por derecha.
Demostración. Sea AB = I, donde A, B y I son matrices n % n. Sea A(j) la
j-ésima columna de A, I(k) la k-ésima columna de I. La ecuacion AB = I
n
significa que ∑ b jk A( j) = I (k) (1 ≤ k ≤ n).
j =1

Luego cada columna de I es una combinación lineal de columnas de


A. Como las columnas de I generan ℝn, lo mismo secede con las columnas
de A. En consecuencia, las columnas de A forman una base de ℝn, y los
coeficientes bjk están determinados de forma única.

Sea A ∈ M2%2 (ℝ). El sistema Ax = b ∈ ℝ2 admite al menos dos


representaciones geométricas:

• Intersección de rectas: la solución es el punto (o conjunto de


puntos) que satisface las ecuaciones de todas las rectas, es decir, su
intersección. La cual puede ser vacía o un punto o un conjunto de
puntos.

• Combinación lineal de vectores: el vector término independiente b


es una combinación lineal de las columnas de A, cuyos coeficientes
son los valores de x (ver la figura 1.41). Con notación de Matlab:

Ax = b; A(:,1)x1 + A(:,2)x2 = b. (1.2.58)

Para que el sistema (1.2.58) tenga solución es necesario y suficiente que


b ∈ Im(A). 75
Notas de análisis numérico con MATLAB La idea anterior se puede generalizar a sistemas de orden superior (ver
[15]).

Figura 1.41. Combinación lineal de vectores columna

Teorema 1.2.19.
Si A y B son matrices cuadradas y AB = I, entonces BA = I.
Demostración. Sea C = BA-I + B. En tal caso AC = ABA - AI + AB
= A - A + I = I. Luego C es una inversa por derecha de A. Por el teorema
1.2.18 B = C, por tanto, BA = I.

Nota 1.2.7.
1. B es la inversa de A (luego A es invertible o no singular) B = A-1.

2. Si A es invertible, el sistema Ax = b tiene solución x = A-1b.

3. Las operaciones elementales se pueden realizar mediante la


multiplicación de matrices.

Definición 1.2.8.
Se define una matriz elemental como una matriz n%n que se origina al
aplicar una operación elemental a la matriz identidad de n%n.

Ejemplo 1.2.11.
Si intercambiamos la fila 2 y tres de la matriz identidad, y multiplicamos
76 esta matriz identidad modificada por una matriz por la izquierda obtenemos
la matriz con intercambio de filas 2 y 3, si multiplicamos a la derecha de

Conceptos básicos
intercambian las columnas 2 y 3.

1 0 0 a11 a12 a13 a11 a12 a13

= (Intercambio
0 0 1 a21 a22 a23 a31 a32 a33
de filas)
0 1 0 a31 a32 a33 a21 a22 a23

Ahora si multiplicamos la fila 2 de la matriz identidad por un número λ y


esta matriz identidad modificada la multiplicamos por la izquierda con otra
matriz, obtenemos la matriz con la fila 2 multiplicada por λ. En el caso que
sea por la derecha aparece la segunda columna multiplicada por λ.

1 0 0 a11 a12 a13 a11 a12 a13


(Multiplicar
0 λ 0 a21 a22 a23 = λ a21 λ a22 λ a23 una fila por
un escalar).
0 1 0 a31 a32 a33 a31 a32 a33

Si multiplicamos la fila 2 por un escalar y le sumamos esta fila a la


tercera.

a11 a12 a13


1 0 0 a11 a12 a13
a21 a22 a23 (Multiplicar
0 1 0 a21 a22 a23 = y sumar)
λ a21 + a31 λ a22 + a32 λ a23 + a33
0 λ 1 a31 a32 a33
a31 a32 a33

Si queremos aplicar una sucesión de operaciones elementales a las filas


de A introducimos matrices elementales E1 , E2 , ..., Em y escribimos la
matriz transformada como

Em Em-1 ... E2 E1 A.

Cuando una matriz es invertible Em Em-1 ... E2 E1 A = I; luego

A-1 = Em Em-1 ... E2 E1 77


Notas de análisis numérico con MATLAB Teorema 1.2.20.
Para toda matriz n%n las siguientes propiedades son equivalentes:

i) A es no singular.
ii) detA ≠ 0.
iii) Las filas de A forman una base de ℝn.
iv) Las columnas de A forman una base de ℝn.
v) Como aplicación de ℝn en ℝn, A es inyectiva y sobreyectiva.
vi) Ax = 0 )x = 0:
vii) Para b ∈ ℝn, hay exactamente un x ∈ ℝn. tal que Ax = b.
viii) A es un producto de matrices elementales.
ix) 0 no es valor propio de A.

Definición 1.2.9.
Una matriz cuadrada es definida positiva si xT Ax > 0 ∀x ≠ 0.

Ejemplo 1.2.12.
2 1

A= es definida positiva pues
1 2

2 1 x1
xT Ax = x 2 x1 = ( x1 + x2 ) 2 + x12 + x22 > 0
1 2 x2

Para todo x ≠ (0,0) xT Ax se llama forma cuadrática.

Teorema 1.2.21.
Si A es definida positiva y simétrica sus valores propios son reales
positivos.

En ocasiones se parten las matrices en submatrices.

A11 A12 B11 B12 C11 C12


=
A21 A22 B21 B22 C21 C22

78 Donde Ai j ,Bi j ,Ci j son matrices de ordenes i % j para i; j = 1,2


1.3. Ejercicios

Conceptos básicos
1. Realizar los siguientes programas en Matlab:

a) Dado un n ∈ ℕ generar el triángulo de Pascal.


b) Dado un x ∈ ℝ redondear con p ∈ ℕ cifras el número x.
c) Dada una matriz real A, muestre cuántas veces se repite cada
componente de la matriz.
d) Dada una matriz A, muestre como salida los componentes
mayor y menor, y sus respectivas posiciones en filas y
columnas.
e) Dado un polinomio evaluarlo en un punto c ∈ ℝ utilizando
multiplicaciones anidadas.
f) Generar los n primeros términos de la sucesión de Fibonacci.
g) Si dividimos cada término de la sucesión de Fibonacci por
el anterior, obtenemos otra sucesión que es convergente.
Realizar un programa que muestre y grafique los n términos
de esta sucesión. Calcular el límite de la sucesión.
h) Generar los n primeros primos.
i) Calcular n! para n ∈ ℕ.

x2 − 2x + 1, si − 1 ≤ x < 0,
j) Graficar f (x) = 22x , 0 ≤ x < 1,
1, 1 ≤ x ≤ 2.
k) Graficar el sólido de revolución cuya generatriz viene dada
por la ecuación y = x2 y cuyo eje de revolución es el eje x.
l) Graficar la superficie x2 + 5xy - y2 + z2 = 4
m) Calcular desde la ventana de comandos √ -1. ¿Es el resultado
que esperabas? Realizar un programa que permita obtener
las raíces reales.
n) Identificar si dada una matriz cuadrada A es definida positiva.
ñ) Averiguar cúal es la secuencia Look-and-say y realizar el
programa para generarla.
o) Calcular y graficar el polinomio de Taylor de orden n ∈ ℕ de
una función real con centro en c ∈ ℝ para cierto intervalo
[a, b] que contenga al punto c.
p) Elaborar un programa que permita resolver el sistema de
ecuaciones lineales AX = B por pivoteo. 79
Notas de análisis numérico con MATLAB q) Obtener el conjunto de todos los divisores positivos de un
número n ∈ ℕ y que muestre la multiplicidad de cada uno.
r) Dados n números enteros, calcular el máximo común divisor
de los n números.
s) Dado un vector x, mostrar las componentes y posiciones del
vector x cuya posición corresponde a un número natural.
t) Escribir un programa que pida dos números naturales
n > 1 y m que deberán ser introducidos desde el teclado.
Luego generar la secuencia a1 = n. Si ak es par, entonces
ak+1 = ak /2; pero si es impar entonces ak+1 = 3ak + 1, para
k = 1, ..., m-1.

2. Use el teorema de Taylor para probar el teorema del binomio de


Newton, para exponente entero y positivo n,
n
n n− k k
(x + y) =n
∑ k
x y
k=0
3. Demostrar los teoremas no demostrados de este capítulo.
4. Encontrar los siguientes límites:

x3 − 8
i. lı́m .
x→2 x − 2

xn − yn
lı́m
ii. .
x→y x − y

√ a+ h− √ a
lı́m
iii. .
h→0 h
1 − √ 1 − x2
lı́m
iv. .
x→0 x
1 − √ 1 − x2
lı́m
v. .
x→0 x2

5. Verificar que se satisface la definición de límite en función de ε y


δ:

1
i. lı́m = 1.
x→1 x

ii. x
lı́m = 0.
x→0 1 + sen2 x
80
6. Probar que lı́m f (x) = lı́m f (a + h)

Conceptos básicos
x→a h→0

7. Suponga que f (x) ≤ g(x) ≤ h(x) y lı́m f (x) = lı́m h(x).


x→a x→a
Pruebe que lı́m g(x) existe, y que lı́m g(x) = lı́m f (x) = lı́m h(x).
x→a x→a x→a x→a

(Hacer una gráfica).

8. El símbolo [x] denota el mayor entero que es ≤ x. Así [2.1] = [2] =


2. y [-0.9] = [-1] = -1. Decir en cuáles puntos son continuas las
siguientes funciones:

i. f (x) = [ x].
f (x) = x − [x].
ii.
f (x) = [ x] + √ x − [x].
iii.
1
iv. f (x) = .
x

9. Suponga que f es una función que satisface | f (x)| ≤ |x| para todo
x. Mostrar que f es continua 0.

10. Suponga que f satisface f (x+y) = f (x) + f (y), y que f es continua


en 0. Probar que f es continua en a para todo a.

11. Determine los números en que la función es continua y justifique:


x+ 1
i. f (x) = .
2x + 5

3x − 1 si x ≤ 2

f (x) =
ii.

4 − x2 si 2 ≤ x

xn − 1
12. Demuestre que la función f (x) = donde n es un entero
x− 1
positivo, tiene una discontinuidad removible en 1.

13. Encontrar f ′(x) si f (x) = g(t + x), y si f (t) = g(t + x). La


respuesta no debe ser la misma. 81
Notas de análisis numérico con MATLAB 14. Si f es diferenciable en x. Probar que
f (x + h) − f (x − h)
f ʹ(x) = lı́m .
h→0 2h

15. Encontrar f ′(x) en:

i. f (x) = sen(x + x2 ).
2
ii. f (x) = sen x + sen x .
sen(cos x)
iii. f (x) = .
x

16. Encontrar f ′(0) si


g(x), si x = 0
f (x) =
0, si x = 0,

y g(0) = g′(0):

17. Encontrar el polinomio de Taylor con el grado indicado en el


punto indicado:

e x
i. f (x) = e , grado 3 en 0.
ii. f (x) = esen x , grado 3 en 0.
iii. f (x) = sen x, grado 2n en π / 2.
1
iv. f (x) = , grados n en 0.
1+ x

18. Probar que si x ≤ 0, entonces


ꭍ et |x| n+ 1
x
(x − t) n dt ≤ .
0 n! (n + 1)!

19. Demuestre que la ecuación x = 3-x tiene una solución en [0,1].

20. Sea k un entero positivo y se 0 < α < 1. ¿A que clase Cn(ℝ)


pertenece la función xk+α?
82
21. Determine los dos primeros términos de la serie de Taylor para xx

Conceptos básicos
alrededor de 1 y el residuo E1.

22. Desarrolle la función √x en serie de potencias de (x-1)


y aproxime √0.9999999995 hasta el décimo lugar decimal.

23. Dado el polinomio P(x) = 2x3 + 3x2 + 4x + 5. Evaluar el polino-


mio y su derivada en el punto x = 2, utilizar el algoritmo de
Horner.

24. Demuestre que toda operación elemental entre filas o columnas


se puede anular por medio de una operación del mismo tipo.

25. Una matriz monomial es una matriz cuadrada en la que cada fila
y cada columna contiene exactamente una componente distinta
de cero. Demuestre que toda matriz monomial es no singular.

26. Sea D una matriz en forma de particiones:

A B
D= .
C I

Demuestre que si A-BC es no singular, entonces D es no singular.

27. ¿Son definidas positivas las siguientes matrices?


4 2 1
1 −1
a) , b) 2 5 2 .
−1 1
1 2 4

28. ¿Para qué valores de a es definida positiva la siguiente matriz?

1 a a

A= a 1 a

a a 1
83
Notas de análisis numérico con MATLAB 29. Una matriz cuadrada A se dice que es antisimétrica cuando
AT = -A. Demuestre que si A es antisimétrica entonces xT Ax = 0
para todo x.

30. Demuestre que los elementos de la diagonal de una matriz


antisimétrica son 0 y que su determinante también es 0 cuando
la matriz es de orden impar.

31. Sea A una matriz cuadrada, y defina


1 1
A0 = (A + AT ) A1 = (A − AT ).
2 2

Demuestre que A0 es simétrica, A1 es antisimétrica, A = A0 + A1


y para toda x, xT Ax = xT A0 x. Esto implica porque al estudiar
las formas cuádricas podemos restringir nuestra atención a las
matrices simétricas.

32. Todo estudiante de cálculo sabe que

sen h
lı́m = 1,
h→0 h


Demuestre ahora que sen h = 1 + O(h2 ).
h
1 − cos h
33. lı́m = 0 ¿con qué rapidez de convergencia?
h→0 h

34. Suponga que A y B son matrices definidas positivas de n×n.

i. Es ‒A definida positiva?
ii. Es AT definida positiva?
iii. Es A + B definida positiva?
iv. Es A2 definida positiva?

84
Fuente: Freepik.es

Capítulo 2

ARITMÉTICA DEL
COMPUTADOR

85
E
s necesario hablar de la aritmética del computador en un curso
de análisis numérico, ya que la aritmética finita del computador
varía con respecto a la aritmética infinita que conocemos desde
los primeros años y esto influye en la teoría del error. Se pueden eviden-
ciar casos reales donde el desconocimiento del error ocasiona catástrofes
como la falla del misil Patriot [2], O el caso del cohete Ariane 5 [8]. Otras
evidencias del mal manejo del error las podemos encontrar en libro de
Einarson [9].

2.1. Números de Punto Flotante y


Error de Redondeo
De la aritmética básica sabemos que cualquier número puede
expresarse mediante notación científica normalizada. Multiplicamos
o dividimos por 10 tantas veces como sea necesario para que todos los
dígitos diferentes de cero aparezcan a la derecha del punto decimal y de
modo que el primer dígito después del punto no sea cero. Por ejemplo:

Cualquier número con parte decimal diferente de cero, se puede


escribir en forma “polinómica”, sin utilizar puntos decimales y en lugar de
la variable se utiliza el número 10: Como ejemplo el número 537.325 se
puede escribir de una forma más explícita (o “polinómica”).

Número Notación científica Normalizada

235.478 0.235438 × 103

0.005789 0.5789 × 10-2

-0.0345 -0.345 × 10-1

Cuadro 2.1. Notación Científica Normalizada 87


Notas de análisis numérico con MATLAB 537.325 = 5 × 102+3 × 101+7 × 100+3 × 10-1+2 × 10-2+5 × 10-3

Lo cual ocurre en el sistema decimal común. Pero en el sistema binario


sólo se utilizan los dígitos 0 y 1. Por ejemplo, para el número 1001.11101
tenemos

= 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20 + 1 × 2-1
1001.11101

+ 1 × 2-2 + 1 × 2-3 + 0 × 2-4 + 1 × 2-5

= 1 × 23 + 1 × 20 + 1 × 2-1 + 1 × 2-2 + 1 × 2-3



+ 1 × 2-5

y para llevar este número al sistema decimal efectuamos las operaciones


indicadas.

1 1 1 1
8+1+ + + + = 9.90625
2 4 8 32

Los números 10 y 2 que llevan las potencias en los ejemplos


anteriores se llaman bases del sistema numérico. En general, cualquier
β > 1 puede utilizarse como base para un sistema numérico y los números
representados en la base β incluirán los dígitos 0, 1, 2, 3, 4, ..., (β - 1). En
general un número N en la base β se escribe (N)β , luego (1001.11101)2
= (9.90625)10 , y según la base β generalmente el sistema recibe su nombre, si
β = 2 es sistema binario, si β = 10 se llama sistema decimal, si β = 8 se
llama sistema octal e.t.c.

Nota 2.1.1.
La mayoría de computadores internamente trabajan con el sistema
binario, pero muestra los resultados en pantalla en el sistema decimal. En
este proceso de cambio de sistema ocurre peqeños errores de redondeo.

Decimos que la longitud de palabra del computador es el número


fijo de dígitos con que trabaja este. La longitud de palabra impone una
restricción sobre la presición con la que se pueden representar los números
reales en el computador. Un número decimal x distinto de cero en notación
88 científica normalizada puede representarse en la forma
x = ± q × 10 n (2.1.1)

Aritmética del computador


1
donde q es un número tal que ≤ q < 1 y n es un número entero
10
(positivo, negativo o cero). En general para (N)β tenemos

x = q × βn (2.1.2)
1
donde ≤ q < 1 Si x = 0 entonces q = 0. Para x binario
β
x = ± q × 2m (2.1.3)
1
Donde ≤ q < 1 (si x ≠ 0) y n es un entero. Llamamos a q la mantisa
2
y a n exponente o característica. Un número expresado en la forma (2.1.3)
se dice que tiene la forma de punto flotante normalizado. Y cuando este
número binario normalizado se hace corresponder con la longitud palabra
se llama número de máquina.

Nota 2.1.2.
En un computador q y m están representados como números según su
base.

Ejemplo 2.1.1.
Si un computador tienen una longitud de palabra 32 (esto es trabaja con
32 dígitos binarios o bits por su expresión inglesa binary digits). Supongamos
que estos bits están repartidos de la siguiente forma cuando representamos
un número:

Signo de x 1 bit
Signo del exponente m 1 bit
Exponente(entero |m| 7 bits
Mantisa (número real |q|) 23 bits

Dado que un número real distinto de cero x = ± q × 2m puede normalizarse


de tal manera que su mantisa se encuentre en el rango 12 ≤ q < 1. Se puede
suponer que el primer bit en q después del punto binario sea 1, y por lo tanto,
no requiere almacenamiento (se da por defecto en el computador), luego los
23 bits que se dan para la mantisa se utilizan para almacenar el 2o, 3er, ..., 24o
89
Notas de análisis numérico con MATLAB bits en q. En efecto, la máquina tiene una mantisa de 24 bits para sus número
de punto flotante.

Los anteriores valores en nuestro lenguaje decimal significan: que si un


número real x es expresado de la forma x = q × 2m el cual tiene la forma de
punto flotante normalizado; y si x puede representarse exactamente con |m|
ocupando 7 bits y q ocupando 24 bits, entonces, es un número de máquina (o
número máquina). Veamos estos datos en la forma decimal y lo que significa:

Como |m| tiene a lo más 7 bits se tiene:

|m| ≤ (1111111)2 = 1 × 26 + 1 × 25 + 1 × 24 + 1 × 23 + 1 × 22 + 1 × 21 + 1 × 20,

esto es
27 − 1
= 26 + 25 + 24 + 23 + 22 + 2 + 1 = = 27 − 1 = 127
2− 1

Para llevarlo a una base decimal buscamos un entero n tal que

2127 ≈ 10n (2.1.4)

aplicando logaritmo a ambos lados y despejando n se tiene,

127 ln (2)
n ≈ (2.1.5)
ln (10)

entonces n ≈ 38 y en consecuencia

2127 ≈ 1038. (2.1.6)

Luego este computador puede manejar números tan pequeños como


10 y números tan grandes como 1038. Cuando n > 38 se produce un
-38

desbordamiento por exceso o overflow en inglés y generalmente, el


computador se detiene o bloquea. Y si n < -38 se produce un desbordamiento
por defecto o underflow en inglés, el computador en ocasiones convierte
estos números en ceros pero con una advertencia.

En el ejemplo 2.1.1 vemos que el intervalo de trabajo puede ser


pequeño, por eso en ocasiones se aumenta el intervalo de trabajo utilizando
90 programas con aritmética de doble precisión que consiste en combinar
dos longitudes de palabra (2 |q| + 2|m| + 2 aproximadamente). También

Aritmética del computador


se puede ampliar más. Para el caso del intervalo inicial se utiliza precisión
simple o sencilla.

También en el ejemplo 2.1.1 la restricción de que q requiere máximo


24 bits significa que nuestros números de máquina tienen una precisión
limitada, ya que el bit menos significativo (el último) en la mantisa
representa unidades de 2-24 (aproximadamente 10-7). Por lo tanto, los
números con más de 7 dígitos decimales serán aproximados por el
computador y decimos que tiene una precisión de 7.

Para el caso de los números enteros en el computador del ejemplo


2.1.1, si z es un número entero tenemos

231 − 1
|z| ≤ 11111 · · ·1 = 230 + 229 + 228 + · · ·21 + 20 = = 231 − 1 = 21474736647.
2 2− 1
31 veces + 1 dı́gito
231 − 1
1 = 230 + 229 + 228 + · · ·2 + 2 =
1 0
= 231 − 1 = 21474736647.
2 2− 1
gito

Figura 2.1. Representación de un número en punto flotante del Ejemplo 2.1.1

Luego los enteros en este computador están en el intervalo

|z| ≤ 21474736647.

Podemos hacer una representación gráfica del punto flotante para un


número real de precisión sencilla en el computador del ejemplo 2.1.1 este
se divide en tres campos, ver la figura 2.1.

S, s = {0,1}, luego

x = (-1)S × q × 2m donde q = (0.1F)2 y m = (-1)s × E. (2.1.7)


91
Notas de análisis numérico con MATLAB
2.2. Algoritmo para transformar números
reales a binarios
Existen algoritmos que permiten pasar de una base a otra, a manera
de ejemplo se explica el procedimiento para pasar 23.215 al sistema de
numeración de base 2 o binario.

1. Se calcula la parte entera por divisiones sucesivas:

23 = 1 × 24 + 0 × 23 + 1 × 22 + 1 × 21 + 1 × 20 = (10111)2

23 2
3 11 2
1 1 5 2
1 2 2
0 1

2. La parte decimal por multiplicaciones sucesivas:

2 × 0.215 ) [|0.430|]) ) 0
2 × 0.430 ) [|0.860|]) ) 0
2 × 0.860 ) [|1.720|]) ) 1
2 × 0.720 ) [|1.440|]) ) 1
2 × 0.440 ) [|0.880|]) ) 0

3. Resultado final: 23.215 = (10111.00110...)2

Recordemos que lo que tenemos que hacer es multiplicar sucesivamente


por dos para ir eliminando los exponentes de dos y se va restando la parte
entera.

x = a12-1 + a22-2 + ... +an2-n + ...

2x = a1 + a22-1 + ... + an2-n + ...

Ejemplo 2.2.1.
1
Llevemos el número decimal = 0.a1a2a3 ...a binario:
92 10
2

Aritmética del computador


= a1.a2a3a4 (multiplicando por 2)
10

entonces a1 = 0

2
= 0.a2a3a4
10

4 = a2a3a4a5 (multiplicando por 2)


10
entonces a2 = 0

4
= 0.a3a4a5
10

8 = a3a4a5a6 (multiplicando por 2)


10
entonces a3 = 0

8 = 0.a4a5a6
10
16 = a4a5a6a7 (multiplicando por 2)
10
entonces a4 = 1

1.6 = 0.a5a6a7 ...

restando 1

6
0.6 = = 0.a5a6a7a8 ... por 2
10

12 = a5.a6a7a8a9 ...
10
entonces a5 = 1

2
0.2 = = 0.a6a7a8a9 ... por 2
10

luego

1 = 0.0001100110011 ...
10 93
Notas de análisis numérico con MATLAB 1
= (0.1100110011...) × 2-3. normalizando
10

Algoritmo 2.2.1.
Algoritmo para pasar un número decimal a a números binarios

Entrada: m ∈ ℕ

salida: brbr-1 ... b1b0 = m, bi ∈ {0,1} para i = 0, ..., r


R Cm
i C0
mientras R > 0 haga
R
q C (parte entera del cociente)
2
bi C R - 2q
R Cq
i Ci + 1

fin

Para fracciones:

Entrada x = 0.d1d2d3 ... dl con di ∈ {0, 1, 2, ..., 9} para i = 1, ...l


salida x = 0.c1c2 ... cn con ci ∈ {0, 1} para i = 1, ...n.
F C 2x
para i = 1 hasta n haga
ci C [|F|]
F C 2 (F - ci ).

fin

Los archivos .m para estos dos algoritmos:


1. Programa que transforma un número entero mayor que cero en
número binario podemos ver código 2.1 y el nombre del archivo
94 es binario.m
Aritmética del computador
1 function y = binario(N)
2
3 R = N; i = 1;
4
5 while R > 0$
6
7 q = fix(R/2);
8
9 b(i) = R - 2*q;
10
11 R = q;
12
13 i = i + 1;
14
15 y = b;
16
17 end

Código 2.1. Transformación de un Número entero a Binario

2. Programa para transformar una fracción en binario, el código


2.2 convierte un número fracionario mayor que cero a binario
Q se debe dar en forma de fracción. El nombre del archivo es
binariofr.m

1 function y = binariofr(Q)
2
3 x = Q;
4
5 F = 2*x;
6
7 for i = 1:16
8
9 c(i)= fix(F);
10
11 F = 2*(F-c(i));
12
13 y(i) = c(i)*10\symbol{94}(-i);
14
15 end
16
17 format long 95
Notas de análisis numérico con MATLAB 18
19 y = sum(y)

Código 2.2. Transformación de un Número Fraccionario a Binario

Ejercicio 2.2.1. Implementar los códigos 2.1 y 2.2 en Matlab y poner en


práctica con 6 números cada uno.

xʹ x xʹʹ xʹ x xʹʹ

Figura 2.2. Ubicación del Número Redondeado y Truncado de x

2.3. Números de Máquina Próximos


Tomemos del ejemplo 2.1.1 donde |m| ≤ 127, sea x > 0, x = q × 2m
con 12 ≤ q < 1

¿Cuál es el número de máquina más cercano al número en punto


flotante normalizado x? Para responder esta pregunta, tomemos

x = (0.a1a2a3a4 ... a24a25a26 ...)2 × 2m

en donde cada ai = {0,1} y a1 es 1. existen dos números cercanos a


saber:

Truncamiento. Un número de máquina próximo se obtiene al


descartar los bits excedentes a25a26 ...

El número restante es

x′ = (0.a1a2a3 ... a24 )2 × 2m.

Observe que x′ se encuentra a la izquierda de x en la recta real.

Los números que tienen representación infinita o posiblemente


periódica en una base β, por ejemplo 1/3 = (0.33333...)10 ,
0.2 = (0.00110011001100110...)2 requieren de un truncamiento para
96 poder ser representados en un computador.
Redondeo. Otro número de máquina próximo se obtiene mediante

Aritmética del computador


redondeo por exceso (Esto es eliminamos a25a26... pero aumentamos en
una unidad a a24).

x′′ = ((0.a1a2a3 ... a24)2 + 2-24) × 2m

(En la figura 2.2 podemos ver las comparaciones).

El más cercano entre x′ y x′′ se selecciona para representar a x en el


computador. Analicemos los errores:

Análisis del error


1. Si x′ es el más cercano el error absoluto está acotado como sigue

1 1
|x-x′| ≤ |x′′-x′| = × 2-24 × 2m = 2m-25
2 2

esto es

|x - x′| ≤ 2m-25 (2.3.1)

y el error relativo está acotado como sigue:

x − xʹ 2m− 25 2− 25 2− 25
≤ = ≤ 1 = 2− 24
x q × 2m q 2
esto es

x − xʹ
≤ 2− 24
x (2.3.2)

2. Cuando x′′ es el más cercano siguiendo el mismo procedimiento de


a) se sigue
1
x − xʹʹ ≤ xʹʹ − xʹ = 2m− 25
2
y
x − xʹʹ
≤ 2− 24 .
x (2.3.3) 97
Notas de análisis numérico con MATLAB Resumen:
De las ecuaciones (2.3.2) y (2.3.3) tenemos que si x* es el número de
máquina más próximo a x ≠ 0 dentro del intervalo de máquina entonces

x − x*
≤ 2− 24 (2.3.4)
x
x* − x
si definimos δ ≡ se tiene
x

x* = x (1 + δ) (2.3.5)

con |δ| ≤ 2-24 en nuestro ejemplo.

Denotamos el número más cercano al número en punto flotante


normalizado x como f l (x) luego

f l (x) = x*.

Y al número 2-24 lo llamamos error de redondeo unitario. Con


frecuencia

Nota 2.3.1.
El número de dígitos asignados a la mantisa está directamente
relacionado con el error de redondeo unitario de la máquina y determina la
exactitud de la aritmética del computador. Siempre que se introduzcan datos
en un computador deben esperarse errores de redondeo.

Ejemplo 2.3.1.
¿Cual es la forma binaria del número ? ¿Cúales son los dos números
de máquina más próximos según el ejemplo 2.1.1? ¿Cuál de éstos se escogerá
como f l (x)? ¿Cuál es el error de redondeo absoluto y cuál es error relativo al
representar x como f l (x)?

Solución:
Utilizando el código 2.2 con nombre binariofr.m. en Matlab tenemos

98
Aritmética del computador
1 >>binariofr(2/3)
2
3 y =
4
5 0.10101010101010
6
7 ans =
8
9 0.10101010101010

Código 2.3. Utilización del código 2.2 en el Ejemplo 2.3.1

Luego

2
x= = ( 0.10101...1010...) 2
3

el número truncado es

x′ = (0.10101...1010)2

y el redondeado es

x′′ = (0.10101...1011)2

Note que en el redondeado se le aumenta uno al 24vo término, ya que


el 25vo término es uno. No siempre se puede sumar.

Luego

2
x − xʹ = ( 0.1010 · · ·) 2 × 2− 24 = × 2− 24
3

x” − x = xʹʹ − xʹ − x − xʹ

2 1
xʹʹ − x = 2− 24 − × 2− 24 = × 2− 24
3 3
Donde
f l (x) = xʹʹ
99
Notas de análisis numérico con MATLAB por lo que el error de redondeo absoluto es
1
| f l (x) − x| = × 2− 24
3

y error de redondeo relativo es


1
f l (x) − x × 2− 24
= 3
2
= 2− 25
x 3

Observe que 2-25 < 2-24 con lo cual se cumple (2.3.2) y (2.3.3).

Decimales correctos y dígitos significativos en una


aproximación.
Sea x es una aproximación de x y n el natural más grande que satisfacen

| x̃ − x| ≤ 0.5 × 10− n

Entonces, se dice que x se aproxima a x con nk decimales correctos.

Los dígitos en x que ocupan posiciones donde la unidad es


≥ 10-n se llaman dígitos significativos (los ceros iniciales no cuentan).

Ejemplo 2.3.2.
Sea x = 0.001234 y x = 0.001238. Entonces x tiene 5 cifras decimales
correctas y 3 dígitos significativos, pues 0.001, 0.0002, 0.00003 son mayores
que 10-5 pero 0.000004 > 10-5.

Errores por Cancelación.


Los errores de cancelación ocurren cuando se hace sustracción de dos
números muy cercanos, donde se genera la pérdida de dígitos significativos
correctos en los resultados. Para poder apreciar los errores por cancelación
en Matlab se debe usar el comando format long, para que de esta forma,
se muestren más decimales y se puedan apreciar estos errores.

Ejemplo 2.3.3. En la expresión a = √ x2 + ε - x para valores muy grandes


de x y para ε pequeños, hace que el minuendo y el sustraendo sean muy
próximos, el error de cancelación se presenta cuando se realiza la diferencia
100 entre estos y genera que el valor de ε no sea tomado en cuenta. Para probar
esto, tomamos ε = 0.01 y x = 10000000, que al hacer los cálculos en Matlab

Aritmética del computador


nos da como resultado cero.

Ejemplo 2.3.4.
Consideremos las siguientes asignaciones y operaciones en números
racionales, a = 43 , b = a ‒ 1, c = 3b y e = 1 ‒ c. Se puede probar que
e = 0, sin embargo al realizar estas operaciones tan simples en Matlab se tiene
que e = 2.2204 × 10-16 ≠ 0. Este error se ocaciona por las diferencias.

Para evitar los errores de cancelación se pueden hacer los siguientes


procedimientos:

■■ √ a − √ b = a− b
√ a+ √ b

a+ b a− b
■■ sin(a) − sin(b) = 2 cos 2 sin 2

a
■■ log(a) − log(b) = log b

1
■■ f (x + h) − f (x) = f ʹ (x)h + 2 f ʹʹ (x)h2 + · · ·

Se recomienda aplicar las anteriores recomendaciones en los ejemplos


2.3.3 y 2.3.4

2.4. Operaciones con Error de Punto


Flotante
Supongamos que Ì es +, -, ×, ÷ cualquiera de estas operaciones. Si x
y y son dos números de máquina y si x Ì y debe calcularse y almacenarse,
entonces lo más cercano que podemos aproximar a x Ì y mediante una
palabra de máquina sencilla es f l (x Ì y) y almacenando dicho números
se tiene que

f l (x Ì y) = [x Ì y] (1 + δ) |δ| ≤ ε (2.4.1)

Esta ecuación es valida para cualquier computador y e es redondeo


unitario para dicha máquina. En el caso del ejemplo 2.1.1 101
Notas de análisis numérico con MATLAB f l (x) = x (1 + δ) |δ| ≤ 2-24, (2.4.2)

para cualquier número real x dentro del rango de números del


computador, luego

f l (x Ì y) = (x Ì y) (1 + δ) |δ| ≤ 2-24 (2.4.3)

siempre que x y y sean números de máquina. Si x y y no son


necesariamente números de máquina se tiene

f l (f l (x) Ì f l (y)) = (x (1+δ1 ) Ì y (1+δ2 )) (1+δ3 ), (2.4.4)

con |δi| ≤ 2-24 y i = 1, 2, 3.

Ejemplo 2.4.1.
Si x y y son números de máquina en el computador del ejemplo 2.1.1 y
queremos calcular x (y + z)

f l (x (y + z)) = [x f l (y + z)] (1 + δ1) , con |δ1| ≤ 2-24

f l (x (y + z)) = [x (y + z) (1 + δ1)] (1 + δ1) ; con |δ2| ≤ 2-24

f l (x (y + z)) = x (y + z) (1 + δ2 + δ1 + δ2 δ1)

como δ1 y δ2 son del orden de 2-24 su producto es muy pequeño y lo


podemos ignorar

f l (x (y + z)) ≈ x (y + z) (1 + δ1 + δ2 )

ya que δ1 + δ2 ≤ 2-23 tenemos

f l (x (y + z)) = x (y + z) (1 + δ3 ) , con |δ3| ≤ 2-23

Nota 2.4.1.
Si un computador funciona con una base β y utiliza n posiciones en la
mantisa de sus números de punto flotante, entonces f l (x) = x (1 + δ),
con |δ| ≤ ε donde ε = 12 β1-n en caso de redondeo por exceso, y ε = β1-n en
caso de truncamiento. El número ε es el error de redondeo unitario y es una
102 característica del computador, de su sistema operativo y de la manera como
efectúa los cálculos, ε varía según el computador; lo llamamos con frecuencia

Aritmética del computador


el épsilon de la máquina.

A continuación mostramos un algoritmo que podemos utilizar para


encontrar este número.

El código 2.4 permite calcular el épsilon de la máquina ε = 12 β1-n en un


computador de 64 bits.

1 beta=2;eps=1;y=2;i=1;X=[i eps];
2 while y>1
3 i=i+1;
4 eps=eps/beta;
5 y=1+eps;
6 X=[X;vpa([i eps],32)];
7 end
8 X

Código 2.4. Cálculo del épsilon de máquina

Al ejecutar el código se puede evidenciar que se normaliza el cero o


épsilon de la máquina y viene dado por ε = 1.110223024625157 × 10-16.

En la representación normalizada en 64 bits, se tiene que d0 = 1, lo que


deja 53 bits para la mantisa.

x =  ± 1.b1b2 ... b52 × 2n, -1022 ≤ n ≤ 1023 (2.4.5)

El valor más grande sería 1.11 ... 11 × 21023 ≈ 1.79 × 10308 y el más
pequeño sería 2.22 ... × 10-308

En Matlab hay dos expresiones que son importantes a la hora de


trabajar con estas normalizaciones y son In f y NaN.

• In f: Esto aparece cuando el denominador ha alcanzado el épsilon


de la maquina (1/0).

• NaN: Esta expresión representa que no es un número y se


presenta cuando se realizan operaciones de la forma (T-T,
0/0). 103
Notas de análisis numérico con MATLAB Otra forma de encontrar el épsilon es mediante el seudocódigo que
determina el menor número positivo posible de la forma 2-k, de modo que
1.0 + ε ≠ 1.0 en el computador.

Algoritmo 2.4.1.

Inicio

s C1.0

para k = 1 hasta 100 hacer

s C 0.55

s + 1.0
t C

si t ≤ 1.0 entonces

s C 2.0s

salida k-1, s, pare

fin del si

fin

Otro código con nombre epsilon.m es 2.5

1 s=1.0;
2 for k=1:500
3 s=0.5*s;
4 t=s+1;
5 if t<=1.0
6 s=2.0*s
7 break
8 end
9 end
10 fprintf('el epsilon de la maquina es: 12.8e. n',s )
11 fprintf('n se obtiene en los pasos: 12.0f.n',k-1)

Código 2.5. Otro código en Matlab para encontrar épsilon


104
Ejercicio 2.4.1.

Aritmética del computador


Implementar los códigos 2.4 y 2.5 para encontrar el épsilon de la máquina,
modifíquelos para computadores con diferentes longitudes de palabra.

2.5. Propagación del Error


Cuando un error de redondeo ha sido introducido, este se suma a
otros errores y se propaga. Supongamos que queremos calcular el valor
f (x) ∈ ℝ. En el computador x es aproximado con un número racional x
, teniendo un error inicial ε0 = x - x, luego ε1 = f ( x) - f (x) es el error
propagado. En muchos casos, en vez de f se usa una función más simple f1
(a menudo una expansión truncada de f ). La diferencia ε2 = f1 ( x) - f ( x)
es el error de truncación. Luego, las operaciones que hace el computador
son “seudooperaciones”(por el redondeo), por lo que en vez de f1( x) se
obtiene otro valor incorrecto f2( x) . La diferencia ε3 = f2( x) - f1( x) es el
error propagado por los redondeos. El error total sería:

ε = f2( x) - f (x) = ε1 + ε2 + ε3

2.5.1. Análisis del error de propagación


|x− x̃|
El error relativo de una aproximación x a un número x, ρ= |x|
se
puede expresar como:

x = x (1 + ε), |ε| = ρ ≤ eps

Suponemos que las operaciones +, -, ÷, × producen un resultado


de redondeo que es representable en el computador. Suponemos que
x(1 + εx ) y y(1 + εy ) son valores de x y y contaminados con errores
relativos εx y εy.

1. Multiplicación: x.y(1 + εxy ) ≈ x.y(1 + εx + εy )

2. División: xy (1 + ε x ) ≈ xy (1 + εx − εy ), debido a que


y
1
1+ εy = 1 − εy + εy2 − · · · 105
Notas de análisis numérico con MATLAB x y
3. Suma: x̃ + ỹ = ( x + y) 1 + x+ y εx + x+ y εy

  • Si x.y > 0 se tiene que εx+y ≤ |εx| + |εy|

• Si x + y D0, Ocasiona grandes errores en la cancelación!!

4. Resta: La resta se puede expresar como una suma (x - y = x + (-y))

2.6. Procesos inestables y mal


condicionados
Un proceso numérico es inestable cuando pequeños errores que se
producen en algunas de sus etapas se agrandan en etapas posteriores. Un
problema está mal condicionado si pequeños cambios en los datos de
entrada producen grandes cambios en las respuestas. Estos problemas son
casos particulares de una rama de investigación en matemáticas llamada
problemas inversos y problemas mal puestos (ver [10, 3, 12, 11]).

Nota 2.6.1.
Para ciertos tipos de problemas se puede definir un número de condición.
Si el número es grande el problema está mal condicionado.

Para muchos algoritmos, un análisis de error de redondeo se puede


hacer para mostrar que pequeños cambios en los datos de entrada solo
provocan pequeños cambios en el resultado, es decir el algoritmo está
bien condicionado y de paso se puede estimar el efecto de los errores de
redondeo en el resultado final.

Sea x = (x1, ...., xn) los datos de entrada, Sea ϕ continuamente


diferenciable en un conjunto abierto de ℝn que contiene el dato x y que
representa el conjunto de operaciones. Para estudiar como los errores
en x afectan el resultado y = ϕ(x) se usa una expansión (truncada) de
n
∂ϕ
Taylor, ∆y = ∑ ∂ xi (x)∆xi donde los errores individuales están dados por
i= 1
∆xi = x̃i − xi y ∆y es la aproximación de primer orden al error φ ( x̃) − φ (x).
106
Por tanto, la aproximación de primer orden para el error relativo puede

Aritmética del computador


expresarse como:
n n
∆y xi ∂ ϕ ∆xi ∆xi
y
= ∑ ϕ (x) ∂ xi (x) xi = ∑ αi xi
i=1 i=1

Los números αi se llaman números de condición del problema


y = ϕ(x).

1. Si todos |αi | ≤ 1, no se magnifica el error y el cálculo numérico es


estable.

2. Si algún |αi | > 1, podría magnificarse el error, lo que ocasionaría


que el cálculo sea inestable.

Ejemplo 2.6.1.
¿Qué pasa en el caso de evaluar una función en x si se altera x en un
pequeño valor h?

El error absoluto es por el teorema del valor medio

f (x + h) - f (x) = f ′ (ξ) h ≈ h f ′ (x)

con x ≤ ξ ≤ x + h. Si f ′(x) no es muy grande no se altera mucho.

El error relativo es

f (x + h) − f (x) h f ʹ (x) x f ʹ (x) h


≈ =
f (x) f (x) f (x) x
número de condición

 Ejemplo 2.6.2.
¿Cuál es el número de condición para la evaluación de la función
arc sen(x)? Veamos: sea f (x) = sen-1x entonces

x f ʹ (x) x
= (2.6.1)
f (x) √ 1 − x sen− 1 x
2

107
Notas de análisis numérico con MATLAB π
para x proximo a 1, sen − 1 x ≈ y el número de condición se vuelve
2
infinito conforme x se acerque a uno.

Luego pequeños cambios en x producen grandes errores relativos en


sen-1x cerca de uno, luego este problema es mal condicionado.

Ejemplo 2.6.3
(Cuando se localiza un cero de una función). Sean f y g ∈ C 2 en una
vecindad de r, donde r es un cero de f (esto es f (r) = 0), suponemos que
f ′ (r) ≠ 0. Perturbando f (osea agregando un error pequeño). definimos

F = f + εg , con ε D0 (2.6.2)

Encontraremos un cero de F definida por (2.6.2). Supongamos


que un cero es r + h (osea F (r + h) = 0). Encontremos h, como
F (r + h) = 0 entonces por (2.6.2) tenemos

f (r + h) + εg (r + h) = 0 (2.6.3)

y como f , g ∈ C 2 utilizamos el teorema de Taylor 1.2.14 para expresar


f (r + h), y g(r+h) en (2.6.3) tenemos

  1 2 1
f (r) + h f ʹ (r) + h f ʹʹ (ξ ) + ε g (r) + hg ʹ (r) + h2 gʹʹ (h) =
2 2
(2.6.4)

Como suponemos que h es bien pequeño, entonces h2 será mucho más


pequeño y por lo tanto, lo podemos descartar y utilizando el hecho que
f (r) = 0, y tenemos de (2.6.4) despejando h

g (r) g (r)
h≈− ε ≈− ε
f ʹ (r) + ε g ʹ (r) f ʹ (r)

porque ε D0.

Esto es g (r)
108 h≈− ε (2.6.5)
f ʹ (r)
Sea

Aritmética del computador


20
f (x) = ∏ (x − k) = ( x − 1) ( x − 2) · · ·(x − 20) ;
k=1

y g(x) = x20 (este ejemplo es debido a Wilkinson ver [28]).

Las raices de f son 1, 2, ..., 20. Ahora veamos como se altera r = 20


cuando f se perturba a f + εg. utilizamos (2.6.5)

g (20) 2020
h≈− ε = −ε ≈ − ε × 109 (2.6.6)
f ʹ (20) 19!

si ε = 0:001 se tiene

h ≈ − (0.001) × 109 = − 1000000

y la nueva raiz es R = 20‒1000000 = ‒999980. De donde el problema


es mal condicionado.

2.7. Ejercicios
1. Calcular todos los números reales que se pueden construir
tomando 5 bits de la siguiente forma: 1 bit para el signo, 2 bits
para la mantisa y dos bits para el exponente n, tomando como
rango de n = ‒1, 0, 1, 2. Representa dichos números en una recta.

2. Dada una aritmética de precisión finita cualquiera, calcular la


distancia que hay entre el número y su inmediato superior (es
decir el número que va después de 1), y la distancia entre el
número 1 y su inmediato inferior.

3. Se considera una aritmética de 16 bits donde se dedican 1 bit


al signo, 9 bits a la mantisa y 6 bits al exponente (nmin = ‒30,
nmax = 31). Escribir si es posible, los siguientes números en esta
aritmética:
109
Notas de análisis numérico con MATLAB i. 2, y los números más cercanos a 2
ii. el cero, el infinito y NaN.
1
iii. .
9
1 1
iv. 2( − )
2 210
4. Determine el equivalente decimal exacto de 2‒24.

5. Dados los puntos (x0 , y0 ) y (x1 , y1) en una línea recta, encuentre
la intersección de la línea con el eje x. Hay dos fórmulas posibles:

x0 y1 − x1 y0 (x1 − x0 )y0
x= y x=
y1 − y0 y1 − y0

6.
i. Demuestre que ambas fórmulas son algebraicamente
correctas.
ii. Usando los datos (x0 , y0 ) = (1.31, 3.24) y (x1 , y1) =
(1.93, 4.76) y aritmética de redondeo a tres dígitos, calcule
la intersección de ambas maneras. ¿Cuál método es mejor y
por qué?

7. Suponga que f l(y) es una aproximación de y con redondeo k


dígitos. Demuestre que
y − f l(y)
z z ≤ 0.5 × 10− k+ 1 .
y

8. Construir una función en Matlab que aproxime un número x 2


ℂ con n cifras decimales en su parte real y compleja.

9. Sea f (x) = sin(x), Calcular la aproximación de f '(x) = cos(x) en


x = 0 bajo los siguientes esquemas:

f (x+ h)− f (x)


■■ f ʹ(x) ≈ h
f (x)− f (x− h)
■■ f ʹ(x) ≈ h
f (x+ h)− f (x− h)
110 ■■ f ʹ(x) ≈ 2h
¿Cuál de los tres esquemas antes especificados, crees que aproxima

Aritmética del computador


mejor la derivada de la función en el punto?. (Sugerencia: Realice
comparaciones con h ∈ 1 × 10− 1 , 1 × 10− 2 , · · ·, 1 × 10− 10 ,
emplea una escala logaritmica sobre los ejes coordenados.)

10. Representar en forma binaria el número π.

11. Representar en forma binaria el número 3735.45689.

12. Sean x = (121)3 y y = (10111.101)2 Calcular x‒y en base 4.

13. Comprobar que no se cumple la propiedad asociativa respecto a


la suma en aritmética de precisión finita.

14. Analizar geométricamente el condicionamiento respecto al


parámetro 0 < α < 1, de la solución del sistema de ecuaciones
lineales dado por:
α x + y = 0,
x + α y = 1.
15. Determinar el condicionamiento de las siguientes expresiones
respecto a perturbaciones en alguno de los datos (x1, ..., xn)

■■ S = ∑ nk= 1 xk
■■ S = ∑ nk= 1 xk2
■■ S= n
∏ nk= 1 xk
∑ nk= 1 xk
■■ S= n

16. Sea f (x) = √ 1 − x2 con x ∈ I = ( − 1, 1), calcular:

■■ El número de condición de la función.

■■ x 2 I tal que el número de condición sea igual a 2.

17. Considere el polinomio P(x) = (x+3)8 (x-2)4 (x-3)5, consiga


la expansión del polinomio Pe(x) y utilice ambas expresiones 111
Notas de análisis numérico con MATLAB para evaluarlos en x=0:999. ¿Qué conclusiones puede dar al
respecto?.

18. Suponga que la ecuación ax2 + bx + c = 0 tiene dos soluciones


distintas, qué estrategia se puede emplear para evitar errores de
cancelación?

19. Muestre que


N N N N
2k− 1 2k 1
∑ (− 1) k k+k 1 = ∑ 2k + ∑ 2k+ 1 = ∑ 2k(2k+ 1)
k=1 k=1 k=1 k=1
y calcule la suma para valores grandes de N empleando las tres
expresiones anteriores. ¿Qué conclusiones puede dar al respecto?
N
1
20. Considere la suma ∑ k para valores grandes de N, demuestre
k=1
que la serie armónica es divergente.

21. Considere la función f (x) = x‒sin(x). Obtenga un polinomio


de Taylor de orden 7 alrededor de cero para esta función. Evalué
las dos expresiones para valores pequeños de x. Cúal de los dos
resultados es más exacto?

22. Resuelva el sistema redondeando siempre con 3 cifras decimales


y compare la respuesta con la solución exacta.

0.78x + 0.563y = 0.217,


0.457x + 0.33y = 0.127.

112
Fuente: Freepik.es

Capítulo 3

SOLUCIÓN DE ECUACIONES
NO LINEALES

113
E
n algunas ocaciones nos podemos encontrar con ejercicios como
por ejemplo, encontrar la solución de x‒tan x = 0 (Difracción
de la luz), o encontrar la solución de x‒a sen x = b (Ecuación
de Kepler, orbitas planetarias), para profundizar estos problemas podemos
ver Sears, Zemansky, Youn [25]. Estos problemas se pueden generalizar asi:

Dada una función f : ℝ D ℝ encontrar los valores de x para los cuales f


(x) = 0. Para solucionar el problema anterior estudiaremos unos métodos
de uso común.

3.1. Método de Bisección


Recordemos que el teorema de valor intermedio nos dice que si
f es una función continua sobre el intervalo [a,b] y si f (a) < y < f (b)
entonces f (x) = y para algún x 2 (a,b). Como consecuencia se tiene que si
f (a) f (b) < 0, entonces f debe tener un cero en (a,b). Luego este método
consiste en:
1
1. Si f (a) f (b) < 0, entonces calculamos c = (a + b) y
2
averiguamos si f (a) f (c) < 0, entonces f tiene un cero en [a,c].

2. A continuación rebautizamos a c como b y comenzamos de


nuevo con el nuevo intervalo [a,b], de longitud es igual a la
mitad del intervalo inicial.

3. Pero si f(a) f(c) > 0 entonces f(c) f(b) < 0 y en este caso
rebautizamos a c como a. El proceso puede repetirse. 115
Notas de análisis numérico con MATLAB 4. Si f (a) f (c) = 0 entonces f (c) = 0 y con ello se encuentra
un cero. Pero por errores de redondeo es poco factible que en el
computador f (c) sea igual a cero; Por eso este no será el criterio
para terminar el algoritmo. Se debe dar una tolerancia razonable
para terminar, tal como |f (c)| < 10‒5.

Figura 3.1. Cuando f (a) f (c) < 0 Figura 3.2. Cuando f (c) f (b) < 0

3.1.1. Interpretación Gráfica

La figura 3.1 nos indica el caso de f (a) f (c) < 0 y la figura 3.2 nos indica
el caso de f (c) f (b) < 0, en el primer caso el método elige el intervalo
izquierdo y en el segundo caso el intervalo derecho.

Algoritmo 3.1.1.
Datos de entrada: a, b, w, δ, ε, M
Inicio:
u C f (a)
v C f (b)
e C b‒a
salida inicial: a, b, u, v
esquema:
si signo(u)=signo(v) entonces PARE
116 de lo contrario
para k desde 1 hasta M Hacer

Solución de ecuaciones no lineales


e
e←
2
c ← a+ e
w ← f (c)

Salida k, c, w, e
Si |e| < δ o |w| < ε entonces
bCc
vCw
de lo contrario
aCc
uCw
fin del algoritmo.

Un código a partir del algoritmo 3.1.1 lo llamamos bisec.m en MATLAB


y es dado por 3.1

1 % Método de bisección para encontrar


2
3 % la raiz de una ecuación y mostrar su gráfica.
4
5 % Hay que crear aparte la función fun.m
6
7 function[w,k] = bisec(fun,a,b,M,del,exi);
8
9 u = feval(fun,a);
10
11 v = feval(fun,b);
12
13 e = b - b;
14
15 y = feval(fun,x);
16
17 plot(x,y,x,0*x);
18
19 if sign(u) == sign(v), error('Porque f(a)f(b) > 0'),
break, end 117
Notas de análisis numérico con MATLAB 20
21 for k = 1:M
22
23 e = e/2;
24
25 c = a+e;
26
27 w = feval (fun,c);
28
29 if (abs(e) < del | abs(w) < exi),
30 return, end
31
32 if sign(w) ˜= sign(u)
33
34 b = c;
35
36 v = w;
37
38 else
39
40 a = c;
41
42 u = w;
43
44 end
45
46 end
47
48 disp(' ')
49
50 fprintf('Cero de la funci ón: \%12.4e.\n',c)
51
52 disp(' \ ')
53
54 fprintf('Número de pasos: \%8.0f.\TEXTsymbol{\backslash}
n',k)
55
56 disp(' ')
57
58 fprintf('f(c)=\%12.4e.\n'w)

118 Código 3.1. Programa de Bisección


Ejemplo 3.1.1.

Solución de ecuaciones no lineales


Use el método de la bisección para encontrar una raiz cercana a cero de
la ecuación ex = sen x.

Miremos inicialmente las grafica de ex, sen x. y luego de f (x) = ex ‒sen


x. para ver el intervalo.(En Matlab)

Recuerde algunos comandos para graficar en Matlab:plot, fplot, ezplot.


(ver la figura 3.3)

1 % archivo para la funci\'{o}n fun.m


2
3 function y=eqn1(x)
4
5 y = exp(x) - sin(x);

Código 3.2. Función para utilizar con el código 3.1

Y lo corremos en Matlab con el código 3.1 creado anteriormente.

Figura 3.3. Gráficas del ejemplo 3.1.1

119
Notas de análisis numérico con MATLAB 1 >> [w,k] = bisec_('eqn\_1',-4,-2,500,10\symbol{94}
2 (-7),10\symbol{94}(-5))
3
4 Cero de f: -3.1831e+000.
5
6 No de pasos: 17.
7
8 f(c) = 3.4543e-006.
9
10 w =
11
12 3.4543e-006
13
14 k =
15
16 17

Código 3.3. Utilización del código bisec.m para el ejemplo 3.1.1

Ejercicio 3.1.1.
Realice la gráfica de la función del ejemplo 3.1 utilizando los comandos
de Matlab plot, fplot y ezplot y encuentre gráficamente la raíz utilizando el
comando ginput, compare esta raiz con la encontrada implementando el
programa propuesto para el método de bisección. Repita este proceso con
otras tres raíces.

Nota 3.1.1.
Se pueden presentar las siguientes dos anormalidades en este método:
En la figura 3.4, | f (c)| < ε pero |b‒a| > δ, y en la figura 3.5, |b‒a| < δ pero
|f (c)| > ε. Para evitar esto, el algoritmo es controlado por tres parámetros
M, δ, ε.

120
Solución de ecuaciones no lineales
Figura 3.4. Primer caso fracaso de Figura 3.5. Segundo caso de
método fracaso

3.1.2. Análisis del Error

El siguiente teorema nos da información de la forma como se comporta


el error en el método de bisección.

Teorema 3.1.1.

Sea f la función continua a la cual le aplicamos el método de bisección para


encontrar un cero r. Si [a0 ,b0 ] , [a1, b1 ],...[an ,bn ],... denotan los intervalos
en el método de bisección, entonces los límites lı́m an y el lı́m bnexisten, son
n ←
∞ n ←

iguales y representan un cero de f . Si r = lı́m cn y cn = 1
n ←
∞ 2 (an + bn ) , entonces
|r − cn | ≤ 2− (n+ 1) (b0 − a0 )
Demostración. Sea [a0 ,b0 ] , [a1, b1 ],... y así sucesivamente los intervalos
que surgen en el proceso se tiene:
a0 ≤ a1 ≤ a2 ≤ · · · ≤ b0

b0 ≥ b1 ≥ b2 ≥ · · · ≥ a0
y podemos verificar

1
bn+ 1 − an+ 1 =
2
(bn − an ) ( n ≥ 0) . (3.1.1) 121
Notas de análisis numérico con MATLAB La sucesión {an} converge porque es creciente y es acotada
superiormente; utilizando (3.1.1) repetidamente encontramos que

bn ‒ an = 2‒n (b0‒a0)

1
bn − an = (bn− 1 − an− 1 )
2
pues
1 1 1
bn+ 1 − an+ 1 = (bn − an ) = (bn− 1 − an− 1 ) , (3.1.2)
2 2 2

calculando límite cuando n tiende a infinito en la igualdad (107),


tenemos
lı́m bn − lı́m an = lı́m 2− n (b0 − a0 ) = 0
n→∞ n→∞ n→∞

de donde

lı́m an = lı́m bn .
n→∞ n→∞ (3.1.3)

Por otro lado, si escribimos r = lı́m an = lı́m bn . El límite en la


n→∞ n→∞
desigualdad que se aplica para método de bisección en el paso n-ésimo
0 ≥ (an) f (bn), obtenemos de la continuidad de f que

0 ≥ [ f (r)]2
y por lo tanto
f (r) = 0

de donde r = lı́m an = lı́m bn . son ceros de f. Supongamos que en


n→∞ n→∞
cierta etapa del proceso se ha definido el intervalo [an , bn ]. Si se detiene
el proceso en este momento, el cero se encontrará ciertamente en este
intervalo. Luego
(an + bn )
cn =
2
y el error se acota así:

1
|r − cn | ≤ |bn − an | ≤ 2− (n+ 1) (b0 − a0 ) . (3.1.4)
122 2
Ejemplo 3.1.2.

Solución de ecuaciones no lineales


Suponga que el método de bisección se inicia con el intervalo [50, 63].
Cuántos pasos deben darse para calcular una raíz con una precisión relativa
de 10‒12.

Veamos: Utilizando (3.1.4)


Como r ≥ 50 entonces

|r − cn |
≤ 10− 12 ,
50
del teorema 3.1.1
13
2− (n+ 1) ≤ 10− 12 ,
  50
y
13
1012 ≤ 2n+ 1 , (3.1.5)
50

aplicando ln a la desigualdad (3.1.5) y despejando

13
12 ln (10) + ln
50
≤ n + 1, (3.1.6)
ln (2)

de donde
n ≥ 37.

Se necesitan aproximadamente 37 pasos del método de bisección para


encontrar una raíz con una precisión de 10‒12.

3.2. Método de Newton Raphson


Sea r un cero de f y sea x una aproximación a r, donde r = x+h. Si f es
de clase C 2 en una vecindad de r, por el teorema de Taylor sabemos que

0 = f (r) = f (x+h) = f (x)‒h f (x)+O (h2) (3.2.1)

donde h = r‒x. si h es pequeña (x ≈ r) ignoramos O (h2) y tenemos


123
Notas de análisis numérico con MATLAB f (x)
h= − (3.2.2)
f ʹ (x)
f (x)
Por lo tanto, si x es próximo a r, entonces x − debería estar aún
f ʹ (x)
más proximo a r. El método de Newton comienza con una estimación x0
de r, a partir el se define inductivamente una sucesión de aproximaciones
f (xn )
xn+ 1 = xn − (n ≥ 0) (3.2.3)
f ʹ (xn )

Algoritmo 3.2.1.
Entrada x0, µ, δ, ε
Inicio
v C f (x0 )
salida x0,v
Si |v| < ε entonces PARE
hacer para k desde 1 hasta.µ
x1 C f (x1 )
Salida k, x, v
Si |x1‒x0| < δ o |v| < ε entonces PARE
x0 C x1
fin del algoritmo.

Nota 3.2.1.
Cualquier programa que se base en algoritmo 3.2.1 requiere los
subprogramas para calcular f (x) y f ' (x)

Ejemplo 3.2.1.
Encontremos el cero negativo de la función

ex ‒ 1.5 ‒ tan‒1 x.

Utilizamos el código 3.4 con nombre newton.m en Matlab para el


ejemplo 3.2.1.
124
Solución de ecuaciones no lineales
1 function[resp,iter]=newton(func,dfunc,x,del,exi)
2
3 x0=x;
4
5 v=feval(func,x0);
6
7 if abs(v)\<exi, break, end
8
9 for iter=1:1000
10
11 x1=x0-v/feval(dfun,x0);
12
13 v=feval(func,x1);
14
15 if abs(x1-x0) < del | abs(v) <exi, break, end
16
17 x0=x1;
18
19 end
20
21
22
23 Raiz = x1
24
25 disp(' ')
26
27 Iteraciones=iter

Código 3.4. Método de Newton Raphson

Con los subprogramas deqn_1.m en 3.5 y eqn_1.m en 3.6

1 % Subprograma para la derivada de f


2
3 function y=deqn_1(x)
4
5 y=exp(x)-1./1+x.\symbol{94}2);

Código 3.5. Derivada de f del ejemplo 3.2.1

125
Notas de análisis numérico con MATLAB 1 function y=eqn_1(x)
2
3 y=exp(x)-1.5-atan(x);

Código 3.6. Función del ejemplo 3.2.1

Por último tenemos del código 3.4

1 >> newton('eqn_1','deqn_1',-7,10ˆ(-5),10ˆ(-5))

Código 3.7. Función del ejemplo 3.2.1

3.2.1. Interpretación Gráfica

El método de Newtón consiste en la linealización de la función


1
f (x) = f (c) + f ʹ (c) ( x − c) + f ʹʹ (c) ( x − c) 2 + · · ·, (3.2.4)
2!

la linealización (en c) produce la función lineal

l (x) = f (c)+ f ' (c) (x‒c), (3.2.5)

La función l definidas por 3.2.5 es una buena aproximación de f en una


vecindad de c y l (c) = f (c); l' (x) = f ' (c) : Esto es, la función lineal l tiene
el mismo valor y la misma pendiente que f en el punto c, por lo tanto, lo
que hacemos en el método de Newton es construir la tangente a la gráfica
de f en un punto cercano a r y observar en qué lugar intercepta esta línea
al eje x (ver la figura 3.6).

Figura 3.6. Gráfica del Método de Figura 3.7. Fracaso del Método de
126 Newton Newton
3.2.2. Fracaso del Método de Newton

Solución de ecuaciones no lineales


Veamos que el método de Newton pude iterar para siempre y nunca
parar. La iteración (3.2.3) crea ciclos de un lado a otro al rededor de un
punto r (ver figura 3.7) si

xn+1 ‒ r = ‒(xn‒r), (3.2.6)

esto sucede si y aplicamos (3.2.3).

f (xn )
xn − r − = − (xn − r),
f ʹ (xn ) (3.2.7)

podemos ver que la ecuación (3.2.7) es una ecuación diferencial


ordinaria de primer orden. Cambiando la variable xn por x nuestra ecuación
queda así
f (x)
x− r− = − (x − r), (3.2.8)
f ʹ (x)

la solución de (3.2.8) es

| f | = √ |x − rt|
(3.2.9)
que es equivalente a

f = sign(x − r) √ |x − r|
(3.2.10)

El cero de esta función es x* = r. La convergencia del método falla


porque f ' (x) no es acotada cuando xDa. Por lo tanto, x0 debe estar cerca
de r, o f tener una forma especial como se verá más adelante.

3.2.3. Análisis de Errores

Sea en el error en el método de Newton, donde

en = xn‒r, (3.2.11)
entonces
r = xn‒en , (3.2.12) 127
Notas de análisis numérico con MATLAB (no tomamos en cuenta errores de redondeo).

Supongamos que f '' es continua y que r es un cero simple de f (esto es


f (r) = 0 ≠ f ' (r)).

Tenemos
f (xn ) f (xn )
en+ 1 = xn+ 1 − r = xn − − r = en − , (3.2.13)
f ʹ (xn ) f ʹ (xn )
y simplificando

en f ʹ (x) − f (xn )
en+ 1 = .
f ʹ (xn ) (3.2.14)

Por otra parte, por el teorema de Taylor sabemos que


1 2
0 = f (r) = f (xn − en ) = f (xn ) − en f ʹ (xn ) + e f ʹʹ (ξ n ) , (3.2.15)
2 n

y de aquí tenemos
1 2
en f ʹ (x) − f (xn ) = e f ʹʹ (ξ n ) (3.2.16)
2 n

Remplazando (3.2.16) en el numerador de (3.2.14)


1 f ʹʹ (ξ n ) 2 1 f ʹʹ (c) 2
en+ 1 = e ≈ e = ce2n , (3.2.17)
2 f ʹ (xn ) n 2 f ʹ (c) n

y de aquí llegamos a que

en+ 1 ≈ ce2n (3.2.18)

la ecuación (3.2.18) nos dice que la convergencia del método de


Newton es cuadrática, esto explica la aparente duplicación de la presición
que se obtiene con cada iteración del método de Newtón. Los resultados
anteriores se pueden utilizar para demostrar el siguiente teorema.

Teorema 3.2.1.
Sea f '' continua y sea r un cero simple de f . Existe una vecindad de r y
una constante c tales que si el método de Newton se inicia en esa vecindad,
128 los puntos sucesivos se hacen cada vez más cercanos a r y satisfacen
|xn+ 1 − r| ≤ c (xn − r) 2 (n ≥ 0) .

Solución de ecuaciones no lineales


(3.2.19)

Demostración. La segunda parte esta demostrada antes de enunciar el


teorema, sólo falta obtener la convergencia del método útilizamos (3.2.18)
1 f ʹʹ (ξ n )
si en es pequeño y si no es muy grande entonces en+1 será más
2 f ʹ (xn )
pequeño que en. Definimos c (δ) como
1
máx|x− r|< δ | f ʹʹ (x)|
c(δ ) = 2 con δ > 0,
mı́n|x− r|< δ | f ʹ (x)|
(3.2.20)

el cual existe porque, se supone que f 2 C 2 (ℝ) en especial para


|x‒r| < δ. También tenemos que δc (δ) < 1 lo cual es cierto porque cuando
δ D0,

1 | f ʹʹ (r)| constante, (3.2.21)


c (δ ) → =
2 | f ʹ (r)|

entonces δc (δ)D0. Haciendo ρ = δc (δ), y suponiendo que


comenzamos la iteración de Newton en un punto x0 que satisface
|x0 − r| ≤ δ, esto es |e0 | ≤ δ y |ξ 0 − r| ≤ δ , por (3.2.19) tenemos
1 f ʹʹ (ξ 0 )
≤ c (δ ) , luego c (δ) es cota de la ecuación (3.2.17) y por lo tanto
2 f ʹ (x0 )

1 f ʹʹ (ξ n ) 2 1 máx | f ʹʹ (x)| 2
en+ 1 = e ≤ e = c (δ ) e2n .
2 f ʹ (xn ) n 2 mı́n | f ʹ (x) | n

También tenemos que |x1 − r| = |e1 | ≤ e20 c (δ ) = |e| | e0 | c (δ ) ≤ |e0 | δ c (δ ) = |e0 | ρ < |e0 | ≤ δ
(δ ) ≤ |e0 | δ c (δ ) = |e0 | ρ < |e0 | ≤ δ . Esto muestra que x1 también está a menos de δ unidades
de r. Por inducción matemática tenemos

|en | ≤ ρ n |e0 | .
como 0 < ρ < 1, tenemos

lı́m ρ n = 0 entonces lı́m en = 0. (3.2.23)


n→∞ n→∞

y de aqui concluimos la convergencia del método. 129


Notas de análisis numérico con MATLAB Teorema 3.2.2.
Si f 2 C 2 (ℝ), además es creciente, convexa y tiene un cero, entonces el
cero es único y la iteración de Newton convergerá a él a partir de cualquier
punto inicial.

Demostración. Utilizando la ecuación (3.2.17), como f ' es convexa


entonces f '' (x) > 0 para todo x, y como f es creciente entonces
f '(x) > 0 para todo x en ℝ, de donde en+1 > 0 y nuevamente de la ecuación
(3.2.17), en > 0 luego de (3.2.12) xn > r. De la ecuación (3.2.13) se tiene que
xn > xn+1 y como f es creciente f (xn ) > f (r) = 0. se tiene de la ecuación
(3.2.13) que en > en+1. Así las sucesiones {en } y {xn } son decrecientes y
están acotadas inferiormente (por cero y r respectivamente); por lo tanto,
los límites e* = lı́m en y x* = lı́m xn existen. Y por la ecuación (3.2.13)
n→∞ n→∞
tenemos que
f (x*)
e* = e* − , (3.2.24)
f ʹ (x* )

de donde f (x*) = 0 y por lo tanto x* = r

Ejemplo 3.2.2.
Encontremos un método eficiente para calcular raíces cuadradas basado
en el método de Newton. Veamos:

Sea R > 0 y α = √ R luego α es una raiz de la ecuación x2 ‒ R = 0,


aplicando el método de Newton a f (x) = x2‒R tenemos:

f (xn )
xn+ 1 = xn −
f ʹ (xn )

xn2 − R
= xn −
2xn

1 R
= xn − xn +
2 2xn

de donde
130
1 1R 1 R

Solución de ecuaciones no lineales


xn+ 1 = xn + = xn + .
2 2 xn 2 xn  

El último resultado se debe a Herón 100 a.C.

Ejercicio 3.2.1.
Graficar esta función y realizar el archivo para correr en Matlab,
encuentre de forma gráfica y compare con el programa elaborado por usted
para diferentes raíces cuadradas.

Nota 3.2.2.
El método de Newton también es utilizado para el caso de raíces múltiples
(ver Kincaid [13])

3.3. Método de la Secante


Una dificultad que tiene el método de Newton es el cálculo de su
derivada cuando no tenemos datos continuos, el método de la secante
reemplaza f '(x) por un cociente de diferencias (o la pendiente de la recta
secante que pasa por los puntos xn‒1, xn )

f (xn ) − f (xn− 1 )
f ʹ (xn ) ≈ , (3.3.1)
xn − xn− 1

reemplazando la aproximación (3.3.1) en la iteración (3.2.3) tenemos la


nueva iteración para n ≥ 1,
xn − xn− 1
xn+ 1 = xn − f (xn ) . (3.3.2)
f (xn ) − f (xn− 1 )

Para iniciar el método se deben dar los puntos xn y xn‒1 y la evaluación


de f en estos puntos pero después cada xn+1 requiere solo una nueva
evaluación de f .

3.3.1. Interpretación Gráfica


Es similar al de Newton pero la linea tangente se cambia por una
secante (ver la figura 3.8). 131
Notas de análisis numérico con MATLAB

Figura 3.8. Método de la Secante

Con el siguiente algoritmo encontramos los ceros de funciones, a partir


del método de la secante.

Algoritmo 3.3.1.
entrada a, b, µ, δ, ε
Inicio
u C f (a)
v C f (b)
Para k = 2, 3, ..., µ Hacer
Si |u| < |v| hacer los cambios
aGb
uGv
continuar con
s C(b‒a) / (v‒u)
aCb
uCv
b C b ‒ vs
v C f (b)
salida k, b, v
Si |v| < ε o |b ‒ a| < δ PARE
132 fin del algoritmo
Nota 3.3.1.

Solución de ecuaciones no lineales


El seudocódigo garantiza que | f (x)| es no creciente.

Ejercicio 3.3.1.
Elaborar el programa en Matlab, verificarlo con los ejemplos de los
métodos anteriores y f (x) = x3 ‒ sinhx + 4x2 + 6x + 9. Muestre los primeros
10 datos.

3.3.2. Análisis de Errores y Orden de Convergencia

Analicemos el comportamiento del error del método de la secante.


en = xn − r ←
en+ 1 = xn+ 1 − r

xn − xn− 1
en+ 1 = xn − f (xn ) −r
f (xn ) − f (xn− 1 )

xn f (xn ) − xn f (xn− 1 ) − f (xn ) xn + xn− 1 f (xn ) − r f (xn ) + r f (xn− 1 )


en+ 1 =
f (xn ) − f (xn− 1 )

f (xn− 1 ) [− xn + r] + f (xn ) [xn− 1 − r]


en+ 1 =
f (xn ) − f (xn− 1 )
f (xn ) en− 1 − f (xn− 1 ) en
en+ 1 =
f (xn ) − f (xn− 1 )

xn − xn− 1 f (xn ) / en − f (xn− 1 ) / en− 1


en+ 1 = en en− 1 ,
f (xn ) − f (xn− 1 ) xn − xn− 1
(3.3.3)

Este último paso factorizando enen‒1, y multiplicando y dividiendo por


xn ‒xn‒1. Ahora Por el teorema de Taylor.

e2n f ʹʹ (r)
f (xn ) = f (r + en ) = f (r) + en f ʹ (r) + + O e3n ,
2
Dado que f (r) = 0

e2n f ʹʹ (r)
f (xn ) = en f ʹ (r) + + O e3n ,
2 133
Notas de análisis numérico con MATLAB dividiendo por en.

f (xn ) en f ʹʹ (r)
= f ʹ (r) + + O e2n ,
en 2 (3.3.4)

cambiando el indice por n‒1 se obtiene:

f (xn− 1 ) en− 1 f ʹʹ (r)


= f ʹ (r) + + O e2n− 1 ,
en− 1 2 (3.3.5)

restando (3.3.4) y (3.3.5)

f (xn ) f (xn− 1 )
− = 1/ 2 f ʹʹ (r) ( en − en− 1 ) + O e2n− 1 ,
en en− 1

Como: xn ‒ xn‒1 = en ‒ en‒1 resulta que:

f (xn ) / en − f (xn− 1 ) / en− 1 ≈ 1/ 2 f ʹʹ (r) ( xn − xn− 1 ) ,


y

f (xn ) / en − f (xn− 1 ) / en− 1


= 1/ 2 f ʹʹ (r) .
xn − xn− 1

La primera expresión entre paréntesis en (3.3.3) se pude escribir como:

xn − xn− 1 1

f (xn ) − f (xn− 1 ) f ʹ (r)
luego

f ʹʹ (r)
en+ 1 ≈ 1/ 2 en en− 1 → en+ 1 ≈ Cen en− 1
f ʹ (r) (3.3.6)

Para encontrar el orden de convergencia partimos de suponer que

|en+ 1 | ~ A |en | α

|en+ 1 |
Esto significa que → 1. Conforme n → ∞ e implica una
A |en | α
134 convergencia de orden α. De igual forma
1/ α

Solución de ecuaciones no lineales


|en | ~ A |en− 1 | α y |en− 1 | ~ A− 1 |en |
(3.3.7)

Sustituyendo en (3.3.7) en (3.3.6) tenemos

A |en | α ~ C |en | A− 1/ α |en | 1/ α ⇒ AC −1 ~ |en | A− 1/ α e1/ α e−n α ,

A1+ 1/ α C −1 ~ |en | 1− α + 1/ α ,

ln A1+ 1/ α C −1 ~ (1 − α + 1/ α ) ln |en | ,

ln A1+ 1/ α C −1
~ 1 − α + 1/ α . Como en → 0 ⇒ ln |en | → ∞
ln |en |

y A1+ 1/ α C −1 es una constante ≠ 0, haciendo K = A1+ 1/ α C −1 , se


tiene:

ln K
lı́m ~ lı́m (1 − α + 1/ α ) ,
n→∞ ln |en | n→∞

0 ~ 1 − α + 1/ α → 1 − α + 1/ α = 0,

solucionando la ecuación
α − α2+ 1= 0 ⇔ α 2 − α − 1 = 0,

1± √ 5 1± √ 5
α = y tomamos α = , porque α es positiva, luego
2 2

1± √ 5
α = ≈ 1.62
2
luego la razón de convergencia del método de la secante es superlineal
(es decir, mejor que lineal). Encontremos A como

A1+ 1/ α C −1 ~ |en | 1− α + 1/ α = 1 y 1 − α + 1/ α = 0
entonces 135
Notas de análisis numérico con MATLAB 1 + 1/ α = α y 1/ α = α − 1

1
Obtenemos ,
A1+ 1/ α = C, luego A = C 1 + 1/ α = C1/ α = C α − 1 = C 0.62

0.62
f ʹʹ (r)
A= .  (3.3.8)
2 f ʹ (r)

Con dicho valor para A el método de la secante nos dice que:

|en+ 1 | ≈ A |en | ( 1+ √ 5) / 2 .
(3.3.9)

Nota 3.3.2.
1. La rapidez de convergencia no es tan buena como el método de
Newton pues 1.62 < 2, pero mejor que el método de bisección

2. Cada paso del método de la secante requiere solo una nueva


evaluación de función y el método de Newton necesita dos
evaluaciones la de f y f '.

3. Un par de pasos en el método de la secante es comparable a un


paso en el método de Newton.

4. Para dos pasos en el método de la secante tenemos:

|en+ 2 | ~ A |en+ 1 | α ~ A1+ α |en | α = A1+ α |en | ( 3+ √ 5) / 2 ,


2


Se necesita más trabajo por iteración.

Nota 3.3.3.
En resumen tenemos:

Método: El método de Bisección es cerrado porque requiere de dos


puntos iniciales que encierren la raíz; en caso contrario, son abiertos como los
métodos de Newton y Secante.

Riesgos: En el método de Bisección es que no se detecte el cambio de signo


entre los valores iniciales. En Newton-Raphson, el riesgo es que se presenten
puntos de inflexión en la búsqueda de la raíz. En el caso del método de la
136 Secante, este falla si la pendiente es extremista en sus dimensiones.
Ventajas: Bisección: solo requiere dos valores iniciales. Newton: es de

Solución de ecuaciones no lineales


rápida convergencia. Secante: no pide derivada.

Desventajas: Bisección: no encuentra raíces cuando no hay cambios de


signo y su convergencia es lenta. Newton: necesita la derivada de la función, el
punto inicial debe estar cerca de la raíz, a menos que la función sea convexa.
Secante: la poca rapidez de convergencia.

Para más ventajas y desventajas de los tres métodos ver los libros [13,
4, 16, 26]

3.4. Ejercicios
1. Utilice el algoritmo de la bisección con una exactitud de 10‒2
para x5 ‒ 3x4 + 2x + 4 = 0 en los intervalos [‒2,0], [1,2] y [0,2].

2. Utilice el algoritmo de la bisección con una exactitud de 10‒2


para x = tan x en el intervalo [4, 4.5].

3
3. Utilizar una aproximación de √ 25 correcta a 10‒4, utilizando el
algoritmo de bisección.

4. Aproxime con 10‒4 de precisión las raíces de las siguientes


ecuaciones en los intervalos dados utilizando el método de
Newton:

i. x3 − 3x2 + 5 = 0 en [− 2, − 1],
ii. x − 2 cos x = 0 en [0, π / 2],
iii. x3 + 3x2 − 1 = 0 en [− 4, 0],
iv. x − 0.8 − 0.2 sen x = 0 en [0, π / 2],
v. x3 − x − 1 = 0 en [1, 2].

5. Repita el ejercicio 4 utilizando el método de la secante.

6. Resolver 4cosx = ex con una exactitud de 10‒4, utilizando: 137


Notas de análisis numérico con MATLAB i. El método de Newton con x0 = 1:
ii. El método de la secante con x0 = π/4. y x1 = π/2.

7. Demuestre que el punto c calculado mediante el método de


bisección es el punto donde la línea que pasa por (a, signo
(f (a))) y (b, signo (f (b))) intersecta al eje de las x.

8. Encuentre el punto inicial positivo más pequeño para el cual el


método de Newton diverge usando f (x) = tan‒1 x.

9. Aplique el método de Newton a f (x) = x2‒q (donde q > 0).


Demuestre que si xn tiene después del dígito decimal k dígitos
correctos, entonces, xn+1 tendrá después del punto decimal al
menos 2k‒1 dígitos correctos, con tal que r > 0.006 y k ≥ 1.

10. Diseñe un algoritmo utilizando el método de Newton para


calcular la raíz quinta de cualquier número real positivo.

lı́m xn = q y si
11. En el método de la secante demuestre que si n→∞
f '(q) ≠ 0. Entonces q es un cero de f.

12. Verifique el programa en Matlab del método de la secante con


las siguientes funciones:
sen(x2 / 2), ex − tan x,x3 − 12x2 + 3x + 1.

13. Demuestre que la fórmula para el método de la secante se puede


escribir en la forma:

f (( xn )xn− 1 − xn f (xn− 1 )
.
f (xn ) − f (xn− 1 )
Explique porque en la práctica esta fórmula es inferior a la (3.2.3).

14. Si se utiliza el método de la secante en la función f (x)=x2‒2, con


x0 = 0 y x1 = 1. ¿Cuál es el valor de x2?

15. Utilizando el desarrollo de Taylor para f (x+h) y f (x‒k) deduzca


la siguiente aproximación de f '(x):
k2 f (x + h) − h2 f (x + k) + ( h2 − k2 ) f (x)
f ʹ(x) ≈ .
138 (x − k)kh
Fuente: Freepik.es

Capítulo 4

SOLUCIÓN DE SISTEMAS
DE ECUACIONES LINEALES

139
E
n la sección 1.2.6 vimos como un sistema de ecuaciones
lineales de la forma 1.2.56 se puede llevar a una forma matricial
1.2.57. Veamos como podemos resolver numéricamente estos
sistemas.

4.1. Solución de Sistemas Lineales


También vimos en la sección 1.2.6 que en un sistema lineal de
ecuaciones 1.2.57 simplificando Ax = b su solución es

x = A‒1 b,

cuando A es cuadrada (n × n) y no singular. Sin embargo, en la práctica


esto es innecesario y no es aconsejable calcular A‒1. El lector interesado en
leer o profundizar en los temas de este capítulo puede recurrir al libro de
Noble [21], el cual es una excelente referencia.

Ejemplo 4.1.1.
21
Si tenemos 7x = 21 entonces x = = 3, pero si calculamos la matriz
3
inversa de 7, tendremos x = 7‒1 × 21 = 0.142857 × 21 = 2.99997. Lo
anterior se da porque la inversa requiere más aritmética, una multiplicación
y una división, en lugar de solo una división. De forma similar sucede con
los sistemas de más de una ecuación, por tal motivo nos centraremos en
solucionar de forma directa el problema en lugar de encontrar A‒1. 141
Notas de análisis numérico con MATLAB Ejemplo 4.1.2.
Al ilustrar el algoritmo para solucionar un sistema lineal, veamos este
ejemplo de un sistema 3 × 3.

10 − 7 0 x1 7

−3 2 6 x2 = 4

5 −1 5 x3 6

El primer paso es eliminar los términos con x1 en la segunda y tercera


ecuación. Para esto sumamos 0.3ε1 a ε2 y sutraemos 0.5ε1 a ε3. donde ε1,
ε2 y ε3 son las filas del sistema. El coeficiente 10 de x1 es llamado pivot y las
cantidades -0.3 y 0.5 obtenidas de dividir el pivot en los coeficientes de x2 y
x3 son llamadas multiplicadores. El sistema ahora queda así:

10 −7 0 x1 7

0 − 0.1 6 x2 = 6.1

0 2.5 5 x3 2.5

En el segundo paso utilizamos el coeficiente de x2 de la segunda


ecuación, pero -0.1 es más pequeño que 2.5, lo cual no es conveniente
computacionalmente, por lo tanto, intercambiamos las filas dos y tres (esto
se llama pivoteo). Esto no es necesario en este ejemplo porque no existen
errores de redondeo, pero es crucial en general.

10 −7 0 x1 7

0 2.5 5 x2 = 2.5

0 − 0.1 6 x3 6.1

Ahora el segundo pivot es 2.5. Sumamos 0.04 x2 a x3.


142
Solución de sistemas de ecuaciones lineales
10 − 7 0 x1 7

0 2.5 5 x2 = 2.5

0 0 6.2 x3 6.2

Con lo cual finalizamos este proceso y de la última ecuación se tiene


x3 = 1, x2 = ‒1 y x1 = 0. Entonces la solución es

−1 .

1
Expresando el anterior procedimiento (o “algoritmo”) en notación
matricial tenemos:

1 0 0 10 − 7 0 1 0 0

L= 0.5 1 0 ,U = 0 2.5 5 yP= 0 0 1 ,

0.3 0.04 1 0 0 6.2 0 1 0


de donde AAA = PA.

4.2. Permutaciones y Matrices Triángulares


Una matriz de permutación es una matriz identidad con filas y
columnas intercambiadas.

Ejemplo 4.2.1.
La matriz de permutación:

0 0 0 1

1 0 0 0
P=
0 0 1 0

0 1 0 0 143
Notas de análisis numérico con MATLAB Tenemos que PA permuta las filas de A y AP permuta las columnas de A.

En Matlab se utiliza la siguiente notación para el ejemplo anterior:


P = [4 1 3 2] entonces P*A y A(P, :) son equivalentes.

Definición 4.2.1.
Una matriz triángular superior (ai j ), es aquella donde ai j = 0 para
i > j. y es triángular inferior ai j = 0 para i < j, además cuando aii = 1 se
dice que es triángular inferior unitaria.

4.3. La factorización LU y la factorización


de Cholesky
Sea AX = b un sistema con An×n = A, b = bn y X = Xn. Existen sistemas
fáciles de resolver veamos:

1.

a11 0 0 ··· 0 x1 b1

0 a22 0 ··· 0 x2 b2

0 0 a33 · · · 0 x3 = b3
.. .. .. ... .. .. ..
. . . . . .

0 0 0 · · · ann xn bn

En este caso tenemos:


■■ Si aii = 0 y bi = 0 entonces xi = k 2 ℝ
■■ Si aii = 0 y bi ≠ 0 entonces el sistema no tiene solución.

144
2.

Solución de sistemas de ecuaciones lineales


a11 0 0 ··· 0 x1 b1

a21 a22 0 ··· 0 x2 b2

a31 a32 a33 · · · 0 x3 = b3


.. .. .. .. .. .. ..
. . . . . . .

an1 an2 an3 · · · ann xn bn

Algoritmo 4.3.1.
Sustitución progresiva
entra n, (ai j ), (bi )
para i = 1...n hacer

i− 1
xi ← bi − ∑ ai j x j / aii
j= 1

fin
salida (xi)

Análogamente para una triangular superior se utiliza sustitución


regresiva.

Algoritmo 4.3.2.
entrar n, (ai j ), (bi )
para i = n, n‒1,...1 hacer
n
xi ← bi − ∑ ai j x j / aii
j= i+ 1

fin salidat (xi )

Solucionar sistemas con matrices triángulares es muy fácil, con dos


códigos en matlab, ver 4.1 y 4.2.

145
Notas de análisis numérico con MATLAB 1 x=zeros(n,1);
2
3 for k=n:-1:1
4
5 x(k)=b(k)/u(kk);
6
7 i=(1:k-1);
8
9 b(i)=b(i)-x(k)*u(i,k);
10
11 end.

Código 4.1. Solución de sistema triangular

y el otro es

1 x=zeros(n,1);
2
3 for k=n:-1:1
4
5 j=k+1:n;
6
7 x(k)=(b(k)-u(k,j)*x(j))/u(kk);

Código 4.2. Solución de sistema triangular

Ejercicio 4.3.1.
Implementar los códigos 4.1 y 4.2 en Matlab y correrlos con tres ejemplos
como mínimo.

Nota 4.3.1.
1. En el ejemplo 4.1.2 nos dimos cuenta que en el sistema Ax = b; A
se descompone o factoriza en LU donde L es una matriz triangular
inferior y U es una matriz triangular superior.

Y para resolver el sistema Ax = b se produce:

Resolver Lx = b para z.

146 Resolver Ux = z para x.


2. L y U no son únicas.

Solución de sistemas de ecuaciones lineales


3. Cuando lii = 1 (factorización Doolittle).

4. Cuando uii = 1 (factorización Crout).

5. Cuando U = LT de modo que lii = uii factorización de Cholesky.

Teorema 4.3.1.
Si A es una matriz real, simétrica y definida positiva, entonces tiene una
factorización única A = LLT , en donde L es una matriz triangular inferior
con diagonal positiva.

Teorema 4.3.2.
Si todos los elementos a(k)
kk
(elemento pivote de la columna k) son distintos
de cero en un proceso de Gauss, entonces A = LU.

4.4. Eliminación gaussiana con pivote


En ocaciones es conveniente cambiar las filas para que el proceso de
Gauss funcione.

Ejemplo 4.4.1.
1.
0 1 x1 1
=
1 1 x2 2

2.
ε 1 x1 1
= para ε pequeño.
1 1 x2 2

3.
1 ε− 1 x1 ε− 1
=
1 1 x2 2 147
Notas de análisis numérico con MATLAB En la pequeñez relativa de a11 respecto a los otros elementos en su fila.

Para solucionar Ax = b solucionamos PAx = Pb donde P es la matriz de


permutación (PA se obtiene de A permutando sus filas).

■■ La factorización PA = LU se obtiene de un algoritmo modificado


de la eliminación Gaussiana.

■■ En la fase de solución consideramos Lz = Pb y Ux = z.

Ejemplo 4.4.2.
Utilizar el comando [L, U, P] = lu(A) de Matlab, para obtener A = P ˄
(‒1) * L * U. con

2 3 −6

A= 1 −6 8

3 −2 1

Ejemplo 4.4.3.
Resolver utilizando la descomposición LU al sistema Ax = y con

2 1 −3 2

A= −1 3 2 yy= 0 .

3 1 −3 1

Tenemos que

PA = LU y se resuelve PA = Py

Verificar en Matlab con las ordenes X = A\y o X = inv(A) * y.

x = (‒1 5/11 ‒13/11).



Para mirar si el problema esta bien condicionado, se mira el número de
condición de A que es
k (A) = ||A‒1|| ||A||
148
el cual depende de la norma que se tome. Se mira si k (A) ≥ 1, esta mal

Solución de sistemas de ecuaciones lineales


condicionado si está muy grande. En Matlab se utiliza el comando cond (A, p),
donde el valor de p puede ser 1,2, in f ,' f ro' que indican la norma 1, norma
euclidiana, la norma infinito y la norma de Frobenius respectivamente.

Algoritmo 4.4.1.
Algoritmo para la factorización LU con pivoteo:
U=A, L=I, P=I,
para k=1 hasta m-1
seleccionar i Ø k para maximizar |uik |
Para l = k hasta m
ukl G uil intercambio de columnas
para l = 1 hasta k -1
lkl G lil
para l = 1 hasta m
pkl G pil
para j = k + 1 hasta m
l jk = ujk = ukk
para l=k hasta m
ujl = ujl ‒ l jk ukl .

4.5. Ejercicios
1. Implemente el anterior algoritmo 4.4.1 en Matlab y pruébelo con
tres sistemas diferentes de orden 3, 4 y 5. Pruebelo con el sistema
ai j = aji , aii = i, ai j = j con j = i, ..., N.

2. Considere las siguientes matrices como A, encuentre la matriz de


permutación P tal que PA se pueda factorizar en el producto LU.
Compruebe con el programa .m de Matlab.
149
Notas de análisis numérico con MATLAB

1 1 −1 0 0 1 1 2
1 2 −1 1 2 −1
1 1 4 3 0 1 1 1
i. 2 4 0
ii. 2 4 0
iii. iv.
2 −1 2 4 1 2 −1 3
0 1 −1 0 1 −1
2 −1 2 3 1 1 2 0

3. Resuelva los siguientes sistemas utilizando la factorización LU y


verifique con el programa .m de Matlab

2x1 − x2 + x3 = − 1,
i. 3x1 + 3x2 + 9x3 = 0,

3x1 + 3x2 + 5x3 = 4.

1.012x1 − 2.132x2 + 3.104x3 = 1.984,

− 2.132x1 + 4.096x2 − 7.013x3 = − 5.049,


ii. 3.104x1 − 7.013x2 + 0.014x3 = − 3.895.

2x1 = 3,

x1 + 1.5x2 = 4.5,
iii.
− 3x1 + 0.5x3 = − 6.6,

2x1 − 2x2 + x3 + x4 = 0.8.

4. Obtenga la factorización de Cholesky para las siguientes matrices


A

4 1 1 1 4 1 −1 0 6 2 1 −1
2 −1 0
1 3 −1 1 1 3 −1 0 2 4 1 0
i. −1 2 −1 ii. iii. iv.
1 −1 2 0 −1 −1 5 2 1 1 4 −1
0 −1 2 1 1 0 2 0 0 2 4 −1 0 −1 3

150
5. Repita el punto 3 pero utilizando factorización de Cholesky.

Solución de sistemas de ecuaciones lineales


6. Demuestre que si una matriz no singular A tiene una factorización
LU, en donde L es una matriz triangular inferior unitaria,
entonces L y U son únicas.

7. Demuestre que una matriz triangular superior o inferior es


no singular si y solo si los elementos de su diagonal son todos
diferentes de cero.
0 1
8. Demuestre que la matriz A = no tiene factorización
LU. 1 1

9. Considere el sistema

x2 + 2x3 = 1

2x1 − x2 = 2

2x2 + x3 = 3

Determine la factorización PA = LU para resolver el sistema. Utilice


esta factorización para obtener det(A).

151
Fuente: Freepik.es

Capítulo 5

APROXIMACIÓN DE FUNCIONES
A PARTIR DE DATOS

153
En esta sección expondremos algunos de los métodos más comunes
para apróximar funciones cuando conocemos una tabla de datos.

5.1. Interpolación Polinomial


Se nos da una tabla con valores (xi , yi ) (también llamados nodos) con
n+1 datos

x x0 x1 x2 ... xn

y y0 y1 y2 ... yn

Cuadro 5.1. Datos en general.

Buscamos un polinómio P con el menor grado posible, para el cual


P (xi ) = yi (0 ≤ i ≤ n), de tal forma que podamos con este polinomio
encontrar valores (x*, y*), que no estén en la tabla. Se dice que tal
polinomio interpola los datos de la tabla 5.1. En la figura 5.1 podemos
ver los puntos discretos que representan los nodos y la línea continua
representa el polinómio de interpolación.

155
Notas de análisis numérico con MATLAB

Figura 5.1. Nodos y polinómio Interpolador

Teorema 5.1.1.
Si x0, x1, ..., xn son números reales distintos, entonces para valores
arbitrarios y0, y1, ..., yn existe un único polinomio Pn , de grado n, de manera
que
pn (xi ) = yi , (0 ≤ i ≤ n) .

Demostración.
• (Existencia) Procedemos de manera inductiva. Para
n = 0 la existencia es obvia, ya que una función constante P0
(un polinomio de grado ≤ 0) se puede escoger de manera que
P0 (x0) = y0. Supongamos ahora que hemos obtenido un
polinomio

Pk‒1 (de grado ≤ k‒1), con Pk‒1 (xi ) = yi , para 0 ≤ i ≤ k‒1. Y


construyamos Pk :

Pk (x) = Pk‒1 (x)+C(x‒x0 ) (x‒x1 ) ... (x ‒ xk‒1 ), (5.1.1)

observe que este es un polinomio de a lo grado k. Además Pk


interpola los mismos datos que Pk‒1 ya que Pk (xi ) = Pk‒1 (xi ) =
yi con (0 ≤ i ≤ k‒1). Encontremos C a partir de Pk (xk ) = yk y de
156 la ecuación (5.1.1)
Pk‒1 (xk ) + C(xk ‒ x0 ) (xk ‒ x1 ) ... (xk ‒ xk‒1 ) = yk (5.1.2)

Aproximación de funciones a partir de datos


Despejamos de la ecuación (5.1.2) C, debido a que los factores
que multiplican a C son diferentes de 0, (pues en ninguno se
restará xk con xk sino con el inmediatamente anterior xk‒1). Queda
demostrada la existencia del polinomio.

• (Unicidad): Sean Pn y Qn dos polinomios que cumplen el


teorema. Entonces Pn ‒ Qn tendría la propiedad (Pn ‒ Qn)
(xi ) = 0, para 0 ≤ i ≤ n (porque Pn (xi ) = yi y Qn (xi ) = yi ). Ya que
el grado de la resta de polinomios Pn ‒ Qn debe ser a lo sumo n
(por suma de polinomios), este polinomio puede tener máximo
n ceros (teorema fundamental del algebra), en tanto no sea el
polinomio cero. En vista de que las xi son distintas, Pn ‒ Qn tiene
n + 1 ceros (cada xi (0 ≤ i ≤ n)); debe por lo tanto valer cero. Por
consiguiente Pn = Qn.

5.1.1. Forma de Newton del polinomio de


interpolación

La forma de Newton para el polinomio de interpolación es:


Pk (x) = c0 + c1 (x − x0 ) + c2 (x − x0 ) ( x − x1 ) + ... + ck (x − x0 ) ... (x − xk− 1 ) ,

(5.1.3)

o comprimido
k i− 1
Pk (x) = ∑ ci ∏ x− xj , (5.1.4)
i=0 j =0

A partir de las fórmulas (5.1.3) o (5.1.4) podemos mostrar algunos de


estos polinomios de grado cero, uno y dos.

P0 (x) = c0 ,

P1 (x) = c0 + c1 (x‒x0 ),

P2 (x) = c0 + c1 (x‒x0 ) + c2 (x‒x0 ) (x‒x1 ). 157


Notas de análisis numérico con MATLAB Nota 5.1.1.
Un método que se utiliza para evaluar estos polinomios es la
múltiplicación anidada o algoritmo de Horner (ver la sección 1.2.5).

Los coeficientes de (5.1.4) se calculan mediante la siguiente expresión:

yk − pk− 1 (xk )
ck = .
(xk − x0 )( xk − x1 ) · · ·(xk − xk.− 1 ) (5.1.5)

Podemos utilizar el algoritmo 5.1.1.

Algoritmo 5.1.1.
Algoritmo para encontrar los ck del polinomio de Newton

Entrada: tabla de nodos


inicio:
c0 C y0
esquema:
para k desde 1 hasta n hacer
d C xk ‒ xk‒1
c C ck‒1
para i desde k‒2 hasta 0 hacer
u C u * (xk ‒ xi ) + ci
d C d * (xk ‒ xi )
fin del para i
ck C (yk‒u ) / d
fin

Ejercicio 5.1.1.
Implementar el algoritmo 5.1.1 en Matlab y verificarlo construyendo el
polinomio de Newton con una función de la forma 4x3 + 35x2 ‒ 84x ‒ 954
158 con la tabla de datos para esta función
Aproximación de funciones a partir de datos
x 5 -7 -6 0

y 1 -23 -54 -954

Cuadro 5.2. Valores del ejercicio 5.1.1

La respuesta del ejercicio 5.1.1 es: p3(x) = 1 + 2(x‒5) + 3(x‒5)(x+7)


+ 4(x‒5) (x+7) (x+6)

5.1.2. El error de la interpolación polinomial

El siguiente teorema nos da idea del error que se presenta cuando


interpolamos una serie de datos mediante un polinomio

Teorema 5.1.2.
Sea f 2 C n+1 [a,b], y sea P un polinomio de grado menor o igual a n, que
interpola a f en n+1 puntos distintos x0 , x1, ..., xn en el intervalo [a,b]. Para
cada x en [a,b] le corresponde un punto ξx en (a, b) tal que

n
1
f (x) − P (x) = f n +1 (ξ x ) ∏ (x − xi ) . (5.1.6)
(n + 1)!
i=0

Ejemplo 5.1.1.
Si f (x) = sen (x) se aproxima mediante un polinomio de grado nueve
que interpola a f en diez puntos del intervalo [0,1]. ¿Qué tan grande es el
error en este intervalo?

Como las derivadas de esta función varia entre senos y cosenos y el


valor absoluto de estas dos funciones esta acotado por uno, se tiene que
f (10) (ξ x ) ≤ 1 y en el intervalo [0,1] el producto de las diferencias entre un
x contenido en él y cualquier otro x también contenido en el intervalo, es
9
menor o igual que uno, se tiene ∏ |x − xi | ≤ 1. De esta manera, para todo x
i=0
en [0,1].
1
|sen (x) − P9 (x)| ≤ < 2.8 × 10− 7. Este es el error que se obtiene al
10!
aproximar la función sen x con un polinomio de grado 9. 159
Notas de análisis numérico con MATLAB Podemos utilizar algunos comandos de Matlab para trabajar la
interpolación polinomial. Veamos:

Ejemplo 5.1.2.
Encontrar los valores de x que satisfacen y = 0.9, 0.7, 0.6 y 0.5,
respectivamente a partir de la tabla 5.3. Un procedimiento en Matlab es el
siguiente se tiene en el código 5.1

x 0 0.25 0.50 0.75 1.0

y 0.9162 0.8109 0.6931 0.5596 0.4055

Cuadro 5.3. Valores del ejercicio 5.1.2

1
2 >> x=[0,0.25,0.5,0.75,1];
3 >> y=[0.9162, 0.8109, 0.6931, 0.5596, 0.4055];
4 >> yi=[0.9, 0.7, 0.6, 0.5];
5 >> xi=interp1(y, x, yi, 'linear')
6
7 xi =
8
9 3.8462e-02 4.8536e-01 6.7434e-01 8.4669e-01

Código 5.1. Interpolación polinomial

Esto es:
yi 0.9 0.7 0.6 0.5

xi 3.8462 × 10‒2 4.8536 × 10‒1 6.7434 × 10‒1 8.4669 × 10‒2

Cuadro 5.4. Solución del ejemplo 5.1.2

5.2. Otros comandos en Matlab


Los siguientes comando de matlab también son utilizados en la
interpolación:

1. Escribiendo polyfit (x, y, n) matlab da el vector de coeficientes


del polinomio en x, P(x) de grado n que mejor se ajuste a los
160 datos (xi , yi ) ; osea (P(xi ) = yi ).
2. Escribiendo yi =interp1(x, y, xi ,‘método’) matlab da el vector yi

Aproximación de funciones a partir de datos


tal que (xi , yi) es el conjunto total de puntos por interpolación
entre el conjunto de puntos dados (x, y).

Ejemplo 5.2.1.
1. Calcule el polinomio interpolador de segundo grado que pasa por
los puntos (‒1, 4), (0, 2) y (1, 6).

Un procedimiento es el siguiente se ve en el código 5.2

1
2 >> x=[-1 0 1];
3 >> y=[4 2 6];
4 >> poly2sym(polyfit( x,y,2))
5
6 ans =
7 3*xˆ2 + x + 2

Código 5.2. Utilización del comando de Matlab poly2sym

2. Representar 200 puntos de interpolación cúbica, entre los puntos


(x, y) dados por los valores que toma la función exponencial ex, y
su aproximación por interpolación, utilizar interpolación cúbica.

Un código es 5.3 donde generamos los 200 puntos de interpolación


cúbica (xi , yi ) igualmente espaciados entre 0 y 2, y se representa
en una gráfica junto con los 20 puntos (x, y) iniciales. Podemos ver
las gráficas en las figuras 5.2 y 5.3

1 >> x=0.1:0.1:2;
2 >> y=exp(x);
3 >> xi=0.01:0.01:2;
4 >> yi=interp1(x,y,xi,'cubic');
5 >> plot(x,y,'*',xi,yi)
6 >> legend('Exacta','Interpolados')

Código 5.3. Interpolación de 200 puntos y graficación

Ahora representamos la diferencia entre los valores exactos de ρx en los


200 puntos de la interpolación y los puntos (xi , yi ) ver el código 5.4 161
Notas de análisis numérico con MATLAB

Figura 5.2. Puntos Interpolados del ejemplo 5.2.1 (2)

1 >> zi=exp(xi);
2 >> di=yi-zi;
3 >> plot(xi,di)

Código 5.4. Error en la interpolación de los 200 puntos

3. Sea f (x) = sen(x) ; buscar mediante un polinomio de grado 9 que


interpola a f en 10 puntos de [0,1].

1 >> y=sin(x);
2 >> xi=0:0.1:1;
3 >> yi=interp1(x,y,xi,'spline');
4 >> plot(x,y,'*',xi,yi)
5 >> legend('Exacta','Interpolada')

Código 5.5. Interpolación de f en 10 puntos y graficación

Podemos ver la gráfica en la Figura 5.4

162
Aproximación de funciones a partir de datos
Figura 5.3. Error entre interpolación y exactos del ejemplo 5.2.1 (2)

Figura 5.4. Gráfica del ejemplo 5.2.1 (3) 163


Notas de análisis numérico con MATLAB
5.3. Forma de Lagrange para el polinomio
de interpolación
Otra forma para encontrar el polinomio de interpolación es utilizando
las fórmulas de Lagrange. Dada una tabla de nodos (o puntos) (xi , yi) se
expresa el polinomio en la forma
n
P(x) = y0 0 (x) + y1 1 (x) + · · ·yn n (x) = ∑ yk k (x). (5.3.1)
k=0
Donde los i (x) en (5.3.1) son polinomios que dependen de los xi .
Como las coordenadas pueden ser todas iguales a cero excepto por un uno,
que puede estar en la i‒ésima posición, se tiene:
n n
δi j = Pn (x j ) = ∑ yk k (x j ) = ∑ δki k (x) = i (x j ). (5.3.2)
k= 0 k= 0
Podemos escoger un grupo de polinómios con esta propiedad.
Consideremos 0 como el polinomio de grado cero que tome el valor de
cero en x1 , x2 , ..., xn y el valor de 1 en x0. Luego
n
0 (x) = c(x − x1 )( x − x2 ) · · ·(x − xn ) = c ∏ (x − x j ). (5.3.3)
j =1

y como en (x0 ) = 1, podemos encontrar c así:


n
1 = c ∏ (x0 − x j ),
j =1

y n
c= ∏ (x0 − x j ) − 1.
j =1

por consiguiente,
n n n (x − x j )
0 (x) = ∏ (x0 − x j ) − 1 ∏ (x − x j ) = ∏ (x0 − x j ) . (5.3.4)
j =1 j =1 j =1

de forma similar podemos encontra los restantes i y la fórmula


general es:
n (x − x )
j
i (x) = ∏ (0 ≤ i ≤ n)
(x − x j )
j =0 i (5.3.5)
164 j =i
Los polinomios (5.3.5) son conocidos con el nombre de funciones

Aproximación de funciones a partir de datos


cardinales.

Ejemplo 5.3.1.
Para los datos de la tabla del ejercicio 5.1.1 los nodos son 5, -7, -6 y 0,
luego las funciones cardinales son:

(x − x1 )( x − x2 )( x − x3 ) (x + 7)( x + 6)( x − 0)
0 (x) = =
(x0 − x1 )( x0 − x2 )( x0 − x3 ) (5 + 7)( 5 + 6)( 5 − 0)

(x + 7)( x + 6)x
0 (x) = .
(5 + 7)( 5 + 6)( 5 − 0)

(x − x0 )( x − x2 )( x − x3 ) (x − 5)( x + 6)( x − 0)
1 (x) = =
(x1 − x0 )( x1 − x2 )( x1 − x3 ) (− 7 − 5)( − 7 + 6)( − 7 − 0)
(x − 5)( x + 6)x
1 (x) = .
(− 7 − 5)( − 7 + 6)( − 7)

(x − 5)( x + 7)x (x − 5)( x + 7)( x + 6)


2 (x) = .y 3 (x) = .
(− 6 − 5)( − 6 + 7)( − 6) (− 5)( 7)( 6)

Luego el polinomio de interpolación es:

P3 (x) = 0 (x) − 23 1 (x) − 54 2 (x) − 954 3 (x). (5.3.6)

5.4. Diferencias Divididas


Computacionalmente la base {1, x1, x2, ..., xn} no es recomendable
para construir un polinomio de Newton, de grado n, en lugar de esta
podemos utilizar la base {1, (x ‒ x0 ), (x ‒ x0 ) (x ‒ x1 ), (x ‒ x0 ) (x ‒ x1 )
(x ‒ x2 ), ..., (x ‒ x0 ) (x ‒ x1 ) (x ‒ x2 ) ... (x ‒ xn‒1 )}, con esta base llegamos
al polinomio
n
Pn (x) = ∑ ck qk (x), (5.4.1)
k=0
donde

qk (x) = ( x − x0 )( x − x1 )( x − x2 ) · · ·(x − xk− 1 ). (5.4.2) 165


Notas de análisis numérico con MATLAB Los puntos x0 , x1 , ... xn junto con las condiciones de interpolación
Pn (xi ) = f (xi ) para i = 0, 1, ...., n forman el sistema de ecuaciones lineales
n
∑ ck qk (xi) = f (xi ), i = 0, 1, ..., n, (5.4.3)
k=0

este sistema lo utilizamos para encontra los coeficientes ck del


polinomio de interpolación. En este sistema de ecuaciones la matriz de los
coeficientes es una matriz A cuadrada de orden (n+1), cuyos elementos
son de la forma

aik = qk (xi ), con i, k = 0,1, ...., n. (5.4.4)

Se puede ver que la matriz A es triángular inferior pues


j− 1
ai j = q j (xi ) = ∏ (x − xk ), para i > j− 1 (5.4.5)
k=0

j− 1
ai j = q j (xi ) = ∏ (x − xk ) = 0, para i ≤ j − 1. (5.4.6)
k=0

Por esto se puede ver de forma fácil en el caso de tres nodos con

P2 (x) = c0 q0 (x) + c1 q1 (x) + c2 q2 (x) = c0 + c1 (x − x0 ) + c2 (x − x0 )( x − x1 ).

Redefiniendo x = x0 , x = x1 , x = x2 tenemos las tres ecuaciones

P2(x0) = f (x0) = c0+ c1(x0‒ x0) + c2(x0‒ x0) (x‒ x1) = c0,

P2(x1) = f (x1) = c0+ c1(x1‒ x0) + c2(x1‒ x0) (x1‒ x1) = c0 + c1(x1‒ x0),

P2(x2) = f (x2) = c0+ c1(x2‒ x0) + c2(x2‒ x0) (x2‒ x1)

Se tienen el sistema de ecuaciones

c0 = f (x0 )

c0 + c1 (x1 − x0 ) = f (x1 ) , (5.4.7)

166 c0 + c1 (x2 − x0 ) + c2 (x2 − x0 )( x2 − x1 ) = f (x2 )


escribiendo este sistema en forma matricial se tiene

Aproximación de funciones a partir de datos


1 0 0 c0 f (x0 )

1 (x1 − x0 ) 0 c1 = f (x1 ) . (5.4.8)

1 (x2 − x0 ) ( x2 − x0 )( x2 − x1 ) c2 f (x2 )

Cuando resolvemos nos damos cuenta que c0 depende de f (x0 ), c1


depende de f (x0) y f (x1), y así sucesivamente. Luego cn de pendede f (x0),
f (x1 ), ..., f (xn ). esta dependencia la podemos escribir

cn = f [x0, x1, ..., xn ], (5.4.9)

La expresión f [x0 , x1, ..., xn ], es la que llamamos diferencia dividida.


Alguna de las fórmulas son:

f [x0 ] = f (x0 ), (5.4.10)

y como Pn(x1 ) = c0 + c1 (x1 ‒ x0 ) = f (x0 ) + c1 (x1 ‒ x0 ) = f (x1 ),


despejamos c1 de la última parte de la igualdad

f (x1 ) − f (x0 )
c1 = , (5.4.11)
x1 − x0
luego
f (x1 ) − f (x0 )
f [x0 , x1 ] = . (5.4.12)
(x1 − x0 )
El polinomio de interpolación de Newton (5.1.4) con la representación
(5.4.9) queda ahora
n k− 1
Pn (x) = ∑ f [x0, x1, ..., xk ] ∏ (x − x j ). (5.4.13)
k=0 j =0

Teorema 5.4.1.
Las diferencias divididas satisfacen la ecuación:

f [x1 , x2 , ..., xn ]− f [x0 , x1 , ..., xn− 1 ]


f [x0 , x1 , ..., xn ] = .
xn − x0 (5.4.14) 167
Notas de análisis numérico con MATLAB Nota 5.4.1.
El teorema 5.4.1 nos da la forma para encontrar diferencias finitas de
orden superior.
Demostración. Sea Pn el polinomio que interpola los puntos x0,x1,...,
xn, y Q el polinomio de grado n‒1 que interpola los puntos x1,x2,..., xn,
Tenemos que
x − xn
P(x) = Q(x) + (Q(x) − Pn− 1 (x)) (5.4.15)
xn − xo

Claramente es un polinomio de grado a lo sumo n., Y en los puntos


xi para 0 ≤ i ≤ n, tenemos que P(xi ) = yi . En efecto P(x0 ) = Pn‒1 (x0 ) =
y0,P(xn ) = Q(xn ) = yn , y para i = 1, 2 ...., n‒1 tenemos

xi − xn xi − xn
P(xi ) = Q(xi ) + (Q(xi ) − Pn− 1 (xi )) = yi + (yi − yi ) = yi .
xn − xo xn − xo

Luego P y Pn interpolan los mismos puntos, por el teorema 5.1.1


concluimos que P y Pn son el mismo polinomio. Por lo tanto, el coeficiente
del termino xn es el mismo esto es:

f [x1 , x2 , ..., xn ]− f [x0 , x1 , ..., xn− 1 ]


f [x0 , x1 , · · ·, xn ] = .
xn − x0

Nota 5.4.2.
En la prática podemos utilizar tablas al estilo de la siguiente, donde los
valores conocidos van en las primeras dos columnas y los dátos a cálcular
van al lado derecho, y se empiezan a calcular de abajo hacia arriba.

x0 f [x0 ] f [x0 , x1 ] f [x0 , x1 , x2 ] f [x0 , x1 , x2 , x3 ]

x1 f [x1 ] f [x1 , x2 ] f [x1 , x2 , x3 ]

x2 f [x2 ] f [x2 , x3 ]

x3 f [x3 ],

La primera fila a partir de f [x0] serán los coeficientes del polinomio


buscado desde el grado cero hasta el último grado en el mismo orden de la
168 tabla.
Ejemplo 5.4.1.

Aproximación de funciones a partir de datos


Escriba el polinomio de interpolación de Newton para los siguientes
datos:

x 4 2 0 3

f (x) 63 11 7 28

Cuadro 5.5. Valores del ejemplo 5.4.1

La tabla queda en la forma

4 63 26 6 1
2 11 2 5
0 7 7
3 28

y los cálculos que se realizan son en el siguiente orden:

f (x3 ) − f (x2 )
f [x2 , x3 ] = = 7,
x3 − x2

f (x2 ) − f (x1 )
f [x1 , x2 ] = = 2,
x2 − x1

f [x2 , x3 ]− f [x1 , x2 ]
f [x1 , x2 , x3 ] = = 5,
x3 − x1

f (x1 ) − f (x0 )
f [x0 , x1 ] = = 26,
x1 − x0

f [x1 , x2 ]− f [x0 , x1 ]
f [x0 , x1 , x2 ] = = 6,
x2 − x0

f [x1 , x2 , x3 ]− f [x0 , x1 , x2 ]
f [x0 , x1 , x2 , x3 ] = = 1.
x3 − x0

Luego el polinomio de Newton queda en la forma

P3 (x) = 63 + 26(x − 4) + 6(x − 4)( x − 2) + 1(x − 4)( x − 2)x. 169


Notas de análisis numérico con MATLAB Algoritmo 5.4.1.
Entrada: tabla de valores x: xi , y: yi , longitud de x
Inicio:
para j desde 1 hasta n-1 hacer
para i desde n hasta j+1 hacer
y(i) C (y(i)‒y(i‒1)) / (x(i)‒x(i‒ j))
fin
salida coeficientes del polinomio

Un archivo en Matlab utilizando para el algoritmo 5.4.1 lo llamamos


ddivi2.m (ver el código 5.6).

1 function y =ddivi2(x,y)
2
3 n = length(x);
4
5 for j = 1:n-1
6
7 for i = n:-1:j+1
8
9
10 y(i) = (y(i)-y(i-1))/(x(i)-x(i-j));
11
12 end
13
14 fprintf(' \n ')
15
16 end
17 \end{center}

Código 5.6. Diferencias divididas

Ejercicio 5.4.1.
Implementar el anterior programa en Matlab y verificarlo con el ejemplo
5.4.1.

Teorema 5.4.2.
Algunas propiedades de las diferencias divididas son:
1. La diferencia dividida es una función simétrica de sus argumentos.
Es decir, si (z0, z1, ..., zn ) es una permutación de (x0, x1, ..., xn),
170 entonces
f [z0 , z1, ..., zn ] = f [x0 , x1 , ..., xn ].

Aproximación de funciones a partir de datos


(5.4.16)

2. Sea Pn el polinomio de a lo mas grado n que interpola a la función


f en un conjunto de n+1 nodos diferentes x0, x1, ..., xn. Si t es un
punto diferente de los nodos, entonces

n
f (t) − Pn (t) = f [x0 , x1 , ..., xn , t] ∏ (t − x j ).
(5.4.17)
j =0

3. Si f es n veces continuamente diferenciable en [a, b] y x0, x1, ..., xn


son puntos distintos de [a,b], entonces existe un punto ξ en (a,b)
tal que
1 (n)
f [x0 , x1 , ..., xn ] = f (ξ ). (5.4.18)
n!

Ejercicio 5.4.2.
Demostrar el teorema 5.4.2.

5.5. Interpolación de Hermite


Consideremos el conjunto de puntos {xi , yi , yiʹ } para i = 0, ..., n, y yi = f (xi ), yʹi = f ʹ(x
i = 0, ..., n, y yi = f (xi ), yiʹ = f ʹ(xi ). El problema de interpolación de Hermite consiste
en encontrar un polinomio P tal que P(xi ) = yi , Pʹ (xi ) = yi , para
i = 0, ..., n. En general este problema establece que siempre que se da
una derivada en un nodo también se dan todas las derivadas anteriores
en este nodo. Además se pide que en el nodo xi se den ki condiciones de
interpolación. Sea x0, x1, ..., xn , los nodos y suponga que en el nodo xi se
dan las siguientes condiciones de interpolación:

P( j) (xi ) = ci j (0 ≤ j ≤ ki − 1, 0 ≤ i ≤ n). (5.5.1)

El número total de condiciones sobre P se denota mediante m+1 y


por ende
m+1 = k0, k1, ..., kn (5.5.2)
171
Notas de análisis numérico con MATLAB Teorema 5.5.1.
Existe un único polinomio P en Πm (espacio vectorial de todos los
polinomios de a los más grado m) que satisface las condiciones de
interpolación de Hermite en la ecuación (5.5.1).

Demostración. El polinomio P lo buscamos en Πm y tiene por lo


menos m+1 coeficientes. El número de condiciones de interpolación
que la ecuación (5.5.1) impone sobre P también es m+1. Por lo tanto,
tenemos que solucionar un sistema cuadradro con m+1 ecuaciones y m+1
incógnitas. El sistema tiene solución cuando la matriz de coeficientes es no
singular, lo cual es equivalente a demostrar que la ecuación homogénea
tiene como única solución cero (Si Ax = 0, entonces x = 0). Para nuestro
caso consiste en encontrar un polinomio P en Πm tal que P( j)(xi ) = 0
(0 ≤  j ≤ ki ‒ 1, 0 ≤ i ≤ n). Dicho polinomio de tiene un cero de
multiplicidad ki en xi (0 ≤ i ≤ n) y debe por lo tanto ser un múltiplo del
n
polinomio q dado por q(x) = ∏ (x − xi ) ki, el grado de este polinomio es
i=0
k0+ k1 + ... + kn esto es m+1, pero el grado de P es m; luego la única
posibilidad es que P = q = 0.

Podemos extender el método de diferencias de Newton para resolver


problemas de interpolación de Hermite.

Ejemplo 5.5.1.
Encontrar el polinomio cuadrático que se ajusta a los valores

P(x0 ) = c00 P ʹ(x0 ) = c01 P(x1 ) = c10 . (5.5.3)

Podemos tratar de construir la tabla habitual de las diferencias divididas,


teniendo en cuenta que hay dos condiciones para x, por lo tanto debe
aparecer dos veces en la tabla. Además si suponemos que f es continua se
tiene

f (x) − f (x0 )
lı́m f [x0 , x] = lı́m = f ʹ(x0 ),
x→x0 x→x0 x − x0

luego f [x0 , x0 ] = f ʹ(x0 ). Las entradas restantes de la tabla se pueden


172 calcular de la forma usual.
x0 c00 c01 ?

Aproximación de funciones a partir de datos


x0 c00 ?

x1 c10

esta tabla es equivalente a

x0 p(x0 ) pʹ (x0 ) p[x0 , x0 , x1 ]

x0 p(x0 ) p[x0 , x1 ]

x1 p(x1 )

El polinomio que resulta de esta tabla es

P2 (x) = p(x0 ) + p[x0 , x0 ](x − x0 ) + p[x0 , x0 , x1 ](x − x0 ) 2 .

Nota 5.5.1.
Cuando todos los nodos son iguales podemos aplicar la propiedad 3 de
las diferencias divididas así

1 (n)
f [x0 , x0 , ..., x0 ] = f (x0 ). (5.5.4)
n!

Ejemplo 5.5.2.
Encontremos el polinomio que interpola los siguientes datos

p(1) = 2, pʹ (1) = 3, p(2) = 6, pʹ (2) = 7, pʹʹ (2) = 8.

x0 p(x0 ) p[x0 , x0 ] p[x0 , x0 , x1 ] p[x0 , x0 , x1 , x1 ] p[x0 , x0 , x1 , x1 , x1 ]

x0 p(x0 ) p[x0 , x1 ] p[x0 , x1 , x1 ] p[x0 , x1 , x1 , x1 ]

x1 p(x1 ) p[x1 , x1 ] p[x1 , x1 , x1 ]

x1 p(x1 )

x1 p(x1 )
173
Notas de análisis numérico con MATLAB esto es

1 2 3 ? ? ?

1 2 ? ? ?

2 6 7 4

2 6

2 6
recordemos que

1 ʹ
p[x1 , x1 , x1 ] = f ʹ (x1 ) = 4.
2!

Al calcular las diferencias de la forma habitual se tiene:

1 2 3 1 2 -1

1 2 4 3 1

2 6 7 4

2 6

2 6

y el polinómio resultante es:

P4 (x) = 2 + 3(x − 1) + ( x − 1) 2 + 2(x − 1) 2 (x − 2) − (x − 1) 2 (x − 2) 2 .

5.6. Ejercicios
1. Para las funciones dadas f (x), sean x0 = 0, x1 = 0.6 y x2 = 0.9.
Construya el polinomio de interpolación de grado uno y dos a lo
máximo para aproximar f (0.45), y calcule el error real:

i. f (x) = cos x, ii. f (x) = √1 + x, iii. f (x) = ln(x + 1),


iv. f (x) = tan x.
174
2. Use los polinomios de interpolación de Lagrange de grado uno

Aproximación de funciones a partir de datos


dos y tres para aproximar lo siguiente:

i. f (8:4) si

x 8.1 8.3 8.6 8.7

f (x) 16.99410 17.56492 18.50515 18.82091

ii. f (‒1/ 3) si

x -0.75 -0.5 -0.25 0

f (x) -0.07181250 -0.02475000 0.334993750 1.10100000

iii. f (0.25) si

x 0.1 0.2 0.3 0.4

f (x) 0.62049958 -0.28398668 0.00660095 0.24842440

iv. f (0.9) si

x 0.6 0.7 0.8 1.0

f (x) -0.17694460 0.01375227 0.22363362 0.65809197

3. Use la formula de diferencias divididas de Newton para construir


polinomios de grado uno, dos y tres con los siguientes datos. Use
cada uno de los polinomios para aproximar el valor especificado.

i. f (8.4) si

x 8.1 8.3 8.6 8.7

f (x) 16.94410 17.56492 18.50515 18.82091


175
Notas de análisis numérico con MATLAB ii. f (0.9) si

x 0.6 0.7 0.8 1.0


f (x) -0.17694460 0.01375227 0.22363362 0.65809197

4. Demuestre que
f n+ 1 (ξ (x))
f [x0 , x1 , · · ·, xn , x] = ,
(n + 1)!
para algún ξ (x).

5. Utilice la interpolación de Hermite para construir un polinomio


de aproximación para los siguientes datos.

i. ii.
x f(x) f’(x) x f(x) f’(x)

8.3 17.56492 3.116256 0.8 0.22363362 2.1691753

8.6 18.50515 3.151762 1.0 0.65809197 2.0466965

iii. iv.
x f(x) f’(x) x f(x) f’(x)

-0.5 -0.0247500 0.7510000 0.1 -0.62049958 3.58502082

-0.25 0.3349375 2.1890000 0.2 -0.28398668 3.14033271

0 1.1010000 4.0020000 0.3 0.00660095 2.66668043

0.4 0.24842440 2.16529366

6.
i. Use los siguientes valores y la aritmética de redondeo a cinco
dígitos para construir un polinomio de interpolación de
Hermite que le permita aproximar sen(0.34).

x sen x (sen x)’= cos x

0.3 0.29552 0.95534

0.32 0.31457 0.94924

176 0.35 0.34290 0.93937


ii. Determine la cota de error para la aproximación de la parte

Aproximación de funciones a partir de datos


(i) y compárela con el error real.

iii. Agregue sen(0.33) = 0.32404 y cos(0.33) = 0.94604 y vuelva a


efectuar los cálculos.

7. El polinomio p de grado ≤ n que interpola a una función dada


en n+1 nodos preestablecidos, está unívocamente definido. Por
ende, existe una transformación fDp. Denote esta transformación
con L y demuestre que
n
Lf = ∑ f (xi)li.
i=0

Demuestre que L es lineal; es decir,

L(a f +bg) = aL f +bLg.

8. Demuestre que la transformación L en el problema 7 tiene


la propiedad de que Lq = q para todo polinomio q de grado
máximo n.

9. Encuentre los polinomios de interpolación de Newton y Lagrange


para los siguientes datos escriba ambos en la forma a + bx + cx2
con el fin de verificar que son idénticos como funciones.

i. ii.
x 2 0 3 x -2 0 1

f (x) 11 7 28 f (x) 0 1 -1

10. Encuentre los polinomios de interpolación de Newton y Lagrange


para los siguientes datos

x − √3/ 5 0 √3/ 5
f (x) f( − √ 3/ 5) f (0) f (√ 3/ 5)

177
Notas de análisis numérico con MATLAB 11. Demuestre que si f es continua, entonces f [x0 , x1 , · · ·, xn ] es
continua en el abierto de ℝn+1, donde las componentes del vector
(x0 , x1 , · · ·, xn ) son distintas entre si.

12. Sea f ∈C n [a, b].. Demuestre que si x0 ∈ (a, b) y x1 , x2 , · · ·, xn


convergen a x0, entonces f [x0 , x1 , · · ·, xn ] converge a f (n) (x0 )/ n!.

13. Demuestre que si f es un polinomio de grado k, entonces para


n > k se tiene f [x0 , x1 , · · ·, xi ] = 0.

14. Para f (x) = xm, con m 2 ℕ, demuestre que

1 si n = m
f [x0 , x1 , · · ·, xn ] =
0 si n > m

15. Considere el polinomio

b− t 2
b− t 3

 p(t) = b − (b − a) 3 −2 .
b− a b− a

Demuestre que

| pʹ (t)| ≤ pʹ (( a+ b)/ 2) = 3/ 2, p(a) = a, p(b) = b, pʹ (a) = 0 y pʹ (b) = 0.

16. Sea x j = j × h, J = 0, ± 1, ± 2, · · ·, son nodos equidistantes con


distancia h. Verificar que la siguiente ecuación se tiene:

f (xk+ 1 − 2 f (xk ) + f (xk+ 1 )


f [xk− 1 , xk , xk+ 1 ] = .
2!h2

178
Fuente: Freepik.es

REFERENCIAS
BIBLIOGRÁFICAS

179
APOSTOL, T. M. Calculus, volume I, vol. 1. John Wiley & Sons, 2007.
ARNOLD, D. N. The patriot missile failure. Retrieved October 3 (2000), 2010.
BERTERO, M., AND BOCCACCI, P. Introduction to Inverse Problems in
Imaging. CRC Press, Jan. 1998.
BURDEN, R. L., AND FAIRES, J. D. Análisis numérico. Thomson Learning,,
2002.
CALAO, E. M., VÁSQUEZ, M. L., BECERRA, F., OSSA, J., ENRÍQUEZ, C.,
AND FRESNEDA, E. El método de elementos finitos y su aplicación
en la investigación odontológica. Revista Facultad de Odontología
Universidad de Antioquia 11, 1 (1999).
CARREÑO, M. L., BARBAT, A. H., AND CARDONA, O. D. Método numérico
para la evaluación holística del riesgo sísmico utilizando la teoría de
conjuntos difusos. Revista internacional de métodos numéricos para
cálculo y diseño en ingeniería 30, 1 (2014), 25–34.
CHAPRA, S. C., AND CANALE, R. P. Métodos numéricos para ingenieros.
McGraw-Hill,, 2007.
DOWSON, M. The ariane 5 software failure. ACM SIGSOFT Software
Engineering Notes 22, 2 (1997), 84.
EINARSSON, B. Accuracy and reliability in scientific computing. SIAM, 2005.
GROETSCH, C. W. Inverse Problems: Activities for Undergraduates.
Cambridge University Press, Dec. 1999.
HANSEN, P. C. Rank-Deficient and Discrete Ill-Posed Problems: Numerical
Aspects of Linear Inversion. SIAM, 1998.
HINESTROZA, D., PERALTA, J., AND OLIVAR, L. E. Regularization algorithm
within two parameters for the identification of the heat conduction 181
Notas de análisis numérico con MATLAB coefficient in the parabolic equation. Mathematical and Computer
Modelling 57, 7-8 (2013), 1990–1998.
KINCAID, D. R., AND CHENEY, E. W. Numerical analysis: mathematics of
scientific computing, vol. 2. American Mathematical Soc., 2002.
LEITHOLD, L., AND FAGOAGA, J. C. V. El cálculo, vol. 7. Oxford University
Press Harla, 1998.
LINEAL NUMéRICA CON MATLAB, á . Escuela técnica superior de
ingenieros industriales. Universidad Politécnica de Madrid Javier
García de Jalón de la Fuente- Septiembre (2004).
MANTILLA, I. Análisis numérico. Bogotá: Universidad Nacional de
Colombia (2004).
MATHWORKS. Matlab. urlhttps://la.mathworks.com/help/matlab/, 2018.
MEJÍA SALAZAR, C. E., ET AL. Invitación al análisis numérico.
MOORE, H. MATLAB for Engineers. Pearson, 2017.
NIEVES HURTADO, A., AND DOMÍNGUEZ SÁNCHEZ, F. C. Métodos
numéricos: aplicados a la ingeniería. Grupo Editorial Patria, 2002.
NOBLE, B. Applied linear algebra. Tech. rep., 1988.
RELEASE, M. The mathworks. Inc., Natick, Massachusetts, United States
488 (2013).
ROBERT G. BARTLE, D. R. S. Introduction to Real Analysis, Fourth Edition,
fourth ed. John Wiley and Sons, 2011.
RYABEN’KII, V. S., AND TSYNKOV, S. V. A theoretical introduction to
numerical analysis. Chapman and Hall/CRC, 2006.
SEARS, F. W., ZEMANSKY, M. W., AND YOUNG, H. D. University physics.
Addison-Wesley, 1987.
SMITH, W. A. Elementary numerical analysis. Prentice-Hall, Inc., 1986.
SPIVAK, M. Cálculo infinitesimal. Reverté, 1996.
WILKINSON, J. H. The evaluation of the zeros of ill-conditioned polynomials.
part I. Numerische Mathematik 1, 1 (1959), 150–166.
WYLIE, C. R., CASTELLANOS, J. H. P., AND BALLESTEROS, S. A. Matemáticas
superiores para ingeniería. No. QA401. W92. 1976. Citeseer, 1982.
ZHANG, J., AND MAMMADOV, M. A new method for solving linear ill-
posed problems. Applied Mathematics and Computation 218, 20
(June 2012), 10180–10187.

182
Índice de Palabras

análisis del error, 68 comparación de blucles, 23


animaciones, 8 componentes de un vector, 5
antisimétrica, 57 lógicos, 17, 19
aproximación de funciones, 111 configuración modo paralelo, 21
aritmética del computador, 59 conjunto de funciones
asignar valores, 2 continuas, 30
gráficos, 8 contenencia propia, 31
base, 50, 52 gráficas, 11
numérico, 60 definida positiva, 57, 107
bien condicionado, 108 definir una matriz en Matlab, 5
bits, 61 derivada, 30
borrar la pantalla, 2 ésima, 30
borrar variables, 2 desbordamiento por defecto, 62
bucle for, 21 desbordamiento por exceso, 62
bucle parfor, 22 determinante, 57
bucle while, 23, 26 diferenciabilidad, 26
característica, 61 diferencias divididas, 120
carpeta de trabajo, 17 difracción de la luz, 81
cifras decimales, 2 discontinuidad removible, 55
clc, 2 ecuación de Kepler, 81
clear all, 2 eliminación gaussiana con
cociente de diferencias, 95 pivoteo, 107
código del script, 16 error de redondeo unitario, 68
comando break, 26 cancelación, 70
comando else, 25 estrellas, 8
comando elseif, 25 factorización Cholesky, 107
comando if, 25 factorización Crout, 107
comando parfor, 24 factorización de Cholesky, 105
comando return, 25 factorización Doolitle, 107
comando sprintf, 26 factorización LU, 105
comando Taylor de fijar color, 8
Matlab, 40 asiganción, 3
comando while, 26 cuadrática, 53
comandos para generar matrices, 6 formato corto, 2
combinación lineal de columnas, 50 Fórmula de Lagrange, 119 183
fórmula de Taylor, 33 mal condicionado, 75
Fortran, 1 mantisa, 61
método, 91 geográficos, 8
función continua, 29, 55 Matlab, 1, 4
función diferenciable, 30 matrices especiales, 7
función lineal, 90 matrices especiales en Matlab, 7
funciones cardinales, 119 simétricas, 57
funciones de clase C, 31 matrices triangulares, 104
funciones de clase c infinito, 31 matriz definida positiva, 52
funciones en Matlab, 16 matriz elemental, 51
function, 16 matriz identidad, 49
Getting Started with Matlab, 4 matriz monomial, 57
graficar curvas, 13 simétrica, 107
graficar la superficie, 13 matriz transformada, 52
gráficas de barras, 8 mayor entero, 55
gráficas en Matlab, 8 método de la secante, 94
gráficos en tres dimensiones, 12 Método de Newton Raphson, 88
help, 3 modo paralelo, 21
Herón, 94 multiplicación anidada, 46
histogramas, 8 multiplicadores, 103
Horner, 46 no singular, 51, 52, 57
inestable, 75 nodos, 111
información adicional, 4 mayúscula de funciones, 45
integración por partes, 37 número en punto flotante
interpola, 111 normalizado, 61
interpolación de Hermite, 125, 129 número racional, 2
interpolación polinomial, 111 operación elemental, 57
intersección, 78 operaciones elementales, 49, 51
intervalo de convergencia, 28 operaciones en Matlab, 4
inversa por la derecha, 49 operaciones matriciales, 6
inversa por la izquierda, 49 operadores, 6
invertible, 51 operadores relacionales, 19
inyectiva, 52 orden de convergencia, 46
límites, 26 overflow, 62
linealización, 90 paramétricas, 8
líneas, 8 parfor, 21
longitud de palabra, 60 polinómica, 35
184 M-ficheros, 14 partición de intervalos, 4
permuta filas, 104 lineales, 48, 102
pivot, 103 sistema decimal, 60
pivoteo, 103 sistema octal, 60
poliedros, 8 sistemas equivalentes, 49
polinomio de sistemas lineales equivalentes, 49
MacLaurin, 35 sobreyectiva, 52
polinomio de Newton, 113 solución de sistemas linesales, 102
polinomio de Taylor, 35, 56 subfigura, 11
precisión simple, 62 subgráficas, 8
problemas inversos, 75 subgráficos, 11
problemas mal puestos, 75 submatrices, 6, 53
programación en Matlab, 14 subventana, 2
propiedades de las matrices, 49 sucesión, 26, 27
propiedades equivalentes de sucesión de funciones, 27
matrices, 52 sumas parciales, 27
radio de convergencia, 28 sumatoria, 34
rapidez de convergencia, 44 sustitución progresiva, 105
cuadrática, 46 Switch-Case, 19
rapidez de convergencia lineal, 46 tabla de datos, 111
rapidez de convergencia tangente, 90
superlineal, 46 teorema de Roll, 33
rat, 2 teorema de Rolle, 32
redondeo, 41, 67 teorema de Taylor, 39, 88
redondeo por defecto, 41 fórmula integral para el
redondeo por exceso, 41 residuo, 37
relaciones, 17 teorema de Taylor con la formula
Script, 14 integral para el residuo, 32
script, 16 teorema de valor intermedio, 30
secuencialmente, 14 teorema de valor intermedio, 81
serie, 27 teorema de valor medio, 32
serie convergente, 27 teorema del emparedado, 44
serie de potencias, 27, 32 cálculo, 32, 37
serie divergente, 27 teorema regla de la cadena, 31
significativo, 62 término error, 34
simétrica, 57 transpuesta, 7
simétrica, 53 triangulo de Pascal, 53
sistema binario, 60 truncamiento, 67
sistema de ecuaciones tutorial, 4 185
underflow, 62
presición, 2
valor propio, 52
valores propios, 53
vap, 2
variable asignada, 3
vecindad, 45
ventana de ayuda, 3
ventana de comandos, 1, 3
ventana interactiva, 4
ventana principal, 2
Workspace, 2

186
Símbolos

A.^n potencia usual de una matriz en Matlab. 7

an Términos de una sucesión o serie de números. 27

O(αn) notación O mayúscula de la sucesión αn. 43

`i funciones cardinales del polinomio de Lagrange. 119

C ∞ conjunto de funciones de clase c infinito. 31

C n conjunto de funciones de clase c n con n un natural


incluyendo el cero. 30

AT transpuesto de la matriz A. 57

(N)β número N en la base β. 60

o(αn ) notación o minúscula de la sucesión αn. 43

En Residuo del teorema de Taylor con la forma integral. 38

Rn Residuo del teorema de Taylor con la forma integral. 37

xT transpuesto del vector x. 53

% Hacer comentarios en Matlab. 23

f [x0 , x1 , ..., xn ] diferencias divididas. 122

∼= diferente en Matlab. 19

ε épsilon de la máquina. 73

f l número en punto flotante normalizado. 68

I ma. 50

In f símbolo en Matlab. 73

inv(A) inversa de una matriz en Matlab. 7

AAA factorización LU de la matriz A. 104

>= mayor o igual en Matlab. 19 187


<= menor o igual en Matlab. 19

NaN No numérico en Matlab. 19, 73

f (n) derivada n-ésima de f . 30

Pk polinomio de grado k. 112

* producto de matrices en Matlab. 7

ℝ3 Conjunto de ternas de reales, espacio tridimensional. 12, 13

& comando lógico y. 19

sk sumas parciales. 27

A' transpuesta conjugada de una matriz en Matlab. 7

C (A) conjunto de funciones continuas en A. 30

σA módulos de los valores propios de la matriz A. 23

1/ρ radio de convergencia. 28

σ(A) Valores propios de la matriz A. 23

188