Post on 21-Mar-2022
_________________________ Reservado todos los derechos (D.R.)
Alcides Ramos Calcina
Docente de la Universidad Privada San
Carlos
Víctor Alfredo Paniagua Gallegos
Docente de la Universidad Privada San
Carlos
El contenido del presente libro es responsabilidad de los autores, prohibida la reproducción
parcial o
978-612-47384-5-6
total sin permiso de los autores.
Editado por:
Universidad Privada San Carlos
Jr. Conde de Lemos N° 128
Puno - Perú
Telf.: 051-352884
E-mail: centro.investigacion@upsc.edu.pe
Editor:
Rosa Luz Farfan Solis
Diagramación:
Darwin Oliver Ramos Zamata
1ª edición, Octubre 2019. Tiraje 100 ejemplares
Hecho el depósito legal en la Biblioteca Nacional del Perú N° 2019 – 11371
ISBN:
Impreso en talleres de EMER Impresores
Jr. Deustua N° 243 – Puno
Telf. 051-200920
Email: emer_impresores@hotmail.com
Noviembre, 2019
MÉTODOS NÚMERICOS con VBA
PRESENTACIÓN
Para la elaboración del presente texto titulado “Métodos Numéricos 1”,
se tuvo mucho cuidado en la presentación de los conceptos y/o definiciones
de cada uno de los temas tratados en los diferentes capítulos. Este texto está
elaborado para el uso en cursos de Métodos Numéricos aplicados a la
ingeniería.
En esta primera parte, el texto consta de cuatro capítulos: los primeros
dos capítulos se presentan la introducción al cálculo numérico y la
aproximación del error, este último esencial para el desarrollo de los otros dos
capítulos siguientes que, tratan del cálculo de raíces de una ecuación y en la
parte final tratamos los temas de interpolación y extrapolación. En ese
sentido, no requiere de un conocimiento matemático profundo.
Así mismo, el conocimiento aplicado es producto de la experiencia
durante el tiempo de permanencia en la Universidad Privada San Carlos -
Puno.
Finalmente agradecemos a las personas que tengan a bien hacer llegar
sugerencias o recomendaciones, con el fin de mejorar su contenido.
Puno, setiembre del 2018.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
ÍNDICE PRESENTACIÓN ......................................................................................................... 4
Capítulo 1: CÁLCULO NUMÉRICO ............................................................................ 7
INTRODUCCIÓN .................................................................................................... 8
1. ETAPAS DE SOLUCIÓN DE UN PROBLEMA .............................................. 9
1.1. Definición del problema ............................................................................. 9
1.2. Modelamiento matemático ......................................................................... 9
1.3. Solución numérica ...................................................................................... 9
1.4. Análisis de los resultados ......................................................................... 11
2. NOTACIÓN ALGORÍTMICA......................................................................... 12
3. IMPLEMENTACIÓN DE ALGORITMOS ..................................................... 30
Capítulo 2: APROXIMACIÓN Y ANÁLISIS DEL ERROR ...................................... 35
INTRODUCCIÓN .................................................................................................. 36
1. APROXIMACIÓN ........................................................................................... 36
1.1. Mínimos Cuadrados ................................................................................. 37
2. PRECISIÓN Y EXACTITUD .......................................................................... 47
3. CIFRAS SIGNIFICATIVAS ............................................................................ 50
3.1. Reglas para establecer las cifras significativas de un número dado. ........ 50
Capítulo 3: MÉTODOS DE SOLUCIÓN DE RAÍCES DE ECUACIONES .............. 69
Capítulo 4: INTERPOLACIÓN POLINOMIAL ....................................................... 139
Apéndice A: INTRODUCCIÓN A LA PROGRAMACIÓN EN VISUAL BASIC
PARA APLICACIONES (VBA) ............................................................................... 173
BIBLIOGRAFIA ....................................................................................................... 211
MÉTODOS NÚMERICOS con VBA
8
INTRODUCCIÓN
Una etapa intermedia importante durante la solución de un problema concierne a la
elaboración de un algoritmo, el cual deberá ser posteriormente implementado en un
lenguaje de programación para la obtención de los resultados numéricos en un
computador.
Los Métodos Numéricos son una metodología para resolver problemas por intermedio
de un computador, siendo ampliamente utilizado por ingenieros y científicos. Una
solución a través de los métodos numéricos es siempre numérica, en cuanto los
métodos analíticos usualmente proporcionan un resultado en términos de funciones
matemáticas. Aunque muchas soluciones son una aproximación del resultado exacto,
que puede ser obtenida en grado creciente de exactitud. Una solución numérica es
calculada en cuanto un problema no tiene solución analítica, esto es común en las
ecuaciones diferenciales. Una integral indefinida
2xe dx
de gran utilidad en estadística, tiene función primitiva que no puede ser representada
explícitamente, por funciones elementales. El área bajo la curva descrita por 2xe de a
hasta b puede ser determinada por medio de algoritmos numéricos que son aplicables
a cualquier otra integral, no siendo, por tanto, necesario hacer sustituciones especiales
o incluso integrar por partes a fin de encontrar el resultado.
Para calcular un resultado numérico, son necesarias las operaciones aritméticas
(adición, sustracción, multiplicación y división) y lógicas (comparación, conjunción,
disyunción y negación). Considerando que estas son las únicas operaciones
matemáticas que los computadores son capaces de realizar, entonces los computadores
y los métodos numéricos forman una combinación perfecta. Es importante recordar
que el primer computador de gran tamaño totalmente electrónico, fue el ENIAC
(Electronic Numerical Integrator And Calculator), proyectado para hacer cálculos
balísticos, es actualmente en el mundo entero, el mayor computador dedicado a
realizar cálculos numéricos.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
9
1. ETAPAS DE SOLUCIÓN DE UN PROBLEMA
Dado un problema cualquiera, nos preguntamos ¿cómo resolverlo en el computador
utilizando los métodos numéricos? Será explicado, a partir de un ejemplo simple que
la solución de un problema puede ser obtenida en cuatro etapas: definición del
problema, modelamiento matemático (diseño), solución numérica (implementación) y
análisis de resultados (validación).
1.1. Definición del problema
En esta etapa, se define cual es el problema real a ser resuelto. Sea por ejemplo,
calcular a , a > 0 usando apenas las cuatro operaciones aritméticas.
1.2. Modelamiento matemático
El problema real es transformado en el problema original a través de una
formulación matemática. Del ejemplo,
2 2 0x a x a x a
El problema real, calcular a , a > 0, fue transformado al problema original, que
es determinar la raíz de una ecuación algebraica de grado 2.
Generalmente, el problema original posee más soluciones que el problema real.
En el ejemplo, + a y - a son las dos raíces de la ecuación algebraica.
1.3. Solución numérica
En esta etapa, usted elige el método numérico apropiado el problema original
derivado de la modelación matemática. Después de elegir el método, este se
describe por medio de un algoritmo, el cual es posteriormente implementado en
un computador para la obtención de los resultados numéricos.
Esta etapa puede ser subdividida en tres fases: elaboración del algoritmo,
codificación del programa y la ejecución del programa.
MÉTODOS NÚMERICOS con VBA
10
a) Elaboración del algoritmo
Un algoritmo es una descripción de un conjunto de comandos que, cuando es
activado, resulta en una sucesión finita de eventos. En lugar de implementar un
método directamente en un lenguaje de programación, es preferible describirlo
por medio de una notación algorítmica. Esto hace que sea posible abstraer los
detalles del lenguaje de programación de la computadora y concentrar sólo los
aspectos matemáticos del método.
Además, la descripción del método en notación algorítmica facilita su
implementación en cualquier lenguaje de programación. En la sección 2, se
presenta la notación algorítmica adoptada para describir los métodos numéricos
desarrollados en este texto.
b) Codificación del programa
En esta fase, el algoritmo es implementado un lenguaje de programación
escogido. Como los aspectos matemáticos del método ya fueron analizados en
la fase de elaboración del algoritmo, la cuestión ahora no es preocuparse por
los detalles del lenguaje adoptado. El apéndice A, muestra como pasar de la
notación algorítmica al lenguaje de programación Visual Basic para
Aplicaciones (VBA) en Excel.
c) Ejecución del programa
Finalmente, el código del programa obtenido de la implementación del
algoritmo en un lenguaje de programación debe ser editado en un archivo para
que pueda ser ejecutado por el computador. Si durante el procesamiento hay un
error lógico, es decir, la ejecución del programa produce resultados
inesperados, entonces se debe retornar a la fase de elaboración para corregir el
algoritmo.
Ejemplo 1.1. Para ejemplificar la etapa de solución numérica, en el ejemplo del
cálculo a , será utilizado el método de Newton-Raphson, el cual se describe en
el capítulo 3.
Sea x a , de donde se obtuvo: 2 0x a , entonces 2f x x a
por tanto, para encontrar una raíz de la función, se debe cumplir:
2( ) 0f x x a
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
11
La fórmula del método de Newton-Raphson, nos dice
1
'
k
k k
k
f xx x
f x
Sustituyendo f(x) y f’(x) en la expresión anterior, se tiene que
2
1 ,2 2 2
k k
k k k
k k
x a x ax x x
x x
es decir,
1
1
2k k
k
ax x
x
Este es un proceso iterativo para calcular a , a partir de un valor inicial 0x ,
haciendo uso de solo las operaciones aritméticas.
Entonces, calculemos la 9 , usando 0 1x , cuyos resultados se muestran en la
siguiente tabla:
i ix e = ix -3
0
1
2
3
4
5
1.0000
5.0000
3.4000
3.0235
3.0001
3.0000
2.0000
0.4000
0.0235
0.0001
0.0000
La columna ix muestra las sucesivas aproximaciones de 9 a cada i-ésima
iteración y la columna ix -3 muestra el error, es decir, la diferencia entre el valor
aproximado ix y el valor verdadero 3.
1.4. Análisis de los resultados
La adecuación de la solución numérica al problema real es verificada en esta
última etapa. Si la solución no se mostrara satisfactoria, se debería obtener un
nuevo problema original por medio de una nueva formulación matemática y
determinar una nueva solución numérica.
MÉTODOS NÚMERICOS con VBA
12
Ejemplo 1.2. Para el ejemplo de cálculo de la raíz cuadrada, si se asigna el valor
inicial 0 1x (para todo 0 0x ), entonces el proceso convergerá a -3, a pesar
de que es una raíz de 2 9 0f x x , no es 9 .
i ix e = ix -3
0
1
2
3
4
5
-1.0000
-5.0000
-3.4000
-3.0235
-3.0001
-3.0000
-8.0000
-6.4000
-6.0235
-6.0001
-6.0000
Algunos modelos matemáticos pueden producir soluciones que no tenga sentido
físico o químico como, por ejemplo, tiempo negativo, concentración compleja,
etc. El objetivo del análisis de los resultados es justamente distinguir cuál es la
solución válida entre varios proporcionados por el modelo matemático.
2. NOTACIÓN ALGORÍTMICA
La descripción de un algoritmo1, por medio de una notación algorítmica, mejora el
entendimiento, porque sólo los aspectos del razonamiento lógico se hacen hincapié,
sin ser necesario tener en cuenta los detalles de la implementación de un lenguaje de
programación. A pesar de la descripción en el apéndice de cómo implementar los
algoritmos en Visual Basic para Aplicaciones (VBA), debe de consultarse literatura
para obtener más material de referencia de los lenguajes de programación como
MatLab, C++, Pascal u otro que desee utilizar.
2.1. Concepto y características de algoritmos
El objetivo de este texto es enseñar a resolver problemas de métodos numéricos
mediante una computadora. El estudiante necesita prender a resolver problemas
de un modo riguroso y sistemático.
Una computadora es capaz de realizar “sólo” determinadas acciones sencillas,
tales como sumar, comparar o transferir datos, pero los problemas que
normalmente interesa resolver son más complejos.
1 Esta palabra deriva del nombre del matemático árabe Mohammed ibu-Musa al-Khowarizmi (800 d.C.).
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
13
Para resolver un problema real es necesario, en primer lugar, encontrar un método
de resolución y posteriormente, determinar la sucesión de acciones sencillas
(susceptibles de ser ejecutadas por la computadora) en que se descompone dicho
método.
No todos los métodos de solución de un problema pueden ser puestos es práctica
en una computadora. Para que un procedimiento pueda ser implantado en un
ordenador debe ser:
Preciso: Definirse de manera rigurosa, sin dar lugar a ambigüedades.
Definido: Si se sigue un algoritmo dos veces, se obtendrá el mismo resultado.
Finito: Debe terminar en algún momento.
Un procedimiento o método para resolver un problema que cumpla los requisitos
anteriores se dice que es un algoritmo. Se puede dar por tanto la siguiente
definición:
2.2. Representación de los algoritmos
Para representar un algoritmo se debe utilizar algún método que permita
independizar dicho algoritmo del lenguaje de programación elegido. Esto
permitirá que un algoritmo pueda ser codificado indistintamente en cualquier
lenguaje. Para conseguir este objetivo se necesita que el algoritmo sea
representado gráficamente o numéricamente, de modo que las sucesivas acciones
no dependan de la sintaxis de ningún lenguaje de programación, sino que la
descripción pueda servir fácilmente para su transformación en un programa, es
decir, su codificación.
Los métodos usuales para representar un algoritmo son:
Diagrama de flujo
Diagrama de N-S2
Lenguaje de especificación de algoritmos: Pseudocódigo
2 Desarrollado en 1972 por Isaac Nassi y Ben Shneiderman.
Un algoritmo se puede de definir como una secuencia de instrucciones que
representa un modelo de solución para determinado tipo de problemas. O bien
como un conjunto de instrucciones que realizadas en orden conducen a obtener la
solución de un problema.
Definición de Algoritmo
MÉTODOS NÚMERICOS con VBA
14
A continuación, se realizará una descripción breve de cada método, en el presente
capitulo haremos uso del método de Pseudocódigos, por su facilidad y similitud al
lenguaje natural.
d) Diagramas de flujo
Los diagramas de flujo son representaciones graficas de secuencias de pasos
a realizar. Cada operación se representa mediante un símbolo normalizado el
Instituto Norteamericano de Normalización (ANSI - American National
Standars Institute). Las líneas de flujo indican el orden de ejecución. Algunos
de los símbolos principales se muestran en la Figura 1.1
Figura 1.1: Símbolos en diagramas de flujo.
e) Diagramas N-S
El diagrama N-S de Nassi-Schneiderman (conocido también como Chapin) es
como un diagrama de flujo en el que se omiten las flechas de unión y las
cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas y
como en los diagramas de flujo se pueden escribir diferentes acciones en una
caja.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
15
Figura 1.2: Ejemplo de diagrama de N-S.
f) Pseudocódigo
Los pseudocódigos describen un algoritmo de forma similar a un lenguaje de
programación, pero sin su rigidez, de forma más parecida al lenguaje natural.
Presentan la ventaja de ser más compactos que los diagramas de flujo, más
fáciles de escribir para las instrucciones complejas y más fáciles de transferir
a un lenguaje de programación. El pseudocódigo no está regido por ningún
estándar.
Figura 1.3: Ejemplo de un Pseudocódigo.
2.3. Estructura de un algoritmo
La estructura de algoritmo sirve para organizar a los elementos que aparecen en
él. En esencia un algoritmo está constituido por los siguientes tres elementos:
Datos: Lo que el algoritmo recibe, procesa y entrega como resultado.
Instrucciones: Las acciones o procesos que el algoritmo realiza sobre los
datos.
Estructuras de control: Las que determinan el orden en que se ejecutarán las
instrucciones del algoritmo.
En pseudocódigo, todos los algoritmos tienen la misma estructura, la cual viene
definida por tres secciones:
Cabecera
Declaraciones
Cuerpo
Algoritmo: Sumar
Variables:
Entero a, b, c
Inicio
Escribir(“Ingrese el primer n°: ”)
Leer(a)
Escribir(“Ingrese el segundo n°: ”)
Leer(b)
c ← a + b
Escribir(“La suma es: ”, c)
Fin
MÉTODOS NÚMERICOS con VBA
16
a) Cabecera
En la cabecera de un algoritmo se debe indicar el nombre (identificador)
asignado al mismo. La sintaxis es:
Algoritmo < nombre_del_algoritmo >
También,
{ Objetivo: < objetivo_del_algoritmo >}
debe ser utilizado para describir la finalidad del algoritmo. Los datos
necesarios para la ejecución de un algoritmo son solicitados a través de
comando.
b) Declaraciones
En esta sección se declaran las constantes, los tipos de datos y las variables
que se usan en el algoritmo. La sintaxis es:
Constantes:
< declaraciones_de_constantes >
Tipo_de_datos:
< declaraciones_de_tipo_de_datos >
Variables:
< declaraciones_de_variablesconstantes >
c) Cuerpo
En el cuerpo se describen todas las instrucciones del algoritmo. La sintaxis
es:
Inicio
< instrucción_1 >
< instrucción_2 >
< instrucción_3 >
…
< instrucción_n >
Fin
Inicio y fin son palabras reservadas que marcan el principio y final de la
sección cuerpo, que es donde está el bloque de instrucciones principal del
algoritmo.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
17
Ejemplo 1.3. Se quiere diseñar un algoritmo de un programa que, pida por teclado
el radio (dato real) de una circunferencia, calcule el área de la circunferencia y
muestre por pantalla el resultado (dato real).
Nota: Área de una circunferencia: 2Área radio
El algoritmo puede escribirse de la siguiente forma:
Algoritmo: Area_de_una_circunferencia
{Objetivo: Mostrar la estructura de un algoritmo}
Constantes:
PI = 3.141592
Variables:
real area, radio
Inicio
Escribir (“Introduzca el radio: ”)
Leer (radio)
area ← PI * radio ^ 2
Escribir (“El área es: ”, area)
Fin
Ejemplo 1.4. Calcular una altura de una persona en pulgadas (1 pulgada=2.54 cm)
y pies (1 pie = 12 pulgadas), a partir de la altura en centímetros, que se introduce
por el teclado.
El algoritmo sería:
Algoritmo: Altura_de_una_persona
{Calcula la altura de una persona en pulgadas y pies}
Variables:
real altura, pulgadas, pies
Inicio
Escribir (“Introduzca la altura en cm: ”)
Leer (altura)
pulgadas ← altura/2.54
pies ← pulgadas/12
Imprimir (“La altura en pulgadas es: ”, pulgadas)
Imprimir (“La altura en pies es: ”, pies)
Fin
MÉTODOS NÚMERICOS con VBA
18
2.4. Variables y comentarios
Una variable corresponde una posición de menoría del computador donde está
almacenado un determinado valor. Las variables son representadas por
identificadores que son cadenas de caracteres alfanuméricos, pueden los
elementos de los vectores y las matrices ser referenciadas por subíndices o
índices. Por ejemplo, vi, o v(i) y mij o m(i,j).
Un comentario es un texto insertado en cualquier parte del algoritmo para
aumentar su claridad. Ese texto debe ser delimitado por llaves { < texto > }, como,
por ejemplo, { cálculo de la raíz }. Así mismo, podemos observar otro caso en el
ejemplo 1.4.
2.5. Expresiones y comandos de atribución
Existen tres tipos de expresiones: aritméticas, lógicas y literales, dependiendo de
los tipos de operadores y de las variables involucradas.
Las expresiones son combinaciones de constantes, variables, símbolos de
operación, paréntesis y nombres de funciones especiales.
a) Aritméticas
Una expresión aritmética es aquella cuyos operadores son aritméticos y cuyos
operadores son constantes y/o variables aritméticas. La notación es semejante
a aquella utilizada para representar una formula como:
2 4 * *b a c , cos 2 x ó masa*velocidad
La Tabla 1.1 muestra los operadores aritméticos que aparecen en los
algoritmos descritos en este texto.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
19
Tabla 1.1: Operadores aritméticos.
Operador Descripción Tipo de operación
+
-
*
/
div
mod
++
--
Suma
Resta
Multiplicación
División
División entera
Módulo o resto
Incremento
Decremento
Entero o real
Entero o real
Entero o real
Real
Entero
Entero
Entero
Entero
b) Lógicas
Las expresiones lógicas o booleana, cuyo valor es siempre verdadero (V) o
falso (F). En la Tabla 1.2 se muestra los operadores de relación y lógicos.
Tabla 1.2: Operadores lógico.
Relación Lógico
Operador Descripción Operador Descripción
<
>
=
<=
>=
< >
Menor que
Mayor que
Igual
Menor igual
Mayor igual
Diferente
no
y
o
Negación
Conjunción
Disyunción
c) Funciones
Las operaciones que se requieran en los programas exigen en numerosas
ocasiones, además de las operaciones aritméticas básicas, un número
determinado de operadores especiales que se denominan funciones.
La Tabla 1.3 recoge las funciones más usuales, siendo “x” el argumento de la
función.
MÉTODOS NÚMERICOS con VBA
20
Tabla 1.3: Funciones internas.
Función Descripción Tipo de operación
abs(x)
exp(x)
ln(x)
log10(x)
redondeo(x)
trunc(x)
raiz2(x)
seno(x)
cos(x)
Valor absoluto de x
Exponente de x
Logaritmo neperiano
Logaritmo decimal
Redondeo de x
Truncamiento de x
Raíz cuadrada de x
Seno de x
Coseno de x
Entero o real
Entero o real
Entero o real
Entero o real
Real
Real
Entero o real
Entero o real
Entero o real
d) Asignación
El símbolo ←, es usado para atribuir o asignar el resultado de una expresión
a una variable, es decir,
< variable > ← < expresión >
Por ejemplo, velocidad ← desplazamiento/tiempo.
Ejemplo 1.5. A continuación escribiremos las expresiones matemáticas en forma de
expresiones algorítmicas.
Matemática Algorítmica
9y raiz2(3*y)
5 1
3
z
x y y
5/(x+y) + (1-z)/(3*y)
42
530 z raiz2(30 + (z^(4/5)) )
322
yx
q
m z
y/((q/m)+(2/z)) + 2*(x^3)
2 2a b a^2 + b^2
Ejemplo 1.6. Utilizar las expresiones y comandos de atribución para obtener la
solución de la ecuación cuadrática ax2 + bx + c = 0. Las raíces de la ecuación son:
2 4
2
b b acx
a
O lo que es igual:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
21
2
1
4
2
b b acx
a
2
2
4
2
b b acx
a
Las expresiones serían escritas como:
x1 = (-b+raíz2((b^2)-4*a*c)/(2*a)
x2 = (-b-raíz2((b^2)-4*a*c)/(2*a)
2.6. Comandos de entrada salida
El comando
Leer <variable_1>, <variable_2>, …, <variable_n>
Esta instrucción lee “n” valores desde el teclado y los asigna a las “n” variables
mencionadas. Pueden incluirse una o más variables, por lo tanto el comando leerá
uno o más valores. Por su parte, el comando
Escribir <variable_1>, <variable_2>, …, <variable_n>
también puede ser
Imprimir <variable_1>, <variable_2>, …, <variable_n>
debe ser utilizado para indicar donde ciertos valores de interés están disponibles
en el programa y pueden ser escritos o imprimidos en algún dispositivo externo.
Ejemplo 1.7. Elaborar un algoritmo para leer una temperatura en grados
Fahrenheit y convertirlo a grados Celsius.
Algoritmo: Conversion_a_grados
{Convierte grados Fahrenheit a grados Celsius}
Variables:
real Fahrenheit, Celsius
Inicio
Escribir (“Ingrese la T° en °F: ”)
Leer (Fahrenheit)
Celsius ← (Fahrenheit - 32)*5/9
Imprimir Fahrenheit, Celsius
Fin
MÉTODOS NÚMERICOS con VBA
22
2.7. Estructuras condicionales
El uso de una estructura condicional hace posible la elección de comandos que se
ejecutarán cuando cierta condición se cumple o no. Esta condición es
representada por una expresión lógica. Las estructuras condicionales pueden ser
simples, compuestas o múltiples.
a) Estructura condicional simple
Esta estructura tiene la forma:
Si < condición_lógica > entonces
< instrucciones >
Fin_si
En este caso, las instrucciones serán ejecutadas, si y solo si, la expresión
lógica tiene como resultado el valor verdadero.
Ejemplo 1.8. Implementar un algoritmo para calcular el logaritmo decimal de
un número positivo.
Algoritmo: Logaritmo_decimal
{Calcula el logaritmo decimal}
Variables:
Entero x
Real LogD
Inicio
Leer (x)
Si (x > 0) entonces
LogD ← log10(x)
Imprimir x, LogD
Fin_si
Fin
b) Estructura condicional compuesta
Cuando existen dos alternativas posibles, se debe usar una estructura de la
forma:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
23
Si < condición_lógica > entonces
< instrucciones_1 >
Sino
< instrucciones_2 >
Fin_si
Si la expresión lógica tuviese como resultado el valor verdadero, entonces la
secuencia de instrucciones 1 serán ejecutadas y la secuencia de instrucciones
2 no serán ejecutadas.
Por otro lado, si el resultado de expresión lógica es falso, entonces será la
lista de instrucciones 2 la única en ejecutarse.
Ejemplo 1.9. Implementar un algoritmo para evaluar la función modular.
Algoritmo: Función_modular
{Evalúa la función modular}
Variables:
Real x, fx
Inicio
Leer (x)
Si (x >= 0) entonces
fx ← 2*x
Sino
fx ← -2*x
Fin_si
Imprimir x, fx
Fin
c) Estructura condicional múltiple
La secuencia de instrucciones ejecutadas depende del valor de una variable
numérica, y tiene la siguiente forma:
Según_sea < variable > hacer
< numero_1>: < instrucciones_1 >
< numero_2>: < instrucciones_2 >
Sino: < instrucciones >
Fin_segun
MÉTODOS NÚMERICOS con VBA
24
Esta instrucción permite ejecutar opcionalmente varias acciones posibles,
dependiendo del valor almacenado en una variable de tipo numérico. Al
ejecutarse, se evalúa el contenido de la variable y se ejecuta la secuencia de
instrucciones asociada con dicho valor.
Ejemplo 1.10. Se quiere implementar un algoritmo que escriba los nombres
de la semana en función del valor de una variable DIA introducido por
teclado.
Los días de la semana son 7; por consiguiente, el rango de los valores de DIA
será 1, 2, 3, 4, 5, 6 y 7, y en caso que la variable tome un valor fuera de este
rango se deberá mostrar un mensaje de error.
Algoritmo: Días_semana
Variables:
entero DIA
Inicio
Leer (DIA)
Según_sea (DIA) hacer
1: escribir(‘LUNES’)
2: escribir(‘MARTES’)
3: escribir(‘MIERCOLES’)
4: escribir(‘JUEVES’)
5: escribir(‘VIERNES’)
6: escribir(‘SABADO’)
7: escribir(‘DOMINGO’)
Sino
escribir(‘ERROR’)
Fin_segun
Fin
2.8. Estructuras de repetición
Una estructura de repetición hace que una secuencia de comandos sea ejecutada
repetitivamente hasta que una condición de interrupción dado sea satisfecha.
Existen, básicamente, dos tipos de estructuras, dependiendo si el número de
repeticiones es definido o indefinido.
a) Número de repeticiones definido
Cuando se plantea con anticipación cuantas veces la estructura debe ser
repetida, se puede usar la siguiente estructura:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
25
Para <variable> ← <valor_inicial> hasta <valor_final> [paso] hacer
< instrucciones >
Fin_para
Al ingresar al bloque, la variable recibe el valor inicial y se ejecuta la
secuencia de instrucciones que forma el cuerpo del ciclo. Luego se
incrementa la variable en <paso> unidades y se evalúa si el valor almacenado
en <variable> superó al <valor final>. Si esto es falso se repite hasta que
<variable> supere a <final>. Si se omite la cláusula <paso>, la variable se
incrementará en 1.
Ejemplo 1.11. Implemente un algoritmo que muestre la suma de los “n”
primero números impares es igual al cuadrado de “n”.
Algoritmo: Primeros_impares
{Objetivo: Verificar propiedad de los n° impares}
Variables:
entero n, i, suma
Inicio
Leer (n)
suma ← 0
Para i←0 hasta 2*n-1 paso 2 hacer
suma ← suma + i
Fin_para
Imprimir suma, n^2
Fin
b) Número de repeticiones indefinido
Este tipo de estructura de repetición presenta la siguiente forma:
Mientras < condición > hacer
< instrucciones >
Fin_mientras
Al ejecutarse esta instrucción, la condición es evaluada. Si la condición
resulta verdadera, se ejecuta una vez la secuencia de instrucciones que
forman el cuerpo del ciclo. Al finalizar la ejecución del cuerpo del ciclo se
MÉTODOS NÚMERICOS con VBA
26
vuelve a evaluar la condición y, si es verdadera, la ejecución se repite. Estos
pasos se repiten mientras la condición sea verdadera.
También se puede hacer uso de la instrucción Repetir-Hasta. Que ejecuta
una secuencia de instrucciones hasta que la condición sea verdadera, la cual
tiene la forma siguiente:
Repetir
< instrucciones >
Hasta_que < condición >
Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el
cuerpo del ciclo se ejecuta una vez y luego se evalúa la condición. Si la
condición es falsa, el cuerpo del ciclo se ejecuta nuevamente y se vuelve a
evaluar la condición. Esto se repite hasta que la condición sea verdadera.
Note que, dado que la condición se evalúa al final, las instrucciones del
cuerpo del ciclo serán ejecutadas al menos una vez.
Ejemplo 1.12. Implemente un algoritmo que, lea por teclado un número que
represente una cantidad de números que a su vez se leerán también por
teclado. Calcular la suma de todos esos números.
Algoritmo: Suma_numeros
Variables:
entero N, total
real numero, suma
Inicio
Leer (N)
total ← N
suma ← 0
Mientras (total > 0)
Leer (numero)
suma ← suma + numero
total ← total - 1
Fin_mientras
Imprimir N, suma
Fin
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
27
2.9. Más ejemplos de algoritmos
Ejemplo 1.13. Escriba un algoritmo que, dado un vector x con n componentes,
calcule la media aritmética x y la desviación estándar s2 de sus elementos,
sabiendo que
1
1 n
i
i
x xn
y
2
2 2
1 1
1 1
1
n n
i i
i i
s x xn n
Algoritmo: Media_desviación
{Calcula la media aritmética y la desviación estándar}
Variables:
entero n, x
real media, desv
Inicio
Leer (n, x) {tamaño y elementos del vector}
suma ← 0
suma2 ← 0
Para i←1 hasta n hacer
suma ← suma + x(i)
suma2 ← suma2 + x(i)^2
Fin_para
media ← suma/n
desv ← raíz2((suma2-(suma^2)/n)/(n-1))
Imprimir media, desv
Fin
Ejemplo 1.14. Escriba un algoritmo que determine el mayor elemento en cada fila
de una matriz A de dimensión m×n.
Algoritmo: Matriz_mayor
{Determina el mayor elemento de cada línea}
Variables:
MÉTODOS NÚMERICOS con VBA
28
entero A, m, n, mayor
{n° de filas, n° de columnas y elementos de la matriz}
Inicio
Leer (A, m, n)
Para i←1 hasta m hacer
mayor(i) ← A(i,j)
Para j←2 hasta n hacer
Si A(i,j)>mayor(i) entonces
Mayor(i) ← A(i,j)
Fin_si
Fin_para
Escibir i, mayor(i)
Fin_para
Fin
Ejemplo 1.15. Escriba un algoritmo que, calcule el valor de π, con precisión dada,
utilizando la serie
1 1 1 14 1
3 5 7 9
Cabe señalar que esta no es la manera más eficiente de calcular π, pero sirve para
ilustrar el uso de la estructura de repetición.
Algoritmo: Calcular_PI
{Calcula el valor de PI}
Variables:
entero denominador, signo
real precision, suma, PI
Inicio
Leer (precision)
suma ← 1
signo ← -1
denominador ← 3
Repetir
suma ← suma + signo/denominador
signo ← -signo
denominador ← denominador + 2
Hasta_que (1/denominador < precisión)
PI ← 4*suma
Fin
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
29
Ejemplo 1.15. Escriba un algoritmo que, lea un número (por ejemplo 175) y
obtenga el número inverso (por ejemplo 571).
Algoritmo: Invertir_número
Variables:
entero num, digitosig
Inicio
Leer (num)
Escribir (‘numero: ’, num)
Escribir (‘numero en orden inverso: ’)
Hacer
digitosig ← mod(num,10)
Escribir (digitosig)
num ← div(num,10)
Mientras (num > 0)
Fin
Ejemplo 1.16. Escriba un algoritmo que, calcule el factorial de un número,
utilizando la estructura Para.
Recordemos que el factorial de n se expresa de la siguiente forma:
! 1 2 3 3 2 1n n n n n
Algoritmo: Factorial_número
Variables:
entero i, n
real factorial
Inicio
Leer (n)
factorial ← 1
Para i←1 hasta n hacer
factorial ← factorial * i
Fin_para
Escribir (‘El factorial de ’, N, ‘es ‘, factorial)
Fin
MÉTODOS NÚMERICOS con VBA
30
3. IMPLEMENTACIÓN DE ALGORITMOS
Una de las cuatro etapas en la solución de un problema es la solución numérica, la
cual puede ser subdividida en tres fases: elaboración del algoritmo, codificación del
programa y procesamiento del programa. En las secciones anteriores fue propuesta
una notación algorítmica y se mostró como elaborar un algoritmo a partir de una
formulación matemática. La próxima fase es la codificación del programa en el
lenguaje de programación escogido. En esta sección será mostrará ejemplos de
implementación de algoritmos en el lenguaje de programación Visual Basic para
Aplicaciones (VBA), dado que, en el apéndice A se muestra la introducción a este
lenguaje de programación con una gama de ejercicios resueltos y propuestos.
Ejemplo 1.17. Implemente en VBA el algoritmo del Ejemplo 1.16.
Código VBA N° 1.1: Factorial de un número
Sub factorial()
'calcula el factorial de un número
Dim i, n As Integer
Dim factorial As Double
n = InputBox("Ingrese el número: ")
factorial = 1
For i = 1 To n
factorial = factorial * i
Next
MsgBox "El factorial es " & factorial
End Sub
Al ejecutar el programa, nos muestra un cuadro de ingreso de la información (ver
Figura 1.4), luego hacemos click en Aceptar y nos muestra el resultado en cuadro de
dialogo, ver Figura 1.5.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
31
Figura 1.4: Cuadro de ingreso de datos.
Figura 1.5: Cuadro de resultado.
MÉTODOS NÚMERICOS con VBA
32
EJERCICIOS CAP. 1
1. Hacer un pseudocódigo que se ingrese dos números por teclado e imprima la suma,
y resta de dichos números.
2. En el ejercicio 1 aumentar en la impresión la multiplicación y la división de los
números. ¿Qué cambios se tiene que realizar en la declaración de variables?
3. Construya un pseudocódigo que, al recibir como datos la longitud y el peso de un
objeto expresados en pies y libras, imprima los datos de este objeto, pero
expresados en metros y kilos, respectivamente (Nota: 1 pie = 0.09290 metros y 1
libra = 0.45359 kilogramos).
4. Una persona compro una estancia. La extensión de la estancia está especificada en
acres. Construya un pseudocódigo que, al recibir como dato la extensión de la
estancia en acres, calcule e imprima la extensión de la misma en hectáreas. (Nota:
1 acre = 4047 m2 y 1 hectárea = 10,000 m2).
5. Construya un pseudocódigo que, al recibir como datos los tres lados de un
triángulo, calcule e imprima su área. Ésta se puede calcular aplicando la siguiente
formula:
Area p p a p b p c
p a b c / 2
6. Implemente un seudocódigo y el correspondiente programa en VBA que, al recibir
como dato el promedio de un alumno en un curso universitario, escriba “aprobado”
en caso de que el promedio sea satisfactorio, es decir mayor o igual a 10.5.
7. Construya un pseudocódigo y el correspondiente programa en VBA que, al recibir
como dato el precio de un producto importado, incremente 15% y el mismo precio
si es inferior a S/. 5000, además escriba el nuevo precio del producto.
8. Construya un pseudocódigo y el correspondiente programa en VBA que, al recibir
como datos tres valores enteros R, T y Q, determine si los mismos satisfacen la
siguiente expresión, y que, en caso afirmativo, escriba los valores correspondientes
de R, T y Q.
R4 – T3 + 4 * Q2 < 820
9. Implemente un seudocódigo y el correspondiente programa en VBA que, al recibir
como datos dos variables de tipo entero, obtenga el resultado de la siguiente
función:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
33
T / 5 Si: OP = 1
T **T Si: OP = 2f (T)
6*T / 2 Si: OP = 3, 4
1 Otros caso
Datos: OP y T
Donde:
OP es una variable de tipo entero que representa el cálculo a realizar.
T es una variable de tipo entero que se utiliza para el cálculo de la función.
10. Construya un pseudocódigo y programa en VBA que, al recibir como datos los
salarios de 5 profesores de una universidad, obtenga el total de la nómina.
i Nombres Salario (S/.)
1
2
3
4
5
Juan Torres Pérez
Soyla Baca Corrales
Pedro Pinto Cuadros
Mike Ccala Tito
Diego Godoy Cruz
1200.00
1360.00
750.00
1500.00
980.00
11. Construya un pseudocódigo y programa en VBA que, al recibir como datos “n”
números enteros, obtenga solamente la suma de números positivos.
12. Construya un pseudocódigo y programa en VBA que, imprima y cuente los
múltiplos de 3 desde la unidad hasta un número que introducimos por teclado.
13. Construya un pseudocódigo y programa en VBA que, al recibir como datos un
grupo de números naturales positivos, calcule el cuadrado de estos números.
Imprima el cuadrado del número y al final la suma de los cuadrados. Si se ingresa
0 como último dato indica que no hay más números que ingresar.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
35
Capítulo 2
Capítulo 2: APROXIMACIÓN Y ANÁLISIS DEL
ERROR
MÉTODOS NÚMERICOS con VBA
36
INTRODUCCIÓN
En la práctica del cálculo numérico es importante tener en cuenta que las soluciones
calculadas por el computador no son soluciones matemáticas exactas. La precisión de
una solución numérica puede verse disminuida por diversos factores, algunos de
naturaleza sutil, y la comprensión de estas dificultades pueden guiarnos a menudo a
desarrollar o a construir algoritmos numéricos adecuados.
Por consiguiente, los métodos numéricos ofrecen soluciones aproximadas muy
cercanas a las soluciones exactas. La discrepancia entre una solución verdadera y una
aproximada representa un error.
En el campo de la aplicación profesional, los errores pueden resultar costosos, y en
algunas ocasiones catastróficos.
Por ello, los errores se deben:
Identificar
Cuantificar
Minimizar
Los Métodos Numéricos es una materia de Cálculo o Matemáticas Aplicada, que
muestra cómo a través de fórmulas e iteraciones podemos obtener resultados bastante
aproximados para diversos problemas que se pueden plantear.
En este capítulo se estudia dos de los errores más comunes los errores de redondeo y
truncamiento. Los errores de redondeo se deben a que la computadora tan sólo
representa cantidades con un número finito de dígitos. Los errores de truncamiento
representan la diferencia entre una formulación matemática exacta de un problema y
su aproximación obtenida por un método numérico.
1. APROXIMACIÓN
En ocasiones se tiene un conjunto de datos experimentales y se desea hallar una
función analítica que los represente de forma satisfactoria. Para ello es necesario hacer
una aproximación de la función a los datos. Entre los métodos más utilizados para
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
37
aproximación tenemos: Mínimos Cuadrados, Transformada Rápida de Fourier y La
Serie de Taylor. En este capítulo mostraremos con detalle el método de mínimos
cuadrados y método de Taylor.
1.1. Mínimos Cuadrados
Los mínimos cuadrados es un método basado en minimizar el error entre los datos
y la función de aproximación. Para un conjunto de datos
1 1 2 2, , , , , ,n nx y x y x y , si y f x es una función de aproximación, la
suma de los cuadrados de los errores es:
2
1
n
i i
i
R f x y
Y debe minimizarse. En el caso de una recta, se tiene: i if x a bx
2
1
n
i i
i
R a bx y
Para minimizar el error debe cumplirse 0
R
a, 0
R
b, entonces
1
2 0
n
i i
i
Ra bx y
a
1
2 0
n
i i i
i
Ra bx y x
b
De donde surge el sistema de ecuaciones lineal
1 1
n n
i i
i i
b x an y (1)
2
1 1 1
n n n
i i i i
i i i
b x a x x y (2)
MÉTODOS NÚMERICOS con VBA
38
Las ecuaciones (1) y (2) se les conoce como Ecuaciones Normales, despejando,
los parámetros estimados son:
a y bx ……… 1ra Ecuación Normal.
1
2 2
1
ˆ
n
i i
i
n
i
i
x y nyx
b
x nx
…….. 2da Ecuación Normal.
La cantidad b se denomina coeficiente de regresión de Y sobre X.
Siendo las medias o promedios de las variables estadísticas:
1
n
i
i
x
xn
; 1
n
i
i
y
yn
Ejemplo 2.1 Se tienen los siguientes datos de la parte elástica de un ensayo de
tensión realizado con una probeta, y se desea conocer el módulo de elasticidad
del material:
Deformación
[mm/mm]
Esfuerzo
[MPa]
0 0
0.001 20.5
0.002 25.2
0.003 35.4
0.004 41.6
0.005 44.2
0.006 50.3
Sea entiende que el módulo de elasticidad (y = f(x): deformación) depende de la
parte elástica del material (x: deformación), por consiguiente, planteamos la
siguiente función de relación de las variables: f(x) = a + bx.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
39
Para encontrar la función de aproximación f(x), en Excel realizamos utilizando la
herramienta Análisis de Datos la cual deberá estar previamente instalada, debido
a que esta no lo está. Para ello, realizamos los siguiente: Archivo / Opciones y
en la ventana de opciones de Excel seleccionamos Complementos, luego
hacemos clic en el botón Ir… finalmente seleccionamos Herramienta para
análisis y Aceptar (Ver figura 1.1).
Figura 2.1: Ventana de complementos de Excel.
A continuación, realizamos los siguientes pasos:
Primero copiamos la información a una hoja de cálculo, como se
muestra en la figura 2.2.
En la pestaña Datos seleccionamos la opción Análisis de datos recién
instalada. Y en la ventana de dialogo elegimos Regresión y luego
Aceptar.
La figura 2.3 muestra la forma de ingreso de los datos.
MÉTODOS NÚMERICOS con VBA
40
Figura 2.2: Datos en la hoja de cálculo.
Figura 2.3: Opciones de regresión.
Nos muestra los siguientes resultados en la figura 2.4.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
41
Figura 2.4: Resultados del análisis de regresión.
En la figura 2.4 se observa un cuadro de las estadísticas de la regresión, como:
el coeficiente de correlación y de determinación, este último nos indica el grado
de relación de las variables x e y que en este caso es de 92.3%. Así mismo, nos
muestra un cuadro de Análisis de varianza que permite validar la función de
aproximación (modelo lineal), siendo el valor critico de F (Prob = 0.00057)
menor a l nivel de significancia ( = 0.05), por tanto, la función de aproximación
se ajusta a un modelo lineal.
El siguiente cuadro nos muestra la estimación de los parámetros de la función de
aproximación (Coeficientes):
Coeficientes
Intercepción 8.025
Variable X1 7667.857143
Siendo la función de aproximación: f(x) = 8.025 + 7667.857143x.
MÉTODOS NÚMERICOS con VBA
42
Con esta función se obtiene los Pronósticos Y que permite calcular los Residuos
(errores). Esto se puede ver más claramente en el grafico 2.1 de la curva de
regresión ajustada.
Gráfico 2.1: Curva de Regresión Ajustada.
1.1. Serie de Taylor
La serie de Taylor de una función f(x) infinitamente derivable (real o compleja)
definida en un intervalo abierto (a-r, a+r) se define como la siguiente suma:
0 !
nn
n
f af x x a
n
Aquí, n! es el factorial de n y f (n)(a) indica la n-ésima derivada de f en el punto a.
Si esta serie converge para todo x perteneciente al intervalo (a-r, a+r) y la suma
es igual a f(x), entonces la función f(x) se llama analítica. Para comprobar si la
serie converge a f(x), se suele utilizar una estimación del resto del teorema de
Taylor. Una función es analítica si y solo si se puede representar con una serie de
potencias; los coeficientes de esa serie son necesariamente los determinados en la
fórmula de la serie de Taylor.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
43
Si a = 0, a la serie se le llama serie de MacLaurin.
Esta representación tiene tres ventajas importantes:
La derivación e integración de una de estas series se puede realizar
término a término, que resultan operaciones triviales.
Se puede utilizar para calcular valores aproximados de la función.
Es posible demostrar que, si es viable la transformación de una función
a una serie de Taylor, es la óptima aproximación posible.
Algunas funciones no se pueden escribir como serie de Taylor porque tienen
alguna singularidad.
Definición.- La serie de Taylor de una función f de números reales o complejos
que es infinitamente diferenciable en un entorno de números reales o complejos a,
es la serie de potencias:
2 3' '' '''
1! 2! 3!
f a f a f af x x a x a x a
que puede ser escrito de una manera más compacta como
0 !
nn
n
f af x x a
n
donde n! es el factorial de n y f (n)(a) denota la n-ésima derivada de f en el punto
a; la derivada cero de f es definida como la propia f y (x − a)0 y 0! son ambos
definidos como uno.
Ejemplo 2.2 Calcule la serie de Taylor para xe .
Solución:
Si xf x e , derivando tenemos:
' xf x e
'' xf x e
''' xf x e
MÉTODOS NÚMERICOS con VBA
44
4 xf x e
n xf x e para toda x,
Por tanto, utilizando la definición de desarrollo de Taylor (ó de McLaurin) se
obtiene:
Sea xf x e . Es entera y n xf x e ,
00 1n
f e n N.
Luego:
20 1 3 41 1 1 1 1
0 0 0 0 00! 1! 2! 3! 4!
xe x x x x x
2 3 4
11! 2! 3! 4!
x x x x xe
Generalizando
2 3 4
0
11! 2! 3! 4! ! !
n nx
n
x x x x x xe
n n
0 !
nx
n
xe
n
, x
Series de Taylor notables
A continuación se enumeran algunas series de Taylor de funciones importantes.
Todos los desarrollos son también válidos para valores complejos de x.
0 !
nx
n
xe
n
, x
1
1
1ln 1
n
n
n
x xn
, para |x| < 1
0
1
1
n
n
xx
, para |x| < 1
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
45
2 1
0
1sen
2 1 !
n
n
n
x xn
, x
2
0
1cos
2 !
n
n
n
x xn
, x
Ejemplo 2.3 Implemente en Excel la aproximación de xe a través de la serie de
Taylor desarrollado en el ejemplo 2.2, con 10 iteraciones.
Para implementar la aproximación de xe para un total de 10 iteraciones (adición
de 10 términos), seguimos la siguiente secuencia de pasos:
Para empezar, diseñe la siguiente tabla en una hoja nueva:
Figura 2.5: Diseño de cuadro.
A continuación hallamos el valor verdadero de xe , para x = 0.5 en la celda
C3.
=EXP(C4)
Ahora implementamos la función FEXP(), que hará el cálculo en función a
término (t) y el valor de x.
MÉTODOS NÚMERICOS con VBA
46
Function FEXP(t, x)
'Serie de Taylor para aproximar f(x)=e^x
FEXP = (x ^ t) / WorksheetFunction.Fact(t)
End Function
Ahora escribimos la función en la celda C7, haciendo referencia a término n
como argumento variable (celda B7) y el valor de x como valor constante
(celda C4):
=FEXP(B7,C$4)
Copiamos hasta la celda C16.
En la celda D7 de la columna resultados escribimos lo siguiente: =C7, que
copia solo en este caso el mismo resultado de la primera expresión, a partir de
la ceda D8, escribimos una sumatoria de valores actuales y anteriores del
siguiente modo:
=C8+D7
Finalmente en la celda E7 calculamos le error como una diferencia del valor
verdadero y el resultado obtenido:
=C$3-D7
Obtenemos los siguientes resultados que se muestran en la figura 2.6.
Figura 2.6: Resultados de la aproximación xe .
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
47
2. PRECISIÓN Y EXACTITUD
El estudio e implementación en computadora de los métodos numéricos requiere de un
cuidado especial en el manejo de los números, de forma que los resultados que
entregue un programa sean confiables. Para hablar de dicha confiabilidad
distinguiremos entre los términos precisión y exactitud.
Exactitud: aproximación de un número o de una medida al valor verdadero.
Inexactitud: alejamiento sistemático de la realidad.
Precisión: qué tan cercanos se encuentran los valores unos de otros.
Imprecisión: esparcimiento de las mediciones.
a) Inexacto e Impreciso b) Exacto e Impreciso
c) Inexacto y Preciso d) Exacto y Preciso
Figura 2.7: Exactitud y Precisión.
Aunque en las aplicaciones es necesario conocer la precisión de los datos de entrada (a
un algoritmo), que pueden depender directamente de los instrumentos utilizados, nos
concentraremos aquí en la precisión de la representación de un número en la memoria
de la computadora, lo cual está relacionado con la siguiente representación de
números reales.
MÉTODOS NÚMERICOS con VBA
48
2.1. Números de punto flotante
Decimos que un número x está representado como número de punto flotante si se
expresa como:
0 1 2 3 1. e
px d d d d d B
Donde:
p : es el número de dígitos en la matiza o significado
B : es la base del sistema (10 en base decimal)
e : es el exponente entero
Además, cuando d0 0 decimos que está en su forma normalizada.
Ejemplo 2.8. El número 314.159 en representación de punto flotante es
0.314159103 y como punto flotante normalizado 3.14159102.
Ya que las computadoras digitales trabajan (en su mayoría) con el sistema
binario, el estándar IEEE 754 especifica tanto la representación como el manejo
de los números binarios de punto flotante.
2.2. Números binarios de punto flotante
Decimos que un número x está representado como número binario de punto
flotante normalizado si se expresa como:
1 1 2s ex f
Donde:
s : es el signo
f : es la fracción en binario
e : es el exponente
La precisión de un número está directamente relacionada con el número de dígitos
en su representación de punto flotante.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
49
Ejemplo 2.9. Determine un conjunto hipotético de números con punto flotante
para una máquina que guarda información usando palabras de 7 bits. Emplee el
primer bit para el signo del número, los siguientes tres para el signo y la magnitud
del exponente, y los últimos tres para la magnitud de la mantisa (ver figura 2.8).
0 11 1 01 0
21
20
2-1
2-2
2-3
Magnitud de
la mantisa
Magnitud del
exponente
Signo del
exponente
Signo del
número
Figura 2.8: Número positivo de punto flotante más pequeño posible.
Solución:
El número más pequeño posible se representa en la figura 2.8. El 0 inicial señala
que la cantidad es positiva. El 1 en el segundo lugar indica que el exponente tiene
signo negativo. Los 1, en el tercero y cuarto lugar dan un valor máximo al
exponente de
1 21 + 1 20 = 3
Por lo tanto, el exponente será -3. Por último, la mantisa está especificada por el
100 en los últimos tres lugares, lo cual nos da
1 2-1 + 0 2-2 + 0 2-3 = 0.5
Aunque es posible tomar una mantisa más pequeña (por ejemplo, 000, 001, 011),
se emplea el valor de 100 debido al límite impuesto por la normalización. Así el
número positivo más pequeño posible en este sistema es +0.5 2-3, el cual es
igual a 0.0625 en el sistema de base 10. Los siguientes números más grandes se
desarrollan incrementando la mantisa como sigue:
0111101 = (12-1 + 02-2 + 12-3) 2-3 = (0.078125)10
0111101 = (12-1 + 12-2 + 02-3) 2-3 = (0.093750)10
0111101 = (12-1 + 12-2 + 12-3) 2-3 = (0.109375)10
MÉTODOS NÚMERICOS con VBA
50
3. CIFRAS SIGNIFICATIVAS
La noción intuitiva de cifras significativas de un número está directamente relacionada
con la precisión de los instrumentos o procesos que lo generan.
Definición
El número de cifras significativas de un número x corresponde al número de cifras
en la mantisa de su representación en notación científica.
Ejemplo 2.4. Ya que 0.00123 = 1.2310−3, decimos que 0.00123 tiene tres cifras
significativas.
Ejemplo 2.5. El número 3210 = 3.210103 posee cuatro cifras significativas.
Note que en el ejemplo anterior, hemos mantenido el 0 de las unidades. Si el
origen del número no garantizara el valor de sus unidades, entonces deberíamos
escribir directamente 3.21103 lo que indicaría que contamos con sólo tres cifras
significativas.
3.1. Reglas para establecer las cifras significativas de un número dado.
Regla 1. En números que no contienen ceros, todos los dígitos son significativos.
Por ejemplo:
3.14159 → seis cifras significativas → 3.14159
5.694 → cuatro cifras significativas → 5.694
Regla 2. Todos los ceros entre dígitos significativos son significativos.
Por ejemplo:
2.054 → cuatro cifras significativas → 2.054
506 → tres cifras significativas → 506
Regla 3. Los ceros a la izquierda del primer dígito que no es cero sirven
solamente para fijar la posición del punto decimal y no son significativos.
Por ejemplo:
0.054 → dos cifras significativas → 0.054
0.0002604 → cuatro cifras significativas → 0.0002604
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
51
Regla 4. En un número con dígitos decimales, los ceros finales a la derecha del
punto decimal son significativos.
Por ejemplo:
0.0540 → tres cifras significativas → 0,0540
30.00 → cuatro cifras significativas → 30,00
Regla 5. Si un número no tiene punto decimal y termina con uno o más ceros,
dichos ceros pueden ser o no significativos. Para poder especificar el número de
cifras significativas, se requiere información adicional. Para evitar confusiones es
conveniente expresar el número en notación científica, no obstante, también se
suele indicar que dichos ceros son significativos escribiendo el punto decimal
solamente. Si el signo decimal no se escribiera, dichos ceros no son significativos.
Por ejemplo:
1200 → dos cifras significativas → 1200
1200. → cuatro cifras significativas → 1200.
3.2. Cifras exactas
Sean xv y xc los valores verdadero y calculado de una cierta cantidad, con xv xc.
Decimos que xc aproxima a xv con n cifras exactas si n es el mayor entero no
negativo para el cual, se cumple:
10.5 10m n
v ce x x
Donde:
n = número de cifras exactas
m = orden del número
0.5 10 k
v ce x x
Donde:
k = número de cifras decimales exactas
Ejemplo 2.6. Sean los números xv = 3408.451 y xc = 3408.46, calcule el número
de cifras exactas y número de cifras decimales exactas para el valor aproximado.
MÉTODOS NÚMERICOS con VBA
52
Solución:
El orden del número es m = 3, por tanto, tenemos:
13408.451 3408.46 0.009 0.09 10v ce x x
De acuerdo a la condición
1 10.09 10 0.5 10m n
Por tanto,
1 1
1 3 1
5
m n
n
n
El valor aproximado tendrá 5 cifras exactas.
Así mismo: 10.09 10 0.5 10 k
Por tanto,
1
1
k
k
El valor aproximado tendrá una cifra decimal exacta.
Ejemplo 2.7. Calcular el número de cifras y decimales exactos con que 9.99
aproxima a 10.
Solución:
El orden del número es m = 1, por tanto, tenemos:
110 9.99 0.01 0.1 10v ce x x
Condición 1 10.1 10 0.5 10m n
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
53
Por tanto,
1 1
1 1 1
3
m n
n
n
El valor aproximado tendrá 3 cifras exactas.
Así mismo: 10.1 10 0.5 10 k
Por tanto,
1
1
k
k
El valor aproximado tendrá una cifra decimal exacta.
4. ERRORES
Cuando se mide una cantidad, ya directa, ya indirectamente, la medida que se obtiene
no es necesariamente el valor exacto de tal medida, ya que el resultado obtenido estará
afectado por errores debidos a multitud de factores. Algo en apariencia tan sencillo
como cronometrar el período del péndulo en el apartado anterior sufrirá errores
debidos a la precisión del cronómetro, los reflejos del cronometrador, las corrientes de
aire, el número de medidas efectuadas ... errores que se propagarán a cualquier
cantidad derivada de ésta que queramos determinar, como por ejemplo velocidad o
aceleración.
En estos casos es necesario estimar el error cometido al efectuar una medida o serie de
medidas. El conjunto de reglas matemáticas dedicado a su estudio se conoce como
teoría de errores, y resulta imprescindible tanto para sacar todo el partido posible a un
conjunto de datos experimentales como para evaluar la fiabilidad de éstos. El estudio
de la teoría de errores es una rama aparte de la matemática por derecho propio, y por
su extensión no se desarrollará en este capítulo. Queda usted avisado, lo que está aquí
es tan sólo un conjunto rápido y necesariamente breve de las reglas fundamentales
más usadas en el ámbito de la teoría de errores.
MÉTODOS NÚMERICOS con VBA
54
4.1. Definiciones de error
Los errores numéricos surgen del uso de aproximaciones para representar
operaciones y cantidades matemáticas exactas. Estas incluyen los errores de
truncamiento y los errores de redondeo. Para ambos tipos de errores, la relación
entre el resultado exacto, o verdadero, y el aproximado está dado por:
Error absoluto y relativo
Sea xv un valor numérico verdadero y sea xc el valor calculado que aproxima el
verdadero, entonces:
El valor verdadero (xv) está dado por:
v c vx x e
Por consiguiente, el error verdadero (ev) viene dado por:
v v ce x x
El error verdadero absoluto (eva), es:
va v ce x x
El error relativo verdadero (v), está dado por:
v c v
v
v v
x x e
x x
El error relativo verdadero absoluto (va), está dado por:
v c v
va
v v
x x e
x x
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
55
Nota: El error relativo porcentual se obtiene únicamente multiplicando por 100%
el error relativo.
El Error normalizado a un valor aproximado se obtiene:
100%
a
Error Aproximado
Valor Aproximado
En ciertos métodos numéricos, se usan esquemas iterativos para calcular
resultados, y se hace la aproximación en base a la aproximación anterior, para
calcular más y mejores aproximaciones.
100%
a
Aproximación Actual Aproximación Anterior
Aproximación Actual
En esta última, normalmente se repite hasta que su valor absoluto sea menor que
una tolerancia prefijada s , donde:
20.5 10 %n
s
donde:
n : número de cifras significativa
Quedando entonces definido el criterio de aceptación:
a s
El resultado será correcto en al menos n cifras significativas
Ejemplo 2.10. Se mide la longitud y el diámetro de una varilla en centímetros,
obteniéndose 99 cm y 0.9 cm respectivamente. Los valores exactos son 100 cm y
1 cm. Determine el error verdadero y el error relativo porcentual en cada caso.
Solución:
a) El error verdadero
Longitud de la varilla es: 100 99 1ve cm
MÉTODOS NÚMERICOS con VBA
56
Diámetro de la varilla es: 1 0.9 0.1ve cm
b) El error relativo porcentual
Longitud de la varilla es: 1
100% 1%100
v
Diámetro de la varilla es: 0.1
100% 10%1
v
Por tanto, la medición del diámetro no es muy satisfactoria, ya que produce un
error relativo porcentual del 10%.
Ejemplo 2.11:
Calcule la función de una serie geométrica 1
1f x
x
empleando la expansión
de MacLaurin para Series de Taylor,
0
1
1
t
t
xx
, con |x| < 1
para x = 0.05; agregando términos hasta que |a| < s, con cinco (5) cifras
significativas.
Solución:
Se halla el valor verdadero de 1
0.05 1.05263161 0.05
f
Sea la serie de Taylor: 0 2 3 51
1x x x x
x
Determinamos el criterio de error de tolerancia que asegura que un resultado sea
correcto en al menos 5 cifras significativas:
2 50.5 10 %s
0.0050%s
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
57
Por lo tanto, se agregará términos a la serie hasta que a sea menos que este
valor.
Para implementar este ejemplo en Excel, seguimos lo siguientes pasos:
Primero, diseñe la siguiente tabla en una hoja nueva:
Figura 2.9: Diseño de cuadro para estimación del error.
Hallamos el valor verdadero de 1
1 x, para x = 0.05 en la celda E8.
=1/(1-B8)
También determinamos el valor del criterio de tolerancia s, para n = 5 cifras
significativas en la celda E10.
=0.5*(10^(2-B10))
Ahora implementamos la función FGEO(), que hará el cálculo en función a
término (t) y el valor de x.
Function FGEO(t, x)
'Serie de Taylor para aproximar f(x)=1/(1-x)
'con |x|<1
FGEO = x ^ t
MÉTODOS NÚMERICOS con VBA
58
End Function
En la celda C13 de la columna valor del término, haciendo referencia a
término t como argumento variable (celda B13) y el valor de x como valor
constante (celda B8):
=FGEO(B13,C$8)
Luego copiamos hasta donde sea necesario.
En la celda D13 de la columna resultado escribimos lo siguiente: =C13, que
copia en este caso el mismo resultado de la primera expresión, a partir de la
ceda D14, escribimos una sumatoria de valores actuales y anteriores del
siguiente modo:
=C14+D13
El error relativo porcentual, se calcula a partir de la celda E13, tomado en
cuenta el valor verdadero de la celda E8 y el valor de cada resultado.
=(E$8-D13)/E$8*100
Así mismo, el error aproximado porcentual lo obtenemos a partir de la celda
F14, debido a que no se puede calcular el error aproximado para el primer
término.
=ABS(D14-D13)/D14*100
Finalmente, en la celda G14 verificamos el criterio de parada de la tolerancia,
es decir, |a| < s, del siguiente modo:
=SI(F14<E$10,"ÉXITO","FRACASO")
Copiamos hasta que nos muestre un éxito.
Obtenemos los siguientes resultados que se muestran en la figura 2.10.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
59
Figura 2.10: Resultados de 1
1 x con Series de Taylor, para x = 0.05.
Gráfico 2.1:
En l figura 2.10, se aprecia que el error aproximado absoluto es menor al criterio
de tolerancia al sumar el séptimo término, con lo que estaríamos aproximado el
resultado a cinco cifras significativas. Así mismo, también podemos ver en el
gráfico 2.2 la convergencia del resultado hacia el valor verdadero, alcanzado su
estabilidad a la suma del tercer término.
MÉTODOS NÚMERICOS con VBA
60
4.2. Tipos de errores
En esta sección veremos los tipos esenciales de errores presentes (en mayor o
menor grado) en la aplicación de los métodos numéricos. Además de estos
errores, podemos considerar: el error humano, observaciones inexactas propios
del equipo experimental y errores de modelado.
a) Error por redondeo
A diferencia del error “externo” que provocamos cuando redondeamos a cierto
número de decimales (por ejemplo: 9.9 a 10), el error por redondeo que interesa
en cálculo numérico es el que ocurre en la computadora o calculadora debido a
las limitaciones propias de la representación del número.
Ejemplo 2.12. Calculemos los resultados de la siguiente secuencia:
43
1
1
a
b a
c b b b
d c
En la siguiente tabla el cálculo tomando todas las cifras y con redondeo.
Término Todas las cifras Redondeo
a = 4/3 1.33333333333333 1.33333333333333
b = a - 1 0.33333333333333 0.33333333333333
c = b + b + b 1.00000000000000 0.99999999999999
e = 1 – c 0.00000000000000 0.00000000000001
Nótese que si comete error en el cálculo del valor fina d. Para eliminar el error
por redondeo, utilizamos números racionales (fraccionarios).
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
61
Término Resultado
a = 4/3 1
31
b = a - 1 1
3
c = b + b + b 1
e = 1 - c 0
b) Error por truncamiento
De forma similar al caso del error por redondeo, hay que distinguir entre el error
“externo” que provocamos cuando truncamos un número a cierta cantidad de
decimales (por ejemplo: 9.99 a 9.9) y el error de truncamiento que interesa
fundamentalmente en el análisis numérico. Este último tiene que ver con la
famosa serie de Taylor y la propiedad de que toda función analítica puede ser
aproximada mediante polinomios.
Ejemplo 2.13. Utilizando la serie de Taylor, calculemos los errores de
truncamiento, cuando aproximamos xe con cinco iteraciones para:
a) x = 1
b) x = -1
Solución:
En ambos casos calcularemos el error de truncamiento haciendo uso de la
plantilla que implementamos en el ejercicio 2.3.
a) Para este caso, tenemos el valor verdadero: 1 2.7182818e (con 7 decimales
de aproximación), los resultados se muestran en la figura 2.11.
Ya que el resultado de la sumatoria al quinto término es 2.7083333
(redondeado a 7 decimales) entonces
Error de truncamiento = 2.7182818 - 2.7083333 = 0.0099485
MÉTODOS NÚMERICOS con VBA
62
Figura 2.11: a) Error de truncamiento de xe , para x = 1.
a) En el segundo caso, tenemos el valor verdadero: 1 0.3678794e , los
resultados se muestran en la figura 2.12.
Error de truncamiento = 0.3678794 – 0.3750000 = -0.0071206
Figura 2.12: b) Error de truncamiento de xe , para x = -1.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
63
c) Error numérico total
Por lo visto hasta este punto, los métodos numéricos requieren un cuidadoso
reconocimiento y estudio de los errores involucrados.
El error numérico total es la suma de los errores por redondeo y los errores por
truncamiento.
Los errores por redondeo y por truncamiento guardan una relación muy
interesante que señala Chapra y Canale y denominan principio de incertidumbre
numérica, ya que conforme aumenta el incremento h (en la expansión de Taylor)
también aumenta el error por truncamiento, y para reducirlo es necesario
aumentar el número de términos en la sumatoria, pero al hacerlo aumenta el
número de operaciones de punto flotante, lo que aumenta el error por redondeo.
Se trata entonces de encontrar un punto de equilibrio a partir del cual, se tienen
rendimientos decrecientes.
5. MÉTODOS ITERATIVOS
A diferencia de los métodos directos donde la solución a una ecuación o sistema de
ecuaciones se logra siempre “al primer intento” siguiendo paso a paso un
procedimiento determinado, los métodos iterativos obtienen la solución como
resultado de una serie de aproximaciones generadas sucesivamente a partir de una
“aproximación inicial a la solución”.
Definimos Método iterativo a un procedimiento que acepta:
a) f(x), la función a iterar, tal que Ran(f) Dom(f) y además cumple cierto
criterio de convergencia
b) 0x Dom(f), la aproximación inicial a la solución
c) s es la tolerancia del error
y encuentra, mediante un número finito de iteraciones, una solución aproximada x*
(cona s ), para la ecuación x = f(x). Llamamos punto fijo al valor x que cumple x
= f(x).
MÉTODOS NÚMERICOS con VBA
64
Normalmente, la implementación de un método iterativo incluye como parámetro
adicional, el número máximo de iteraciones permitidas, para el caso en que se utilice
una función que no cumpla con el criterio de convergencia.
En el presente texto se realizan los cálculos usando métodos iterativos implementados
en una hoja de cálculo de Excel o en VBA de Excel, y para el control del número de
iteraciones se utiliza el criterio de tolerancia como ya se indicó anteriormente.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
65
EJERCICIOS CAP. 2.1
1. Indica el número de cifras significativas de las medidas indicadas: 12.00 m, 0.765
g, y 0.0730 s.
2. Escribe las sucesivas cifras que aparecen al redondear el número 3.4536772 hasta
las unidades:
Primer resultado del redondeo : ________________
Segundo resultado del redondeo : ________________
Tercero resultado del redondeo : ________________
Cuarto resultado del redondeo : ________________
Quinto resultado del redondeo : ________________
Sexto resultado del redondeo : ________________
Séptimo resultado del redondeo : ________________
3. Convertir los siguientes números a notación científica (tres decimales y cinco
decimales):
34780000000000000000 : ______________ , _______________
2456000000.987 : ______________ , _______________
345.6 : ______________ , _______________
0.0000000000000003478 : ______________ ,________________
0.0000023450000000 : ______________ , _______________
0.0002003 : ______________ , _______________
4. Escribe el número completo (con todos los dígitos) a partir del número en notación
científica. No debes redondear.
2.045x1012 : _______________________________________
2.045x10-12 : _______________________________________
2.045x100 : _______________________________________
3.478x10-10 : _______________________________________
2.345x106 : _______________________________________
2.003x10-1 : _______________________________________
5. Si el valor considerado como real es de 3.6 kg y una de las medidas realizadas era
de 3.5; halle el error relativo porcentual y el error absoluto.
6. Un alumno realiza una reacción química de desprendimiento de gases. Quiere
determinar el volumen de gas desprendido para lo que realiza la experiencia cuatro
veces. Los resultados obtenidos son: 100.0 cm3; 95.0 cm3; 105.0 cm3; 95.0 cm3.
Calcule:
MÉTODOS NÚMERICOS con VBA
66
a) El volumen del gas producido en las condiciones del laboratorio, que se
puede tomar como valor real.
b) El error absoluto de la medida de 105.0 y 95.0 cm3.
c) El error relativo (en tanto por ciento) de la medida de 105.0 y 95.0 cm3.
7. Sea el valor exacto de 89.4635 m de longitud de un puente y 89.46339 m como
valor calculado, hallar el número de cifras exactas y el número de decimales
exactos.
8. Se trata de determinar el tiempo que tarda un coche en pasar de 0 a 100 km/h a
máxima potencia, en un circuito cerrado de velocidad. Este es uno de los datos que
se utilizan para promocionar los vehículos. Previamente se asume que la
experiencia tendrá errores experimentales difíciles de eliminar: tiempo de reacción
del conductor, respuestas inespecíficas del motor, tiempo atmosférico (humedad,
viento), etc. Para intentar reducirlas se ha repetido la experiencia varias veces
(cinco), dando como resultado los siguientes tiempos: 11.2 s; 10.9 s; 11.1 s; 11.0 s;
10.8 s.
a) ¿Qué cifra debes poner como tiempo que tarda el vehículo en pasar de cero a
100 km/h?
b) ¿Cuál es el error absoluto de cada medida?
c) ¿Cuál es el error relativo (en tanto por ciento) de cada medida?
d) A la vista de los resultados, ¿cuál crees que debería ser la incertidumbre
mínima de los resultados?
9. Evaluar usando dos métodos
y
Compare con el valor verdadero, 2,485168x10-4, y discuta los resultados. Use 10
términos para evaluar cada serie.
10. Determine el número de términos necesarios para aproximar las siguientes
funciones, usando la serie de Taylor.
a)
1
1
1ln 1
n
n
n
x xn
, para |x| < 1, para x = 0.5 con 5 cifras significativas
b)
2 1
0
1sen
2 1 !
n
n
n
x xn
, x, para x = π con 3 cifras significativas.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
67
11. Estime el error cometido al calcular sen 6 con un polinomio de Taylor de 5°
grado.
12. Calcule el grado del polinomio para obtener una aproximación de 1 e con un
error menor a 10-4.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
69
Capítulo 3
Capítulo 3: MÉTODOS DE SOLUCIÓN DE
RAÍCES DE ECUACIONES
MÉTODOS NÚMERICOS con VBA
70
INTRODUCCIÓN
En este capítulo estudiaremos uno de los problemas básicos de la aproximación
numérica: el problema de la búsqueda de las soluciones de una ecuación o de un
sistema de ecuaciones.
Los métodos numéricos que se dan en este capítulo sirven para obtener
aproximaciones a las soluciones cuando no sea posible obtener soluciones exactas con
métodos algebraicos.
1. DEFINICIÓN DEL PROBLEMA
Dada una ecuación de una variable independiente x,
0f x
se desea encontrar el valor o valores de x que hacen que se cumpla la igualdad, donde
en general, f es una función no lineal de x, es decir, que no puede expresarse como
0 1f x c c x , donde c0 y c1 son constantes. A los valores de x que hacen que se
cumpla la igualdad se les denomina raíces de la ecuación f(x) = 0.
Geométricamente, una raíz de una función representa un punto donde la gráfica de f(x)
cruza al eje x. En la figura 3.1, vemos que la raíz es x = 1.
0.5 1 1.5 2
0.75
0.50
0.25
-0.25
-0.50
-0.75
f(x)
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
71
Figura 3.1: Representación geométrica de la raíz de una ecuación.
Es importante diferenciar los términos de “Ecuaciones algebraicas” y “Ecuaciones
trascendentales”.
Ecuación algebraica, por definición una función dada por y = f(x) es algebraica
si se expresa de la siguiente forma:
1 2 1
1 2 1 0 0n n n
n n nf y f y f y f y f
donde, f es un polinomio de i-ésimo orden en x.
Los polinomios son un tipo de funciones algebraicas que generalmente se
presentan como:
1 2 3
0 1 2 3
n
n nf x a a x a x a x a x
donde, n es el orden del polinomio y a son las constantes.
Algunos ejemplos de ecuaciones algebraicas:
2 3 6
6 3 2f x x x x
y
2
2 5 3 4f x x x
Ecuaciones trascendentales, son funciones que nos algebraicas. Comprenden las
funciones trigonométricas, las funciones exponenciales, las funciones
logarítmicas y otras menos populares. Tenemos algunos ejemplos:
2ln 1f x x
y
10 cos(3 1)f x x
MÉTODOS NÚMERICOS con VBA
72
2. MÉTODOS CERRADOS
Cuando deseamos encontrar la solución a una ecuación, digamos f(x) = 0 partimos de
un intervalo [a, b] dentro del cual sabemos que se encuentra la solución, y paso a paso
reducimos dicho intervalo hasta obtener [an, bn] tal que a s , como la tolerancia,
decimos que hemos utilizado un método de intervalo o método cerrado.
Iniciaremos analizando los métodos gráficos que nos permiten representar tanto las
funciones como sus raíces.
2.1. Métodos gráficos
Este método básicamente se usa para localizar un intervalo donde la función tiene
alguna raíz. Para esto describiremos dos procedimientos, el primero consiste en
descomponer la función principal en dos sub funciones y el segundo se trata de
graficar directamente la función principal.
Descomposición de la función
Consideremos una función y = f(x) la cual es continua en todo un intervalo [a, b],
dentro de la cual se encuentra por lo menos una raíz o cero para f(x) = 0. Para
localizar los ceros de la función dada en gráfica, debe realizarse lo siguiente:
1. La función considerada f(x) = 0 se descompone en otras dos, de modo que
pueda expresarse de la forma:
1 2f x f x
La elección de estas dos funciones dependerá de la conveniencia del
estudiante, ya sea por su rapidez de cálculo o por su similitud con las formas
geométricas más populares: recta, círculo, parábola, etc.
2. Empleando una escala sencilla, graficar cada una de las funciones halladas,
como se muestra en la figura 3.2.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
73
3. Teniendo en cuenta cierta exactitud que tenga el gráfico y las escalas usadas,
será posible ubicar un cierto intervalo [a, b] dentro de la cual se intersectan
las gráficas de las unciones halladas.
f1(x)
f2(x)
f1(x) = f2(x)
y
xa b
H
Figura 3.2: Intersección de las funciones f1(x) y f2(x).
Es evidente que el valor de x para el cual ambas curvas se intersectan, será una
raíz o cero de f(x) = 0 puesto que es para este valor que las funciones halladas se
hacen iguales.
Gráfica directa de la función
Sea y = f(x) una cierta función dada la cual es continua en todo el intervalo para la
cual se ha definido. Dar solución a las ecuaciones de la forma f(x) = 0 es
equivalente a calcular un cierto x tal que y = 0; por ello buscaremos un intervalo
[a, b] lo suficiente pequeño.
A continuación, tenemos formas generales en la que puede ocurrir una raíz al
graficar f(x) (ver figura 3.3).
Las formas a) y b) de la figura 3.3 muestran que f(a) y f(b) tiene el mismo signo,
entonces no habrá raíces dentro del intervalo o habrá un número par de ellos.
En cambio, las formas c) y d) muestran que f(a) y f(b) tiene signos diferentes en
los puntos externos, entonces habrá un número impar de raíces.
MÉTODOS NÚMERICOS con VBA
74
f(x)
x
x
f(x)
f(x)
x x
f(x)
a b a b
a b a b
a) b)
c) d)
Figura 3.3: Formas generales en que puede ocurrir una raíz en [a, b].
f(x)
xx
f(x)
a b a b
a) b)
Figura 3.4: Formas especiales en que puede ocurrir una raíz en [a, b].
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
75
Pueden ocurrir raíces múltiples cuando la función es tangencial al eje x. Los
signos son opuestos, pero hay un número par de raíces, como se muestra en la
forma a) de la figura 3.4.
Se pueden presentar funciones discontinuas donde los puntos extremos de signo
opuestos contienen un número par de raíces, forma b) de la figura 3.4. En este
caso se requiere estrategias especiales para determinar las raíces.
Ejemplo 3.1. Localizar las raíces de la función 2 2 4f x x x , en el intervalo
sugerido de [-4, 4].
Solución:
Para encontrar por lo menos una raíz o cero la función se debe hacer: f(x) = 0. Por
tanto, la función dada se puede escribir como:
2 4 2x x
Donde, 2
1f x x y 2 4 2f x x . Llevando estas funciones a un gráfico,
para ello implementamos en una hoja nueva lo siguiente:
Figura 3.5: Plantilla para la gráfica por descomposición.
MÉTODOS NÚMERICOS con VBA
76
Los valores para la variable X se hacen con incrementos de 1, para esto en la
celda A5 con -4, luego en la celda A6 escribimos: =A5+1 y copiamos hasta la
celda A13.
Para la implementación de las funciones 1 y 2, escribimos en las celdas B5 y C5
respectivamente lo siguiente:
=A5^2
=4-2*A5
La gráfica de las funciones halladas se obtendrá de manera sencilla empleando los
valores de la plantilla de la figura 3.5.
Gráfico 3.1: Determinación de las raíces de f(x), descomposición.
Del gráfico 3.1 podemos indicar, que existe una raíz positiva en el intervalo [1, 2],
mientras que existe también una raíz negativa en el intervalo [-4, -3].
Igualmente, por el método de gráfico directo (ver gráfico 3.2), se observa que la
curva de la función cruza al eje x, primero en intervalo [-4, -3] y luego en el
intervalo [1, 2], indicándonos esto que existe dos raíces una positiva y la otra
negativa. Para ello implementamos la plantilla de la figura 3.6.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
77
Figura 3.6: Plantilla para la gráfica por método directo.
La función se implementa escribiendo en la celda B5 lo siguiente:
=A5^2+2*A5-4
Gráfico 3.2: Determinación de las raíces de f(x), gráfico directo.
MÉTODOS NÚMERICOS con VBA
78
Ejemplo 3.2. Localizar un intervalo donde la función arctan 1f x x x
tenga una raíz.
Solución:
Nuevamente, para calcular la raíz o raíces de f(x) hacemos arctan 1 0x x , de
donde tenemos
arctan 1x x
Así, el problema equivale a encontrar el punto de intersección de las gráficas de
las funciones 1 arctanf x x y 2 1f x x .
Nos plantearemos un intervalo inicial tentativo de [-2, 2], donde los valores para
la variable X se hacen con incrementos de 0.5, para esto iniciamos en la celda A5
con -2, luego en la celda A6 escribimos: =A5+0.5 y copiamos hasta la celda A13
(ver figura 3.7).
Figura 3.7: Plantilla para la gráfica de f(x)=arctanx+x-1.
Para la implementación de las funciones 1 y 2, escribimos en las celdas B5 y C5
respectivamente lo siguiente:
= ATAN(A5)
= 1-A5
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
79
Conocemos bien las gráficas de estas funciones, mostradas en el gráfico 3.3.
Gráfico 3.3: Determinación de las raíces de f(x)=arctanx+x-1.
De donde vemos claramente que un intervalo donde se encuentra la única raíz es
el intervalo [0,1].
Ejemplo 3.3. Grafique la función 1
2
xf x
x, en el intervalo de [-10, 10] y
localice las posibles raíces.
Solución:
En este caso, para calcular la raíz o raíces de f(x) se realizará directamente.
De acuerdo a lo planteado utilizamos el intervalo de [-10, 10], donde los valores
para la variable X se hacen con incrementos de 2, para esto iniciamos en la celda
B5 con -10, luego en la celda B6 escribimos: =B5+0.5 y copiamos hasta la celda
B45 generando 41 valores (ver figura 3.8).
Luego para obtener los valores de la función f(x) escribimos en la celda C5:
=(B5-1)/(B5+2)
MÉTODOS NÚMERICOS con VBA
80
Figura 3.8: Plantilla para la gráfica de f(x)=(x-1)/(x+2).
Se puede observar en la tabla de datos de la figura 3.8, que en el dato 17 para x =
-2 el valor correspondiente a f(x) es #¡DIV/0!, esto nos indica que Excel ha
realizado una división entre cero. En este caso el valor seria indeterminado, por
tanto, no debería mostrar resultado alguno; para solucionar este pequeño
inconveniente realizaremos el siguiente arreglo de la celda C5, utilizando la
función condicional SI().
=SI(ESERROR((B5-1)/(B5+2)),"",(B5-1)/(B5+2))
y copiamos el formato hasta la celda C15.
A continuación, realizamos la gráfica de la función como se explicó en ejemplos
anteriores.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
81
En el gráfico 3.4, se pude ver que la función es discontinua en el punto -2. Así
mismo, si es posible determinar la raíz, en este caso en el intervalo de [-10, 10]
existe una sola raíz que es x = 1.
Gráfico 3.4: Determinación de las raíces de f(x)=(x-1)/(x+2).
MÉTODOS NÚMERICOS con VBA
82
EJERCICIOS CAP. 3.1
1. Utilizando el método de descomposición, localizar la raíz o raíces de las siguientes
funciones:
a) 3 24 1 f x x x en [-4, 4]
b) 2
1
f x
x en [-6, 6]
c) 3 f x x en [-4, 2]
d) 1
2
f x
x en [-3, 6]
e) ln
x
f xx
en [0.01, 10]
2. Utilizando el método directo, localizar la raíz o raíces de las siguientes funciones:
a) xf x xe en [-2, 10]
b) 2 1 f x x x en [-5, 5]
c) 2
2
1
1
x xf x
x en [-6, 6]
d) 3 3 2 f x x x en [-3, 2]
e) 2cosf x x en [-3, 3]
3. Asocia cada gráfica con su correspondiente ecuación:
I
II
III
IV
[ ] 23 xf x [ ] 20.25f x x [ ] 3 2 xf x [ ] 22f x x
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
83
4. Represente gráficamente la función y f x , sabiendo que la gráfica de
y f x es la siguiente:
5. Aproxime las raíces de las siguientes ecuaciones a través del método gráfico.
a) sin 3 cos f x x x en [0, ]
b) 2 xf x e x en [-4, 4]
MÉTODOS NÚMERICOS con VBA
84
2.2. Método de Bisección
El método de bisección se basa en el teorema del Valor Intermedio.
f(x)
xa
b
f(b)
f(a)
y = f(x)
Figura 3.9: Evaluación de f(a) y f(b) en f(x).
Se trata de encontrar los ceros de f(x) = 0, donde f(x) es real y continua en el
intervalo [a, b] con f(a) y f(b) con signos opuestos. Es decir, f(a).f(b) < 0, entonces
hay al menos una raíz en intervalo [a, b] (ver figura 3.9).
De acuerdo al teorema del Valor Intermedio, existe un p [a, b] tal que f(p) = 0.
Sea f(x) continua en un intervalo [a, b] y supongamos que f(a) > f(b).
Entonces para cada z tal que f(a) > z > f(b), existe un x0 [a, b] tal que f(x0) =
z. La misma conclusión se obtiene para el caso que f(a) < f(b).
Básicamente el Teorema del Valor Intermedio nos dice que toda función
continua en un intervalo cerrado, una vez que alcanzó ciertos valores en los
extremos del intervalo, entonces debe alcanzar todos los valores intermedios.
En particular, si f(a) y f(b) tienen signos opuestos, entonces un valor
intermedio es precisamente z = 0, y por lo tanto, el Teorema del Valor
Intermedio nos asegura que debe existir x0 [a, b] tal que f(x0) = 0, es decir,
debe haber por lo menos una raíz de f(x) en el intervalo [a, b] .
Teorema del Valor Intermedio
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
85
El método consiste en dividir en la mitad el intervalo y localizar la mitad que
contiene a p.
El proceso se repite hasta lograr la precisión deseada. Veamos gráficamente dos
procesos iterativos en la figura 3.10.
Método: Sea f(x) continua.
i) Encontrar valores iniciales a y b que encierren la raíz, tales que f(a) y f(b)
tienen signos opuestos, es decir:
f(a).f(b) < 0,
ii) La primera aproximación a la raíz xr, se toma igual al punto medio entre a y
b, se determina mediante:
2r
a bx
iii) Evaluar f(xr), para determinar en qué sub intervalo esta la raíz.
a) Si f(a).f(xr) < 0, entonces la raíz se encuentra en el intervalo [a, xr]
inferior; por tanto, b = xr y vuelve al paso ii).
b) Si f(a).f(xr) > 0, entonces la raíz se encuentra en el intervalo [xr, b]
superior; por tanto, a = xr y vuelve al paso ii).
c) Si f(a).f(xr) = 0, la raíz es igual a xr; termina el cálculo.
El proceso se vuelve a repetir con el nuevo intervalo, hasta que: a s , es
decir,
.100%
s
Aproximación Actual Aproximación Anterior
Aproximación Actual
MÉTODOS NÚMERICOS con VBA
86
f(x)
xa
b
f(b)
f(a)
p ½ del intervalo
f(x1)
12
a bx
f(x)
x
b
f(b)
p
½ del intervalo
f(a)
22
a bx
a = p1
f(x2)
Primera iteración
Segunda iteración
Figura 3.10: Proceso iterativo del método de Bisección.
Ejemplo 3.4. Sea 2 2xf x x , aproxime la raíz de la ecuación hasta que
1%a .
Solución:
Antes de aplicar el método de bisección, es primordial ubicar el intervalo donde
se encuentra la raíz, si hubiese. Para ello graficamos la función en un intervalo
tentativo de [0, 3].
Para encontrar la raíz se debe hacer: f(x) = 0. Por tanto, la función dada se puede
escribir como: 2 2xx
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
87
Donde, 2
1f x x y 2 2xf x . Llevando estas funciones a un gráfico, para
ello implementamos en una hoja nueva lo siguiente:
Figura 3.10: Cuadro de valores de f(x1) y f(x2).
En el gráfico 3.5 observamos que las curvas de las funciones se intersectan
aproximadamente en el punto 2. Por tanto, podemos indicar que existe una raíz
positiva en el intervalo [0, 3]. Por lo tanto, este intervalo es nuestro punto de
partida.
Gráfico 3.5: Determinación de las raíces de 2 2xf x x .
MÉTODOS NÚMERICOS con VBA
88
Ahora para poder aplicar el método de bisección, debemos verificar que f(0) y f(3)
tengan signos opuestos:
2 00 0 2 1f y 2 33 3 2 1f entonces 0 . 3 1 0f f
Por tanto, f x si es continua en el intervalo [0, 3], iniciamos con los cálculos:
i) Calculamos el punto medio xr
1
3 01.5
2x
ii) Evaluamos 2 1.51.5 1.5 2 -0.57843f
Como 0 . 1.5 0.57843 > 0f f , entonces la raíz se encuentra en el
intervalo [1.5, 3]; es decir, a = x1 = 1.5
Nota: En este punto todavía no se calcula el error aproximado (a).
iii) Seguidamente calculamos el punto medio x2.
2
3 1.52.25
2x
Aquí calculamos la primera aproximación del error |a |
2 1
2
2.25 1.5100 100 33.33%
2.25a
x x
x
Continuamos con el proceso puesto que 33.33% > 1%. En la Tabla 3.1 se
presenta un resumen este método.
Se observa que se necesita realizar 8 iteraciones para obtener como resultado x8 =
2.00391 aproximación de la raíz en el intervalo [0, 3] con un error de 0.58%.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
89
Tabla N° 3.1: Aplicación del método de Bisección a 2 2xf x x en [0, 3].
t a b Xr f(a) f(b) f(Xr) |Ea|%
1 0 3 1.5 -1 1 -0.57843 100
2 1.5 3 2.25 -0.57843 1 0.30567 33.33
3 1.5 2.25 1.875 -0.57843 0.30567 -0.15239 20
4 1.875 2.25 2.0625 -0.15239 0.30567 0.07681 9.09
5 1.875 2.0625 1.96875 -0.15239 0.07681 -0.03831 4.76
6 1.96875 2.0625 2.01563 -0.03831 0.07681 0.01919 2.33
7 1.96875 2.01563 1.99219 -0.03831 0.01919 -0.00959 1.18
8 1.99219 2.01563 2.00391 -0.00959 0.01919 0.00480 0.58
Algoritmo e Implementación
Algoritmo 3.1: Algoritmo del Método de Bisección
Datos: a, b y f continua en [a, b] con f(a).f(b) < 0
Salida: Una aproximación xr de un cero de f en [a, b]
n = 0
repeat
xr = (a + b)/2
if f(a).f(xr) < 0 then
b = xr
else
a = xr
end if
n = n + 1
until ea < es
El código VBA 3.1, permite implementar la aproximación de la raíz del ejemplo
3.4, que corresponde a la función 2 2xf x x en el intervalo [0, 3].
MÉTODOS NÚMERICOS con VBA
90
Código VBA N° 3.1: Método de Bisección Function FUN(x)
FUN = (x ^ 2) - (2 ^ x)
End Function
‘----------------------------------------------------------------------
Sub Biseccion()
'MÉTODO DE BISECCIÓN EN EL INTERVALO [a,b]
Dim a, b, es As Double
n = 1 'Inicializa el número de iteraciones
Range("A11:I163").Value = "" 'Limpia las celdas
a = Range("B6").Value 'Intervalo inferior
b = Range("B7").Value 'Intervalo superior
es = Range("H6").Value 'Criterio de tolerancia
Ar = 0 'Valor Aproximado anterior
If FUN(a) * FUN(b) < 0 Then
Do
xr = (a + b) / 2 'Aproximación
fa = FUN(a)
fb = FUN(b)
fx = FUN(xr)
ff = fa * fx
ea = Abs((xr - Ar) / xr) * 100
'Imprime los valores
Cells(10 + n, 1) = n
Cells(10 + n, 2) = a
Cells(10 + n, 3) = b
Cells(10 + n, 4) = xr
Cells(10 + n, 5) = fa
Cells(10 + n, 6) = fb
Cells(10 + n, 7) = fx
Cells(10 + n, 8) = ff
Cells(10 + n, 9) = ea
If ff = 0 Then
Exit Do
ElseIf ff < 0 Then 'Evalúa para determinar subintervalo
b = xr
Else
a = xr
End If
Ar = xr
n = n + 1
Loop While ea > es
Else
MsgBox ("Error, f(x) DISCONTINUA o hay raíces pares")
End
End If
End Sub
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
91
Hoja para Bisección
A continuación se muestra la "página principal" de una hoja para Excel
(biseccion1.xlsx). La implementación recibe los valores a, b y s.
Figura 3.11: Hoja de Excel para el método de Bisección, ejemplo 3.4.
Ejemplo 3.5. Localizar un intervalo donde la función lnxf x e x , tenga una
raíz, luego aproxime la raíz de la ecuación por el método de Bisección hasta que
0.05%a .
Solución:
Primeramente, graficamos la función en un intervalo tentativo de [0, 2.5].
Hacemos: f(x) = 0. Por tanto, la función dada se puede escribir como:
lnxe x
Donde, 1
xf x e y 2 lnf x x . Implementamos en una hoja nueva lo
siguiente:
MÉTODOS NÚMERICOS con VBA
92
Figura 3.12: Cuadro de valores de f(x1) y f(x2).
Del gráfico 3.6 podemos indicar que las curvas de las funciones se intersectan
aproximadamente en el punto 1.3. Por tanto, podemos indicar que existe una raíz
positiva en el intervalo [1, 1.5]. Este intervalo es nuestro punto de partida.
Gráfico 3.6: Determinación de las raíces de lnxf x e x .
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
93
Implementación
Antes de realizar la implementación en VBA del ejemplo 3.5, realizamos el
copiado del archivo de Excel del ejemplo 3.4 y renombramos como
biseccion2.xlsx en cual realizaremos la modificación en la función (ver Código
VBA 3.2) y dejando como está la macro Biseccion():
Código VBA N° 3.2: Declaración de la función – ejemplo 3.5 Function FUN(x)
FUN = Exp(-x) - Log(x)
End Function
‘----------------------------------------------------------------------
Hoja Excel
En la hoja ingresamos los nuevos valores del intervalo a = 1 y b = 1.5, además el
número de cifras significativas para este caso sería n = 3, lo que nos genera un
criterio de tolerancia del 0.05% como lo solicitado en el ejemplo. Finalmente
presionamos en el botón de comando Ejecutar Bisección y no muestra los
siguientes resultados.
Figura 3.13: Hoja de Excel para el método de Bisección, ejemplo 3.5.
MÉTODOS NÚMERICOS con VBA
94
En este ejemplo se puede apreciar que se necesita realizar 10 iteraciones para
obtener como resultado x8 = 1.3100586 aproximación de la raíz en el intervalo [1,
1.5] con un error de 0.037%.
Es importante mencionar que, si incrementamos el número de cifras
significativas, esto hará que el número de iteración para realizar la aproximación
de la raíz se incremente.
Ejemplo 3.6. Use el método de bisección para aproximar la solución de la función
sin 1 f x x x , en el intervalo [0, 2], para la aproximación utilice 2 cifras
significativas.
Solución:
En este ejemplo se nos proporciona el intervalo que contendría a la raíz, por tanto,
no es necesario realizar el grafico de la función. Por consiguiente, pasamos a
comprobar la continuidad de la función en el intervalo dado.
Dado que: 0 1 f y 2 0.818595f , por tanto, f(0)*f(2) < 0 y la función es
continua en el intervalo [0,2]; es decir, que al menos existe una raíz.
Implementación
Como en el ejemplo anterior, realizamos el copiado del archivo de Excel del
ejemplo 3.4 y renombramos como biseccion3.xlsx en cual realizaremos la
modificación en la función (ver Código VBA 3.3) y dejando como está la macro
Biseccion():
Código VBA N° 3.3: Declaración de la función – ejemplo 3.6 Function FUN(x)
FUN = x * Sin(x) - 1
End Function
‘----------------------------------------------------------------------
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
95
Hoja Excel
Ahora ingresamos los valores del intervalo a = 0 y b = 2, además el número de
cifras significativas n = 3, lo que nos genera un criterio de tolerancia del 0.5%.
Finalmente presionamos en el botón de comando Ejecutar Bisección y no
muestra los siguientes resultados.
Figura 3.14: Hoja de Excel para el método de Bisección, ejemplo 3.6.
MÉTODOS NÚMERICOS con VBA
96
2.3. Método de Falsa Posición (Regla Falsa)
Como se vio en el método de bisección, sería bueno considerar si la raíz de una
ecuación está localizada más cerca de alguno de los extremos del intervalo, pues
es te método considera cual límite del intervalo está más próximo a la raíz.
Consideremos la siguiente figura:
f(x)
x
a
bp
xr
f(b)
f(a)
L(x)
Figura 3.15: Representación gráfica del método de falsa posición.
Donde hemos agregado la línea recta que une los puntos extremos de la gráfica en
el intervalo [a, b].
Es claro que si en lugar de considerar el punto medio del intervalo, tomamos el
punto donde cruza al eje x esta recta, nos aproximaremos mucho más rápido a la
raíz; ésta es en sí, la idea central del método de la regla falsa y ésta es realmente la
única diferencia con el método de bisección, puesto que en todo lo demás los dos
métodos son prácticamente idénticos.
Supongamos que tenemos una función f(x) que es continua en el intervalo [a, b], y
además, f(a) y f(b) tienen signos opuestos.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
97
De la figura 3.15 usando semejanza de triángulos, la intersección de la línea recta
con el de las x se estima mediante
r r
f a f b
x a x b
despejando xr tenemos:
r
f b a bx b
f a f b
Ésta es la fórmula de la falsa posición. El valor de xr calculado con esta ecuación,
remplazará, después, a cualquiera de los dos valores iniciales, a o b, y da un valor
de la función con el mismo signo de f(xr).
Ahora la nominación de éste método se debe a la falsa posición de la raíz de la
función f(x) si no de la recta L(x). Una ilustración de lo expuesto tenemos en la
figura 3.16.
f(x)
x
a
bp
x1
f(b)
f(a)f(x1)
...x2
f(x2)
Figura 3.16: Método gráfico de la falsa posición.
MÉTODOS NÚMERICOS con VBA
98
Método: Sea f(x) continua.
i) Elegir los valores iniciales a y b que encierren la raíz, tales que f(a) y f(b)
tienen signos opuestos, es decir:
f(a).f(b) < 0,
De la ecuación obtenida por semejanza de triangulo (Figura 3.13)
r r
f a f b
x a x b
Multiplicando en cruz la ecuación obtenemos
r r
r r
f a x b f b x a
f a x f a b f b x f b a
Agrupando términos tenemos
r r
r
f a x f b x f a b f b a
x f a f b f a b f b a
Dividiendo entre f a f b :
r
f a b f b ax
f a f b
Podemos expresar separando los términos
r
f a b f b ax
f a f b f a f b
sumando y restando b en el lado derecho:
r
f a b f b ax b b
f a f b f a f b
Agrupando términos se obtiene
r
f b a bx b
f a f b
Desarrollo del método de Falsa posición
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
99
ii) La primera aproximación a la raíz xr, se toma igual a:
r
f b a bx b
f a f b
iii) Evaluar f(xr), forzosamente debemos caer en uno de los siguientes casos:
a) Si f(a).f(xr) < 0, entonces la raíz se encuentra en el intervalo [a, xr]
inferior; por tanto, b = xr y vuelve al paso ii).
b) Si f(a).f(xr) > 0, entonces la raíz se encuentra en el intervalo [xr, b]
superior; por tanto, a = xr y vuelve al paso ii).
c) Si f(a).f(xr) = 0, la raíz es igual a xr; termina el cálculo.
El proceso se vuelve a repetir con el nuevo intervalo, hasta que: a s ,
Ejemplo 3.7. Usar el método de regla falsa para aproximar la raíz de la función
lnxf x e x , comenzando en el intervalo de [1, 2] y hasta que 1%a .
Solución:
Este es el mismo caso del ejemplo 3.5 correspondiente al método de la bisección.
Así pues, ya sabemos que f(x) es contínua en el intervalo dado y que toma signos
opuestos en los extremos de dicho intervalo. Por lo tanto, podemos aplicar el
método de la regla falsa.
i) Calculamos la primera aproximación:
a = 1 → f(a) = 0.36788
b = 2 → f(b) = -0.55781
1
2 1 2 0.55781 1 22 2 1.39741
1 2 0.36788 0.55781
fx
f f
Puesto que solamente tenemos una aproximación, debemos seguir con el
proceso.
MÉTODOS NÚMERICOS con VBA
100
ii) Así pues, evaluamos f(x1)
1.39741
1 1.39741 ln 1.39741 -0.08738f x e
Como 1 . 1.39741 < 0f f , entonces la raíz se encuentra en el intervalo [1,
1.39741]; es decir, b = x1 = 1.39741. Con este nuevo intervalo, calculamos la
nueva aproximación:
iii) Segunda aproximación
a = 1 → f(a) = 0.36788
b = 1.39741 → f(b) = -0.08738
2
1.39741 1 1.397411.39741
1 1.39741
0.08738 1 1.39741 1.39741 1.32113
0.36788 0.08738
fx
f f
En este momento, podemos calcular el primer error aproximado:
2 1
2
1.32113 1.39741100 100 5.77%
1.32113a
x x
x
Puesto que no se cumple el objetivo seguimos con el proceso.
Evaluamos 1.32113
2 1.32113 ln 1.32113 -0.01165f x e
Como 1 . 1.32113 < 0f f , entonces ahora la raíz se encuentra en el
intervalo [1, 1.32113]; es decir, b = x2 = 1.32113, con lo cual, calculamos la
nueva aproximación.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
101
iv) Tercera aproximación
a = 1 → f(a) = 0.36788
b = 1.32113 → f(b) = -0.01165
3
1.32113 1 1.321131.32113
1 1.32113
0.01165 1 1.32113 1.32113 1.31127
0.36788 0.001165
fx
f f
Y el error aproximado:
3 2
3
1.31127 1.32113100 100 0.75%
1.31127a
x x
x
Como se ha cumplido el objetivo, concluimos que la aproximación buscada
es:
3 1.31127x
Observe la rapidez con la cual converge el método de la regla falsa a la raíz, a
diferencia de la lentitud del método de la bisección, esto se pude ver en la
Tabla 3.2, la cual resume este método.
Tabla N° 3.2: Aplicación del método de Regla Falsa: lnxf x e x en [1, 2].
t a b Xr f(a) f(b) f(Xr) |Ea|%
1 1 2 1.39741 0.36788 -0.55781 -0.08738 100
2 1 1.39741 1.32113 0.36788 -0.08738 -0.01165 5.77
3 1 1.32113 1.31127 0.36788 -0.01165 -0.00152 0.75
Ventajas y desventajas
La ventaja del método de Falsa posición, al igual que el de bisección, es que es
siempre convergente para funciones continuas f(x). Aunque en general, converge
más rápidamente que el método de la bisección, su velocidad de convergencia es
baja.
MÉTODOS NÚMERICOS con VBA
102
Orden de convergencia
Se puede demostrar que bajo ciertas condiciones el método de Falsa posición
tiene orden de convergencia lineal. Esto sucede cuando la función f(x) es cóncava
entre a y b y el punto a es siempre uno de los dos puntos usados para la siguiente
iteración. Lo mismo ocurriría si fuese convexa en las inmediaciones de la raíz.
Algoritmo e Implementación
Algoritmo 3.2: Algoritmo del Método de Falsa posición
Datos: a, b, y f [a, b] con f(a).f(b) < 0
Salida: Una aproximación xr de un cero de f
n = 0
repeat
xr = b – (f(b)*(a - b))/(f(a) – f(b))
if f(a).f(xr) < 0 then
b = xr
else
a = xr
end if
n = n + 1
until ea < es
return xr
El código VBA 3.4, es similar al de bisección que nos permite implementar la
aproximación de la raíz del ejemplo 3.7, que corresponde a la función
lnxf x e x en el intervalo [1, 2]
Código VBA N° 3.4: Método de falsa posición Function FUN2(x)
FUN2 = Exp(-x) - Log(x)
End Function
‘----------------------------------------------------------------------
Sub Falsa_P()
'MÉTODO DE FALSA POSICIÓN EN EL INTERVALO [a,b]
Dim a, b, es As Double
n = 1 'Inicializa el número de iteraciones
Range("A11:I163").Value = "" 'Limpia las celdas
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
103
a = Range("B6").Value 'Intervalo inferior
b = Range("B7").Value 'Intervalo superior
es = Range("H6").Value 'Criterio de tolerancia
Ar = 0 'Valor Aproximado anterior
If FUN2(a) * FUN2(b) < 0 Then
Do
fa = FUN2(a)
fb = FUN2(b)
xr = b - (fb * (a - b)) / (fa - fb) 'Aproximación
fx = FUN2(xr)
ff = fa * fx
ea = Abs((xr - Ar) / xr) * 100
'Imprime los valores
Cells(10 + n, 1) = n
Cells(10 + n, 2) = a
Cells(10 + n, 3) = b
Cells(10 + n, 4) = xr
Cells(10 + n, 5) = fa
Cells(10 + n, 6) = fb
Cells(10 + n, 7) = fx
Cells(10 + n, 8) = ff
Cells(10 + n, 9) = ea
If ff = 0 Then
Exit Do
ElseIf ff < 0 Then 'Evalúa para determinar subintervalo
b = xr
Else
a = xr
End If
Ar = xr
n = n + 1
Loop While ea > es
Else
MsgBox ("Error, f(x) DISCONTINUA o hay raíces pares")
End
End If
End Sub
Hoja de cálculo
Se muestra la "página principal" de una hoja en Excel (falsap1.xlsx). La
implementación recibe los valores a, b y s, como en el caso de bisección.
MÉTODOS NÚMERICOS con VBA
104
Figura 3.17: Hoja de Excel para el método de Falsa posición, ejemplo 3.7.
Ejemplo 3.8. Sea la función cosf x x x , donde x є [0, 3] aproxime la raíz
con 4 cifras significativas por el método de falsa posición.
Solución
Primero buscamos el intervalo donde podemos encontrar al menos una raíz, para
lo cual hacemos: f(x) = 0. Por tanto, la función dada se puede escribir como:
cosx x
Donde, 1f x x y 2 cosf x x . Implementamos en una hoja de Excel, la
que se muestra en la figura 3.18.
En el gráfico 3.6 se observa que las curvas de las sub funciones se intersectan
aproximadamente en el punto 0.6. Por tanto, podemos indicar que existe una raíz
en el intervalo [0, 1].
Por lo tanto, podemos aplicar el método de la regla falsa. Pero, antes de aplicar el
método es necesario determinar el criterio de tolerancia con 4 cifras significativas
para la aproximación.
2 40.5 10 % 0.005%s
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
105
Figura 3.18: Cuadro de valores de f(x1) y f(x2).
Gráfico 3.7: Determinación de las raíces de cosf x x x .
i) Calculamos la primera aproximación:
1
0.45970 0 11 0.68507
1 0.45970x
evaluamos f(x1)
MÉTODOS NÚMERICOS con VBA
106
1 0.68507 cos 0.68507 0.05332f x
Como 0 . 0.68507 < 0f f , entonces la raíz se encuentra en el intervalo
[0, 0.68507]; es decir, b = x1 = 0.68507. Con este nuevo intervalo, calculamos
la nueva aproximación:
ii) Segunda aproximación
2
0.05332 0 0.685070.68507 0.65039
1 0.05332x
calculamos el primer error aproximado:
0.65039 0.68507100 5.33%
0.65039a
Puesto que este error es mayor a 0.005% seguimos con el proceso y
evaluamos:
2 0.65039 cos 0.65039 0.01063f x
Como 1 . 0.65039 < 0f f , entonces ahora la raíz se encuentra en el
intervalo [0, 0.65039]; es decir, b = x2 = 0.65039, y así continuamos hasta que
0.005%a y esto se puede verificar con la implementación del programa
en VBA, tal como el ejercicio anterior.
Implementación
Primeramente copiamos el archivo de Excel del ejemplo 3.7 y renombramos
como falsap2.xlsx en cual modificamos en la función (ver Código VBA 3.5) y
dejando como está la macro Falsa_P().
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
107
Código VBA N° 3.5: Declaración de la función – ejemplo 3.8 Function FUN2(x)
FUN2 = Sqr(x) - Cos(x)
End Function
‘----------------------------------------------------------------------
Hoja Excel
En la hoja ingresamos los nuevos valores del intervalo a = 0 y b = 1, además el
número de cifras significativas para este caso sería n = 4, lo que nos genera un
criterio de tolerancia del 0.005% como lo solicitado en el ejemplo. Finalmente
presionamos en el botón de comando Ejecutar Falsa posición y no muestra los
siguientes resultados.
Figura 3.19: Hoja de Excel para el método de Falsa posición, ejemplo 3.8.
Se necesita realizar 7 iteraciones para obtener como resultado x7 = 0.64171832
aproximación de la raíz en el intervalo [0, 1] con un error de 0.002%.
Ejemplo 3.9. La función:
2 2ln 1 cosx
f x x e x
Tiene una cantidad infinita de raíces, graficando en el intervalo [-5,6] se tiene:
MÉTODOS NÚMERICOS con VBA
108
Figura 3.20: Cuadro de valores de f(x)
Se observa en el gráfico 3.8 que existen 7 raíces en el intervalo [-5, 6], es
importante indicar que, cuando un punto es menor que cero y el otro es mayor que
cero, se puede proceder a resolver la ecuación por el método de falsa posición.
Gráfico 3.8: Raíces múltiples de f(x).
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
109
En ese sentido, podemos determinar los siguientes intervalos en la cual la f(x) es
continua y que encierran las siguientes raíces:
x1 [-1, -0.5]
x2 [0, 0.8]
x3 [1, 2]
x4 [2, 3]
x5 [3, 4]
x6 [4, 5]
x7 [5, 6]
A continuación aproximaremos cada una de las raíces haciendo uso del programa
implementado en VBA, para lo cual, es necesario determinar el criterio de
tolerancia, en este caso, trabajaremos con 5 cifras significativas para la
aproximación.
Implementación
Copiamos el archivo de Excel del ejemplo 3.7 y renombramos como falsap3.xlsx
en cual modificamos en la función (ver Código VBA 3.6) y dejando como está la
macro Falsa_P().
Código VBA N° 3.6: Declaración de la función – ejemplo 3.9 Function FUN2(x)
FUN2 = Log(x ^ (2) + 1) - Exp(x / 2) * Cos(Pi * x)
End Function
‘----------------------------------------------------------------------
Hoja Excel
En la hoja ingresamos los valores de los intervalos, además el número de cifras
significativas para este caso sería n = 5, lo que nos genera un criterio de tolerancia
del 0.0005%. Se muestra los siguientes resultados.
Mostraremos los resultados en la hoja de cálculo, solamente dos y seguidamente
mostraremos el resumen de las raíces aproximadas.
MÉTODOS NÚMERICOS con VBA
110
Figura 3.21: Aproximación de la raíz x1.
Figura 3.22: Aproximación de la raíz x5.
Las aproximaciones son:
Raíz Aproximación Iteración
x1 [-1, -0.5]
x2 [0, 0.8]
x3 [1, 2]
x4 [2, 2.5]
x5 [3, 4]
x6 [4, 4.8]
x7 [5, 6]
-0.4319108
0.4525301
1.6970842
2.3022052
3.6415664
4.3912663
5.5686684
4
7
5
9
5
7
5
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
111
EJERCICIOS CAP. 3.2
1. Determinar el número de iteraciones necesarias por el método de bisección, para
aproximar el cero de . 1f x x sen x con una tolerancia de 0.5×10-2 en el
intervalo [0, 2].
2. Obtener una raíz de la función 4 13.9xf x en el intervalo [1,2] por el método
de bisección. Realice la aproximación con 5 cifras significativas.
3. Aproxime la raíz de la función ln 5 1.9f x x en el intervalo [1,2] por el
método de bisección. Realice la aproximación con 7 cifras significativas.
4. Aproxime la solución de la siguiente ecuación por el método de bisección:
1 1
1
tet
, con t [0, 1]
Considere para la aproximación 3 cifras significativas.
5. Encontrar x con un error aproximado más pequeño que 0.05% en la siguiente
ecuación:
1sen x x , con x [0, 1]
Nota: utilice el método de falsa posición.
6. Por medio del método de la falsa posición aproxima una raíz de la ecuación
10xf x xe , hasta que |a| < 0.05%.
a) Verifica que la raíz está en el intervalo [1, 2]
b) Con la penúltima y última iteración calcula el error relativo de la
aproximación, indicando la cantidad de cifras significativas correctas según el
error relativo.
7. Resuelva las siguientes ecuaciones a través de los métodos de bisección y regla
falsa:
a) Determine la raíz real máxima de 3 26 11 6.1f x x x x con x [0.5, 3.5]
b) Determine la raíz positiva mínima de 7 . 1xf x sen x e con x [0, 4]
c) Cuál de los dos métodos es más efectivo en los casos a) y b), sabiendo que el
criterio de tolerancia es 0.05%
MÉTODOS NÚMERICOS con VBA
112
8. Determinar intervalos de tamaño 1, tales que cada uno contenga una o más raíces
(impares) de:
219 0.5 1 x xf x x x e e , con: -10 < x < 10
Aproxime las raíces halladas utilizando el programa de Excel hasta que |a| < 0.5%,
con los métodos de bisección y falsa posición.
9. Por medio del método de falsa posición, encontrar la mínima raíz positiva de:
1
tan2
f x x x
la cual se sabe que se encuentra en 0.1 < x < 1.4. Realice la aproximación a 5
decimales.
10. Obtener una raíz de la función cos 0.2f x x sen x en el intervalo [0, 1] por
el método de falsa posición, sabiendo que el criterio de tolerancia es 0.005%.
11. Obtener una raíz de la función 1
3 1 1.8f x x
en el intervalo [0, 2] por el
método de la falsa posición. Realice la aproximación con 3 cifras significativas.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
113
3. MÉTODOS ABIERTOS
En los métodos que usan intervalos, la raíz se encuentra entre un límite inferior y otro
superior. Son métodos convergentes, ya que se acercan progresivamente a la raíz a
medida que crece el número de iteraciones.
Al contrario, los métodos abiertos se basan en fórmulas que requieren de un solo valor
de x, o de un par de ellos que no necesariamente encierran la raíz. A veces divergen o
se alejan de la raíz a medida que aumentan las iteraciones.
Pero cuando convergen en general lo hacen mucho más rápido que los métodos que
usan intervalos. Entre los más importantes tenemos:
Iteración de Punto Fijo
Método de Newton-Raphson
f(x)
x
xi
xi+1
a)
f(x)
x
xi
xi+1
b)
Figura 3.23: a) Divergencia y b) convergencia de los métodos abiertos.
3.1. Iteración simple de Punto Fijo
Un punto fijo de una función g, es un número p talque g(p) = p. Este método se
aplica para resolver ecuaciones de la forma
( )x g x
MÉTODOS NÚMERICOS con VBA
114
Si la ecuación es f(x) = 0, entonces puede despejarse x ó bien sumar x en ambos
lados de la ecuación para ponerla en la forma adecuada.
Planteamiento del problema
- Considerar la descomposición de la función f(x) en una diferencia de dos
funciones: una primera g(x) y la segunda, siempre la función x.
( )f x x g x
- La raíz de la función f(x) se da cuando f(x) = 0, es decir, cuando
( ) 0x g x
Por lo que:
( )x g x
- El punto de intersección de las dos funciones da entonces el valor exacto de
la raíz (tiene un punto fijo en p).
- El método de punto fijo inicia con una aproximación inicial 0x y
1i ix g x genera una sucesión de aproximación la cual converge a la
solución de la ecuación f(x) = 0. A la función g(x) se le conoce como función
iteradora.
- Se puede demostrar que dicha sucesión nx , i = 1, 2, 3, …, n converge
siempre y cuando
' 1g x
- El proceso se repite n veces hasta que g(x) coincide prácticamente con x de
las siguientes maneras:
Método: Sea la ecuación general f(x) = 0.
i) Transformar f(x) en una función equivalente a:
( )x g x
ii) “Tantear” el valor para la raíz, se hace una observación directa de la
ecuación, se denota este primer valor por 0x .
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
115
iii) Una ves que se tiene 0x se evalúa g(x) en 0x , el resultado se denota por:
1 0( )x g x
El valor de 1x comparado con 0x presenta los siguientes casos:
a) 1 0x x : Esto indica que el valor de 0x elegido es una raíz y el problema
queda concluido, ya que cumple: f(x) = 0.
b) 1 0x x : En este caso se obtiene que 0 0g x x , en estas circunstancias
se procede a una segunda evaluación de g(x), pero ahora en 1x , el
resultado se denota como:
2 1( )x g x
Este proceso se repite y se obtiene un proceso iterativo hasta que
1 ( )i ix g x , es decir;
1i ix x
Es importante mencionar que como en otros métodos los procesos se repiten hasta
que a s .
Representación gráfica del método
f(x)
xx0
a)
f(x)
x
b)
x1x2
x
g(x)
x0x1 x2
x
g(x)
Figura 3.24: Representación de la convergencia del método de punto fijo.
MÉTODOS NÚMERICOS con VBA
116
f(x)
xx0
a)
f(x)
x
b)
xg(x)
x0
xg(x)
Figura 3.25: Representación de la divergencia del método de punto fijo.
La representación gráfica de la convergencia se muestra en la figura 3.24 y el caso
de la divergencia se muestra en la figura 3.25. Las figuras a) de 3.24 y 3.25
tienen un comportamiento monótono; mientras que las figuras b) tienen un
comportamiento oscilatorio o en espiral. Deberá notar que la convergencia se
obtiene cuando ' 1g x .
Ejemplo 3.10. Usar el método de iteración simple de punto fijo para localizar la
raíz de la función xf x e x , hasta que 1%a . Tomar como punto inicial
0x = 0.
Solución:
i) Igualamos la función f(x) = 0 y por consiguiente transformarla a la forma
( )x g x :
0xe x xe x
Por tanto,
xg x e
ii) Empezamos con un valor inicial de 0x = 0.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
117
iii) Evaluamos g(x) en 0x = 0.
0 0
0 1x
g x e e
Por tanto, 1 0 1x g x
Como 1 0x x , entonces, evaluamos g(x) en 1x = 1.
1
1 0,36788g x e
Por tanto, 2 1 0.36788x g x
iv) Calculamos la primera aproximación del error |a|
0.36788 1100 171.83%
0.36788a
v) Continuando con el proceso, podemos resumir los resultados en la Tabla 3.3
hasta que |a| < 1%.
Tabla N° 3.3: Aplicación del método de Punto Fijo a xf x e x .
Iteración xi g(xi) |a|%
1 0 1
2 1 0.36788 171.83%
3 0.36788 0.69220 46.85%
4 0.69220 0.50047 38.31%
5 0.50047 0.60624 17.45%
6 0.60624 0.54540 11.16%
7 0.54540 0.57961 5.90%
8 0.57961 0.56012 3.48%
9 0.56012 0.57114 1.93%
10 0.57114 0.56488 1.11%
11 0.56488 0.56843 0.62%
Donde la raíz seria 11x = 0.56843 con un |a|% = 0.62%
MÉTODOS NÚMERICOS con VBA
118
Algoritmo e Implementación
Algoritmo 3.3: Algoritmo del Método de Punto fijo
Datos: x0, y g(x)
Salida: Una aproximación xr de un cero de f
n = 0
xr = x0
repeat
xrold = xr
xr = g(xrold)
if xr ≠ 0 then
ea=abs((xr-xrold)/xr)*100
end if
n = n + 1
until ea < es
return xr
El código VBA 3.8, se implementa de manera más sencilla que los métodos
anteriores, en este caso aproximamos la raíz del ejemplo 3.10, que corresponde a
la función xf x e x con función iteradora xg x e y como punto inicial
x0 = 0.
Código VBA N° 3.8: Método abierto de Punto fijo Function FUN3(x)
'Función iteradora g(x)
FUN3 = Exp(-x)
End Function
‘---------------------------------------------------------------------
Sub Punto_F()
'METODO BIERTO DE PUNTO FIJO
Dim n As Integer
Dim ea, es, Ar As Double
x = Range("A10").Value 'valor inicial
es = Range("E6").Value 'criterio de tolerancia
Ar = 0 'Valor aproximado anterior
n = 1 'Inicializa el n° de iteraciones
Range("B10:E500").Value = ""
Do
gx = FUN3(x)
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
119
ea = Abs((gx - Ar) / gx) * 100
Ar = gx
'Imprime valores
Cells(9 + n, 2) = n - 1
Cells(9 + n, 3) = x
Cells(9 + n, 4) = gx
Cells(9 + n, 5) = ea
x = gx
n = n + 1
Loop While ea > es
End Sub
Hoja de cálculo
A continuación, mostramos la "página principal" de una hoja en Excel
(punto_fijo1.xlsx). La implementación recibe el valor inicial x0 y el criterio de
tolerancia s,.
Figura 3.26: Hoja de Excel para el método de Punto fijo, ejemplo 3.10.
MÉTODOS NÚMERICOS con VBA
120
Ejemplo 3.11. Aproxime las raíces de la función 2 2 3f x x x , sabiendo que
tiene dos ceros en x1 = -1 y x2 = 3.
Supóngase que se reordena para lograr la forma equivalente: x = g(x)
2
2
2 3 0
2 3
2x 3 2x 3
x x
x x
x g x
Si se comienza con x0 = 4 y se aproxima con la iteración de punto fijo, los valores
sucesivos de x son:
0
1 0
4
2 4 3 3.31662
x
x g x
Calculamos la primera aproximación del error |a|
3.31662 4100 20.6%
3.31662a
Continuamos
2 1 2 3.31662 3 3.10375x g x con 6.86%a
3 2 2 3.10375 3 3.03439x g x con 2.29%a
4 3 2 3.03439 3 3.01144x g x con 0.76%a
5 4 2 3.01144 3 3.00381x g x con 0.25%a
parece que los valores convergen a x = 3 y el error aproximado decrece
rápidamente.
Otro reordenamiento de f(x) = 0 es:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
121
2 2 3 0
2 3 0
3 3
2 2
x x
x x
x g xx x
Si nuevamente se comienza con x0 = 4, los valores sucesivos de x son:
0 4x
1 0
31.5
4 2x g x
125%a
2 1
36
1.5 2x g x
1500%a
3 2
30.375
6 2x g x
70.31%a
4 1.263158x 37.4%a
5 0.919355x 10.54%a
6 1.02762x 3.71%a
7 0.990877x 1.21%a
8 1.00305x 0.4%a
parece que ahora x converge al otro cero de f, x = -1 y el error aproximado tiende
a incrementar para luego decrecer lentamente.
Considérese un tercer reordenamiento:
2
2
2 2
2 3 0
2 3
3 3
2 2
x x
x x
x xx g x
Comenzando de nuevo con x0 = 4 se obtiene:
MÉTODOS NÚMERICOS con VBA
122
0 4x
1 6.5x 60.6%a
2 19.625x 86.9%a
3 191.070x 98.4%a
En este tercer caso resulta evidente que las iteraciones son divergentes y el error
aproximado va incrementando.
La diferencia en el comportamiento de los tres reordenamientos se puede apreciar
considerando las gráficas en los tres casos. El punto fijo de x = g(x) es la
intersección de la recta y = x, y la curva y = g(x). En la figura 3.27 se presentan
los tres casos.
Se comienza en el eje x con x0, se efectúa un desplazamiento vertical hacia la
curva, luego uno horizontal hacia la recta y = x, luego uno vertical hacia la curva
y nuevamente una horizontal hacia la recta. Este proceso se repite hasta que los
puntos en la curva convergen a un punto fijo o bien divergen. Parece que los
diferentes comportamientos dependen de que la pendiente de la curva sea mayor,
menor o de signo opuesto a la pendiente de la recta (que es igual a 1)
Cuando se tiene la ecuación f(x) = 0, existen muchas formas de reordenarla en la
forma x = g(x). Una pregunta que surge en este momento es ¿cuál de las funciones
g(x) sirve para aproximar el punto fijo de g? (o en forma equivalente el cero de f).
Para responder, se tendrá que comprobar lo siguiente:
' 1g x
entonces g(x) tiene un punto fijo.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
123
Figura 3.27: Comportamiento de los reordenamientos de g(x).
Ejemplo 3.12. Usar el método de iteración del punto fijo para aproximar la raíz de
cosf x x x , comenzando con x0 = 0 y hasta que |a| < 1%.
La ecuación cos 0x x se puede transformar en cos x x , entonces
g cosx x .
Ahora comprobaremos si tiene un punto fijo, es decir converge a la raíz, para lo
cual obtenemos la derivada de g(x):
MÉTODOS NÚMERICOS con VBA
124
g' x sen x
Por tanto; ' (0) 0 1g x sen , es decir, converge a la raíz.
Aplicando la fórmula iterativa tenemos,
0 0x
1 0 cos 0 1x g x con 100%a
2 1 cos 1 0.540302x g x con 85.08%a
Intuimos que el error aproximado se irá reduciendo muy lentamente. En efecto, se
necesitan hasta 13 iteraciones para lograr reducir el error aproximado menor al
1%. El resultado final que se obtiene es: 13 0.741425x con un error aproximado
igual al 0.78%.
A continuación, aproximaremos la raíz haciendo uso del programa implementado
en VBA, para lo cual, es necesario determinar el criterio de tolerancia, en este
caso, trabajaremos con 2 cifras significativas para la aproximación.
Implementación
Modificamos en la función (ver Código VBA 3.6) y dejando como está la macro
Falsa_P().
Código VBA N° 3.9: Declaración de la función – ejemplo 3.12 Function FUN3(x)
'Función iteradora g(x)
FUN3 = Cos(x)
End Function
‘----------------------------------------------------------------------
A continuación, mostramos el diseño en la hoja de cálculo de Excel, al cual
renombraremos como punto_f2.xlsx.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
125
Hoja Excel
Figura 3.28: Hoja de Excel para el método de Punto fijo, ejemplo 3.12.
MÉTODOS NÚMERICOS con VBA
126
3.2. Método de Newton-Raphson
Entre los métodos más populares en matemáticas computacionales tenemos al
creado por Isaac Newton y Joseph Raphson. Este método, el cual es un método
iterativo, es uno de los más usados y efectivos. Se le conoce como el método de
Newton-Raphson.
El atractivo de éste método es su rapidez cuadrática de convergencia, como
veremos más adelante. Una desventaja es que para la aplicación del método se
requiere tener tanto la función f(x) que quiere resolverse, así como su derivada.
Dado un valor inicial de ix , se puede extender una tangente desde el punto
,i ix f x . El punto donde la tangente cruza al eje x representa una
aproximación mejorada a la raíz.
De la figura 3.29, se tiene que la primera derivada en x es equivalente a la
pendiente:
1
0'
i
i
i i
f xf x
x x
despejando 1ix nos da:
1
'
i
i i
i
f xx x
f x
con ' 0if x , la cual se le conoce como la fórmula de Newton-Raphson.
Es importante mencionar que el método de Newton-Raphson no trabaja con
intervalos donde nos asegure que encontraremos la raíz, y de hecho no tenemos
ninguna garantía de que nos aproximaremos a dicha raíz. Desde luego, existen
ejemplos donde este método no converge a la raíz, en cuyo caso se dice que el
método diverge. Sin embargo, en los casos donde si converge a la raíz lo hace con
una rapidez impresionante, por lo cual es uno de los métodos preferidos por
excelencia.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
127
Nótese que en el caso de que ' 0if x , el método no se puede aplicar. De
hecho, vemos geométricamente que esto significa que la recta tangente es
horizontal y por lo tanto no intersecta al eje x en ningún punto, a menos que
coincida con éste, en cuyo caso ix mismo es una raíz de f x .
f(x)
xxi
f(xi)
0xi+1
f(xi) - 0
Pendiente = f'(xi)
xi - xi+1
Figura 3.29: Representación gráfica del método de Newton - Raphson.
Método: Sea la ecuación general f(x) = 0.
i) Hallar la primera derivada de la función f(x): f’(x)
ii) Comprobar que f’(x) 0 para poder aplicar el método.
iii) Elegir el valor inicial de aproximación 0x .
iv) Una vez que se tiene 0x calcular la siguiente aproximación a través de la
fórmula de Newton-Raphson:
1
'
i
i i
i
f xx x
f x
Este proceso se repite hasta que a s .
MÉTODOS NÚMERICOS con VBA
128
Desventajas del método de Newton-Raphson
En general el método de Newton-Raphson es muy eficiente, pero hay situaciones
donde se comporta de manera deficiente. A continuación, se muestra cuatro casos
en los que el método es deficiente.
f(x)
x
x1 x2
a) b)
x0
f(x)
xx1x2x0 x3x4
f(x)
x
x1
x2
c) d)
x0
f(x)
xx1x0
Figura 3.30: Convergencia deficiente del método de Newton – Raphson.
Ejemplo 3.13. Usar el método Newto-Raphson para localizar la raíz de la función
xf x e x , hasta que 1%a . Tomar como punto inicial 0x = 0.
Solución:
i) Hallamos la primera derivada de la función f(x):
' 1xf x e
y se observa que la derivada es diferente de cero.
ii) Empezamos con un valor inicial de 0x = 0.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
129
iii) Sustituimos la derivada junto a función original en la fórmula de Newton-
Raphson.
11
i
i
x
i
i i x
e xx x
e
Por tanto,
0
0
0
0
1 0 0
00 0.5
11
x
x
e x ex x
ee
Segunda iteración: 1
1
0.5
1
2 1 0.5
0.50.5 0.56631
11
x
x
e x ex x
ee
iv) Calculamos la primera aproximación del error |a|
0.5 0100 100.0%
0.5a
v) Continuando con el proceso, podemos resumir los resultados en la Tabla 3.4
hasta que |a| < 1%.
Así, el método converge rápidamente a la raíz verdadera. Observe que error
aproximado porcentual disminuye cada vez más rápido que en la iteración de
punto fijo. La raíz es 2x = 0.56631 con un |a|% = 0.15%.
Tabla N° 3.4: Aplicación del método de Newton-Raphson a xf x e x .
Iteración xi f(xi) f'(xi) |a|%
0 0 1 -2 100.00%
1 0.5 0.10653 -1.60653 11.71%
2 0.56631 0.00130 -1.56762 0.15%
MÉTODOS NÚMERICOS con VBA
130
Algoritmo e Implementación
Algoritmo 3.4: Algoritmo del Método de Newton - Raphson
Datos: x0, fx y fdx.
Salida: Una aproximación xr de un cero de f, si la iteración converge.
n = 0
xr = x0
repeat
dx = fx / fdx
xr+1 = xr - dx
xr = xr+1
n = n + 1
until ea < es
return xr
El código VBA 3.10, se implementa de manera similar al método de punto fijo,
en este se tiene la aproximación de la raíz del ejemplo 3.13, que corresponde a la
función xf x e x con la primera derivada de la función ' 1xf x e y
punto inicial x0 = 0.
Código VBA N° 3.10: Método abierto Newton - Raphson Function FUNf(x)
'Evaluación de la función f(x)
FUNf = Exp(-x) - x
End Function
‘-----------------------------------------------------------------------
Function FUNfd(x)
'Evaluación de la derivada de f(x)
FUNfd = -Exp(-x) - 1
End Function
‘-----------------------------------------------------------------------
Sub Newton_Raphson()
'METODO ABIERTO DE Newton - Raphson
Dim n As Integer
Dim ea, es, Ar As Double
x = Range("A10").Value 'valor inicial
es = Range("F6").Value 'criterio de tolerancia
Ar = 0 'Valor aproximado anterior
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
131
n = 1 'Inicializa el n° de iteraciones
Range("B10:F500").Value = ""
Do
fx = FUNf(x)
fdx = FUNfd(x)
xr = x - (fx / fdx)
ea = Abs((xr - Ar) / xr) * 100
Ar = xr
'Imprime valores
Cells(9 + n, 2) = n - 1
Cells(9 + n, 3) = x
Cells(9 + n, 4) = fx
Cells(9 + n, 5) = fdx
Cells(9 + n, 6) = ea
x = xr
n = n + 1
If n > 100 Then 'Máximo de iteraciones
End
End If
Loop While ea > es
End Sub
Hoja de cálculo
Se muestra la "página principal" de una hoja en Excel (newton-raphson1.xlsx). La
implementación recibe el valor inicial x0 y el criterio de tolerancia s.
Figura 3.31: Hoja de Excel para el método de Newton-Raphson, ejemplo 3.13.
MÉTODOS NÚMERICOS con VBA
132
Desventajas del método
Aunque en general el método de Newton-Raphson es muy eficiente, hay
situaciones donde se comporta de manera deficiente. Por ejemplo en el caso
especial de raíces múltiples. Sin embargo, también cuando se trata de raíces
simples, se encuentran dificultades, como el siguiente ejemplo.
Ejemplo 3.14. Determine la raíz positiva de 10 1f x x usando el método de
Newton-Raphson con un valor inicial de x0 = 0.5.
En este caso tenemos que:
9' 10f x x
De aquí tenemos que: 10
1 9
1
10
i
i i
i
xx x
x
comenzamos con x0 = 0.5 y obtenemos
10 10
0
1 0 9 9
0
1 0.5 10.5 51.65
10 10 0.5
xx x
x
con lo cual, el error aproximado es,
51.65 0.5100 11.11%
51.65a
Continuamos el proceso hasta reducir el error aproximado hasta donde se pidió.
Resumimos los resultados en la siguiente tabla 3.5.
De esta forma, podemos observar que después de la predicción deficiente, la
técnica converge a la raíz verdadera, 1, pero muy lentamente.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
133
Tabla N° 3.5: Caso especial del método de Newton-Raphson.
Iteración xi f(xi) f'(xi) |a|%
0 0.5 -0.99902343 0.01953125 100
1 51.65 1.35115E+17 2.61597E+16 11.111
2 46.485 4.71117E+16 1.01348E+16 11.111 3 41.8365 1.64268E+16 3.92643E+15 11.111 4 37.65285 5.72768E+15 1.52118E+15 11.111 5 33.887565 1.99712E+15 5.89336E+14 11.111 6 30.4988085 6.96352E+14 2.28321E+14 11.111 7 27.44892765 2.42803E+14 8.84562E+13 11.111 8 24.70403489 8.46601E+13 3.42698E+13 11.111 9 22.2336314 2.95192E+13 1.32768E+13 11.111
10 20.01026826 1.02927E+13 5.14371E+12 11.111 11 18.00924143 3.58884E+12 1.99278E+12 11.111 12 16.20831729 1.25135E+12 7.72043E+11 11.111 13 14.58748556 4.36319E+11 2.99105E+11 11.111 . . . . .
. . . . .
. . . . .
39 1.023664661 0.263505419 12.34296217 2.130
40 1.002316024 0.023403117 10.21038368 0.229
Implementación
Modificamos las dos funciones (ver Código VBA 3.11) y dejando como está la
macro Newton_Raphson().
Código VBA N° 3.11: Declaración de la función – ejemplo 3.12 Function FUN3(x)
'Evaluación de la función f(x)
FUNf = x ^ (10) - 1End Function
‘----------------------------------------------------------------------
Function FUNfd(x)
'Evaluación de la derivada de f(x)
FUNfd = 10 * (x ^ 9)
End Function
‘----------------------------------------------------------------------
MÉTODOS NÚMERICOS con VBA
134
Modificamos la hoja de cálculo de Excel, al cual renombraremos como
newton_raphson2.xlsx.
Figura 3.32: Hoja de Excel para el método de Newton-Raphson, ejemplo 3.14.
Ejemplo 3.15. Usar el método de Newton-Raphson, para aproximar la raíz de
lnxf x e x , comenzando con x0 = 1 y hasta que 0.005%a . Realice
la aproximación haciendo uso del programa implementado en VBA.
Tenemos la primera derivada de la función:
1
' xf x ex
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
135
De aquí tenemos que:
1
ln ln
1 1
i i
i i
x x
i i
i i ix x
i i
e x e xx x x
e ex x
Con estos datos procedemos a implementar el programa.
Implementación
Modificamos las dos funciones de acuerdo al ejercicio:
Código VBA N° 3.11: Declaración de la función – ejemplo 3.15 Function FUN3(x)
'Evaluación de la función f(x)
FUNf = Exp(-x) - Log(x)
End Function
‘----------------------------------------------------------------------
Function FUNfd(x)
'Evaluación de la derivada de f(x)
FUNfd = -Exp(-x) - (1 / x)
End Function
‘----------------------------------------------------------------------
Y se muestra los siguientes resultados en la figura 3.33, en la cual se observa la
convergencia rápida del método con una aproximación de x3 = 1.30979939.
Figura 3.32: Hoja de Excel para el ejemplo 3.15.
MÉTODOS NÚMERICOS con VBA
136
EJERCICIOS CAP. 3.3
1. Con el método de iteración simple de punto fijo localice la raíz de:
f x sen x x
Use un valor inicial de x0 = 0.5 y haga iteraciones hasta que 0.01%a .
2. Encontrar la raíz cerca x = 1 de 1 35xf x e x iniciando con x0 = 1. Aproxime
hasta que 0.05%a .
3. Determine la raíz de 20.9 1.7 2.5f x x x usando x0 = 5. Efectué el cálculo
hasta que a sea menor a 0.01%. Realice a través de:
a) Punto fijo
b) Newton-Raphson
4. Aplicación a la cinemática. Una partícula se mueve con una velocidad (en
metros/segundo) dada en función del tiempo por medio de la función:
3 22v t t t
Utilizando el Método de Newton Raphson aproxima el tiempo en el que la
partícula alcanza una velocidad de 1m/s, a partir del reposo.
a) Plantea la ecuación a resolver y la fórmula del Método de Newton-Raphson
para este caso
b) Calcula hasta la quinta iteración, considerando la iteración inicial es igual a 3.
c) ¿Se puede considerar al valor cero como iteración inicial? Explica.
5. Encontrar la raíz de la ecuación 3 24 10f t x x , tomando como
aproximación inicial para la raíz el valor de x0 = 1.0 y 10 iteraciones como
máximo, con tolerancia de 0.0001%. use los métodos de Punto fijo y newton-
Raphson y concluya cuál de los dos métodos es mejor.
6. Calcule la raíz positiva más pequeña de 1
tan2
y x x mediante el método de
Newton. Sugerencia: Para determinar el punto inicial x0, puede graficar la función
en el intervalo de [0, ].
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
137
7. Determine la mayor raíz real de:
3 26 11 6.1f x x x x
a) Gráficamente
b) Con el método de Iteración simple de punto fijo (5 iteraciones, x0 = 3.5)
c) Con el método de Newton-Raphson (5 iteraciones, xi = 3.5)
8. La ecuación 2 2 3 0x x se puede reformular mediante el método de punto fijo
como sigue:
a) 2 3
2
xx
b) 2 3x x
c) 2 3x
xx
d) 20.2 2 3x x x x
Determine cuál de las fórmulas anteriores converge más rápido a la solución de la
raíz positiva (Las soluciones de la ecuación son x = 3 y x = - 1). Use un valor
inicial de x0 = 2 y realice iteraciones hasta que |a| < 0.01%.
9. Considere la ecuación: 2 cos 3x x
a) Determine el valor de la raíz mediante el método de N-R, partiendo del punto
x0 = 0 y haciendo las iteraciones necesarias para que el error sea menor que
0.0001%.
b) Esta vez haga uso del método de Punto fijo. ¿Qué puede concluir?
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
139
Capítulo 4
Capítulo 4: INTERPOLACIÓN POLINOMIAL
MÉTODOS NÚMERICOS con VBA
140
INTRODUCCIÓN
Una función de interpolación es aquella que pasa a través de puntos dados como datos,
Los cuales se muestran comúnmente por medio de una tabla de valores o se toman
directamente de una función dada.
La interpolación de los datos puede hacerse mediante un polinomio. La interpolación
polinomial (ajustar un polinomio a los puntos dados) es uno de los temas más
importantes en métodos numéricos, ya que la mayoría de los demás modelos
numéricos se basan en la interpolación polinomial. Por esto, el objetivo de este
capítulo es analizar los aspectos básicos de la interpolación polinomial y sus
aplicaciones.
Recuerde que la fórmula general para un polinomio de n-ésimo orden es
2
0 1 2
n
nf x a a x a x a x (1)
Dados n + 1 puntos, hay uno y sólo un polinomio de grado n que pasa a través de
todos los puntos. Por ejemplo, hay sólo una línea recta (es decir, un polinomio de
primer grado) que conecta dos puntos (vea la figura 4.1a). De manera similar,
únicamente una parábola conecta un conjunto de tres puntos (ver figura 4.1b).
Interpolación polinomial consiste en determinar el único polinomio de n-ésimo grado
que ajuste n + 1 puntos. Este polinomio entonces proporciona una fórmula para
calcular valores intermedios.
a) b) c)
Figura 4.1: Casos de interpolación polinomial.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
141
Los datos obtenidos mediante una medición pueden interpolarse, pero en la mayoría
de los casos no es recomendable una interpolación directa debido a los errores
aleatorios implicados en la medición. Así pues, el ajuste de una curva a los datos
obtenidos de esta forma se describe por separado en el capítulo 5.
La Tabla 4.1 da un breve panorama de los métodos de interpolación que describiremos
en este capítulo.
Tabla 4.1: Resumen de los métodos de interpolación de Newton y Lagrange.
Método Ventajas Desventajas
Interpolación de Newton El orden del
polinomio puede
cambiarse sin
problemas.
La evaluación del
error es fácil.
Se debe de preparar una
tabla de diferencias o
diferencias divididas.
Interpolación de Lagrange Forma conveniente.
Fácil de programar.
Difícil de manejar para los
cálculos manuales
1. INTERPOLACIÓN POLINOMIAL DE NEWTON
Una de estas formas de interpolación se denomina Polinomios de Interpolación de
Newton, que trabaja directamente en la tabla obtenida mediante el proceso de
Diferencias Divididas. Antes de presentar la ecuación general, introduciremos las
versiones de primer y segundo grado debido a su interpretación visual simple.
1.1. Interpolación lineal
La forma más simple de interpolación consiste en unir dos puntos con una línea
recta. Si se supone que las variaciones son proporcionales se utiliza la
interpolación lineal.
Sean dos puntos 0 0,x f x y 1 1,x f x , entonces la interpolación lineal
consiste en hallar una estimación del valor 1f x para un valor x tal que
0 1x x x . A continuación, se ilustra de manera gráfica en la figura 4.2.
MÉTODOS NÚMERICOS con VBA
142
f1(x)
f(x1)
f(x)
x
f(x0)
x0 x x1 Figura 4.2: Representación de la interpolación lineal.
Mediante triángulos semejantes tenemos:
1 0 1 0
0 1 0
f x f x f x f x
x x x x
la cual se puede reordenar para dar
(1.1)
1 0
1 0 0
1 0
f x f xf x f x x x
x x
(2)
Esta es una fórmula de interpolación lineal. La notación 1f x designa que es
una interpolación de polinomios de primer grado. Observe que además de
representar la pendiente de la línea que une los puntos, el término
1 0
1 0
f x f x
x x
es una aproximación en diferencia dividida finita a la primera derivada.
Ejemplo 4.1: Estimar 1e mediante interpolación lineal si 0 1e y 3 20.0855e
1.791759.
Usamos la ecuación (2) de interpolación lineal para 1e , donde 0 0x y
1 3x , se
obtiene:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
143
1
20.0855 11 1 1 0 7.3618
3 0f
Considerando que el valor verdadero de 1 2.7183e , podemos determinar el error
relativo:
2.7183 7.3618100% 170.83%
2.7183t
Ahora si reducimos el intervalo desde 0 0x a
1 2x , se obtiene:
1
7.3891 11 1 1 0 4.1946
3 0f
lo que nos da un error relativo de
2.7183 4.1946100% 54.31%
2.7183t
De este modo, haciendo uso de un intervalo más corto el error relativo se reduce
notablemente a 54.31%. Ambas interpolaciones se muestran en la siguiente
figura.
Figura 4.3: Interpolaciones lineales para estimar 1e
MÉTODOS NÚMERICOS con VBA
144
Ejemplo 4.2: Una empresa en distintos años obtiene unos ingresos cuando realiza
los siguientes gastos. (Las unidades están en miles de dólares)
Gastos x 3 5 7
Ingresos f(x) 10 14 22
En primer lugar, lo representamos en unos ejes de coordenadas (ver gráfico 4.1).
A continuación, nos preguntamos, ¿qué ingresos podemos esperar si realizamos
unos gastos de por ejemplo 4 mil dólares? O unos gastos de ¿6 mil dólares?
¿Cómo responder a esta pregunta?
Gráfico 4.1: Ingresos en función de los gastos.
En este caso podemos hallar rectas o funciones lineales que pasen por los puntos
AB y BC y con ellas estimar el valor de los ingresos a partir de los gastos,
haciendo uso de la fórmula de interpolación lineal. Esto es:
Recta AB: Para responder la primera pregunta, hacemos que x = 4 y
obtenemos unos ingresos de:
1
14 1010 4 3 12
5 3f x
Recta BC: Segunda pregunta, x = 6 y obtenemos unos ingresos de:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
145
1
22 1414 6 5 18
7 5f x
Se puede hallar directamente una función cuadrática o parábola que pase por los
puntos A, B y C y con ella estimar el valor de los ingresos a partir de los gastos.
Esto se conoce como interpolación cuadrática.
1.2. Interpolación cuadrática
Si en vez de utilizar rectas (polinomios de primer grado) utilizamos polinomios
de segundo grado para interpolar, estaremos realizando interpolación cuadrática.
Para la interpolación lineal utilizábamos dos puntos, pues dos puntos determinan
una recta; ahora necesitaremos tres puntos para determinar la correspondiente
parábola. Una forma en particular conveniente para este propósito es:
2 0 1 0 2 0 1f x b b x x b x x x x (3)
Nótese que la ecuación (2) parece diferente de la ecuación general de un
polinomio, sin embargo, las dos ecuaciones son equivalentes.
Lo anterior se demuestra al multiplicar los términos de la ecuación:
2
2 0 1 1 0 2 2 0 1 2 0 2 1f x b b x b x b x b x x b xx b xx
agrupando términos se tiene,
2
2 0 1 2f x a a x a x
donde:
0 0 1 0 2 0 1a b b x b x x
1 1 2 0 2 1a b b x b x
2 2a b
De esta manera las ecuaciones (1) y (3), son fórmulas alternativas equivalentes
del único polinomio de segundo grado que une a los tres puntos.
MÉTODOS NÚMERICOS con VBA
146
A continuación, mostramos un procedimiento simple para determinar los valores
de los coeficientes. Para b0, se usa la ecuación (3) con x = x0, y se obtiene:
0 0b f x (4)
sustituyendo la ecuación (4) en la ecuación (3) y evaluando en x = x1 se obtiene:
1 0
1
1 0
f x f xb
x x
(5)
Y por último, las ecuaciones (4) y (5) se sustituyen en la ecuación (3), y se
evalúa ésta en x = x2 y se obtiene:
2 1 1 0
2 1 1 0
2
2 0
f x f x f x f x
x x x xb
x x
(6)
también se puede escribir
2 1
1
2 1
2
2 0
f x f xb
x xb
x x
Nótese que, al igual que en el caso de interpolación lineal, b1 aún representa la
pendiente de la línea que une los puntos x0 y x1. Por lo tanto, los primeros dos
términos de la ecuación (3) son equivalentes a la interpolación de x0 a x1, como
se especificó anteriormente en la ecuación (2). El último término, b2(x-x0) (x-x1)
introduce la curvatura de segundo orden en la fórmula.
Ejemplo 4.3: Ajústese el polinomio de segundo orden a los tres puntos usados en
el ejemplo 4.1
0 0x 0 1f x
1 2x 1 7.3891f x
2 3x 2 20.0855f x
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
147
Evaluaremos 1e , haciendo uso del polinomio de segundo orden.
Aplicando la ecuación (4) da:
b0 = 1
la ecuación (5) genera:
1
7.3891 13.1945
2 0b
Y la ecuación (6) da:
2
20.0855 7.38913.1945
3 23.1673
3 0b
Sustituyendo estos valores en la ecuación (3) se obtiene la fórmula cuadrática:
2 1 3.1945 0 3.1676 0 2f x x x x
que se evalúa en x = 1 y se obtiene
2 1.0272f x
Lo que representa un error porcentual del
2.7183 1.0272
100% 62.21%2.7183
t
Por lo tanto, mejora la interpolación comparada con los resultados obtenidos al
usar una línea recta (ejemplo 4.1).
MÉTODOS NÚMERICOS con VBA
148
Valor verdadero
Estimación cuadrática
Figura 4.4: Interpolación cuadrática.
Ejemplo 4.4: Calcular el polinomio de 2º grado para el siguiente grupo de datos:
xi 1 3 4
f(xi) 2 4 8
Buscamos un polinomio el 2º grado que escribimos en la forma:
2 0 1 21 1 3f x b b x b x x
donde hay que hallar los valores de b0, b1 y b2. Sustituimos por los valores de la
tabla,
0 1x ; 01f b
1 3x ; 0 13 3 1f b b
2 4x ; 0 1 24 4 1 4 1 4 3f b b b
Se obtiene así un sistema triangular fácil de resolver:
2 = b0 → b0 = 2
4 = b0 + 2b1 → b1 = 1
8 = b0 + 3b1 + 3b2 → b2 = 1
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
149
Luego el polinomio es
2
2 2 1 1 3 3 4f x x x x x x
1.3. Generalización de la interpolación de Newton (Diferencias divididas)
El análisis anterior se puede generalizar en el ajuste de un polinomio de n-ésimo
orden a los n + 1 puntos. El polinomio de n-ésimo orden es:
0 1 0 2 0 1 0 1n n nf x b b x x b x x x x b x x x x x x (7)
Como se hizo anteriormente con las interpolaciones lineales y cuadráticas, se
usan los puntos en la evaluación de los coeficientes b0, b1, ..., bn.
Se requieren n + 1 puntos para obtener un polinomio de n-ésimo orden: x0, x1, ... ,
xn. Usando estos datos, con las ecuaciones siguientes se evalúan los coeficientes:
0 0
1 1 0
2 2 1 0
1 1 0
,
, ,
, , , ,n n n
b f x
b f x x
b f x x x
b f x x x x
(8)
En donde las evaluaciones de la función entre corchetes son diferencias divididas
finitas. Por ejemplo, la primera diferencia dividida finita se representa
generalmente como:
,
i j
i j
i j
f x f xf x x
x x
(9)
La segunda diferencia dividida finita, que representa la diferencia de dos
primeras diferencias divididas finitas, se expresa generalmente como:
MÉTODOS NÚMERICOS con VBA
150
, ,, ,
i j j k
i j k
i k
f x x f x xf x x x
x x
(10)
De manera similar, la n-ésima diferencia dividida finita es:
1 1 0 1 2 1 0
1 1 0
0
, , , , , , , ,, , , ,
n n n n
n n
n
f x x x x f x x x xf x x x x
x x
(11)
Estas diferencias se usan para evaluar los coeficientes de la ecuación (8), los
cuales se sustituyen en la ecuación (7), para obtener el polinomio de
interpolación:
0 0 1 0 0 1 2 1 0
0 1 1 1 0
, , ,
, , , ,
n
n n n
f x f x x x f x x x x x x f x x x
x x x x x x f x x x x
(12)
Al cual se le llama Polinomio de Interpolación con Diferencias Divididas de
Newton.
Se debe notar que no es necesario que los datos usados en la ecuación (12) estén
igualmente espaciados o que los valores de la abscisa necesariamente se
encuentren en orden ascendente, como se ilustra en el ejemplo 4.5.
Todas las diferencias pueden arreglarse en una tabla de diferencias divididas, en
donde cada diferencia se indica entre los elementos que la producen:
Tabla 4.2: Diferencias divididas finitas.
i xi f(xi) Primero Segundo Tercero
0 x0 f(x0) f[x1, x0] f[x2, x1, x0] f[x3, x2, x1, x0]
1 x1 f(x1) f[x2, x1] f[x3, x2, x1]
2 x2 f(x2) f[x3, x2]
3 x3 f(x3)
Ejemplo 4.5: Usando los datos del ejemplo 4.3 y agregando un cuarto punto
(3 2.5x ; 3 12.1825f x ), calcúlese 1e con un polinomio de interpolación de
Newton con diferencias divididas de tercer orden:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
151
0 0x 0 1f x
1 2x 1 7.3891f x
2 3x 2 20.0855f x
3 2.5x 3 12.1825f x
El polinomio de tercer orden con n = 3, es:
3 0 1 0 2 0 1 3 0 1 2f x b b x x b x x x x b x x x x x x
Las primeras diferencias divididas del problema son:
1 0
7.3891 1, 3.1945
2 0f x x
2 1
20.0855 7.3891, 12.6965
3 2f x x
3 2
12.1825 20.0855, 15.8061
2.5 3f x x
Las segundas diferencias divididas son:
2 1 1 0
2 1 0
2 0
, , 12.6965 3.1945, , 3.1673
3 0
f x x f x xf x x x
x x
3 2 2 1
3 2 1
3 1
, , 15.8061 12.6965, , 6.2192
2.5 2
f x x f x xf x x x
x x
La tercera diferencia dividida es:
3 2 1 2 1 0
3 2 1 0
3 0
, , , , 6.2192 3.1673, , , 1.2208
2.5 0
f x x x f x x xf x x x x
x x
Los resultados para f(x1, x0), f(x2, x1, x0) y f(x3, x2, x1, x0) representan los
coeficientes b1, b2 y b3 junto con b0 = f(x0) = 1, la ecuación da:
3 1 3.1945 0 3.1673 0 2 1.2208 0 2 3f x x x x x x x
MÉTODOS NÚMERICOS con VBA
152
Arreglando la tabla de diferencias
Tabla 4.3: Diferencias divididas finitas para el ejemplo 4.5.
i xi f(xi) Primero Segundo Tercero
0 0 1 3.1945 3.1673 1.2208
1 2 7.3891 12.6965 6.2192
2 3 20.0855 158061
3 2.5 12.1825
Con la ecuación anterior se puede evaluar para x = 1
3 3.4687f x
lo que representa un error relativo porcentual del
2.7183 3.4687
100% 27.61%2.7183
t
El polinomio cúbico completo se muestra en el gráfico 4.5 comprado con el polinomio
cuadrático.
Valorverdadero
Estimación cuadrática
Estimación cúbica
Figura 4.5: Interpolación cúbica por diferencias divididas.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
153
Algoritmo e Implementación
Algoritmo 4.1: Diferencias divididas de Newton
Datos: (xi, yi), i=0, 1, 2, …, n con los xi’s distintos
Salida: Coeficientes del polinomio interpolante: C0,0, C1,1, C2,2, …, Cn,2.
for i=1 to n
Ci,0=yi
next i
for j=1 to n
for i=1 to n
Ci,j = (Ci,j-1 – Ci-1,j-1)/(xi – xi-j)
next i
next j
return C0,0, C1,1, C2,2, …, Cn,2.
Para evaluar el polinomio interpolante en x* se requiere los coeficientes Ci,j y los
nodos x0, ..., xn.
Algoritmo 4.2: Evaluación del polinomio interpolante de Newton
Datos: Nodos x0, x1, ..., xn y coeficientes C0, C1, ..., Cn y x*
Salida: fn(x*).
suma = C0
factor = 1
for j=1 to n
factor = factor *(x*-xj-1)
suma = suma + Cj*factor
next j
return suma.
La función inter_newton() usa dos vectores x(i) y f(i). En x(i) se almacena los
valores de los puntos y en f(i) los valores correspondientes de la función. El
código VBA 4.1, muestra la implementación de la interpolación polinomial de
Newton en diferencias divididas finitas para n puntos.
MÉTODOS NÚMERICOS con VBA
154
Código VBA N° 4.1: Interpolación Polinomial de Newton Sub inter_newton()
'Aproximación por Interpolación de Newton
Dim n As Integer, i As Integer
Dim x() As Double, f() As Double, fij() As Double, b() As Double
Dim factor As Double, factor2 As Double, suma As Double
'Cuenta el número de puntos
n = 0
Do While Cells(n + 8, 1) <> ""
n = n + 1
Loop
If n <= 1 Then
MsgBox "INGRESE PUNTOS"
End
ElseIf Range("C8").Value = "" Then
MsgBox "INGRESE VALOR A INTERPOLAR"
End
Else
ReDim x(1 To n)
ReDim f(1 To n)
ReDim fij(1 To n)
ReDim b(1 To n)
'Asigna los valores
For i = 1 To n
x(i) = Cells(i + 7, 1).Value
f(i) = Cells(i + 7, 2).Value
Next i
suma = f(1) 'Asigna b0 = f(X0)
'Diferencias divididas
For j = 1 To n - 1
Cells(7, j + 4).Value = "f" & j
For i = 1 To n - j
fij(i) = (f(i + 1) - f(i)) / (x(i + j) - x(i))
Cells(i + 7, j + 4).Value = fij(i)
Next i
f = fij
b(j) = f(1) 'Asigna coeficientes
Next j
'Evaluación del polinomio
xval = Range("c8").Value
factor = 1
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
155
For i = 1 To n - 1
factor = factor * (xval - x(i))
factor2 = factor * b(i)
suma = suma + factor2
Next i
Cells(8, 4).Value = suma
End If
End Sub
Sub nuevo()
Range("A8:S50").Value = ""
Range("E7:Z7").Value = ""
End Sub
Hoja de cálculo
A continuación se muestra el diseño en una hoja de cálculo del método de
interpolación polinomial de Newton nombrada newton.xlsx. La implementación
recibe como valores los puntos (x, f(x)) y el valor a ser interpolado x. La figura
4.6 no muestra el desarrollo del ejercicio 4.5.
Figura 4.6: Hoja para la implementación del polinomio interpolante de Newton.
Ejemplo 4.5: De una función f, conocemos la información que se muestra en la
siguiente tabla. Interpolar f(0.35) usando un polinomio interpolante f3(x) y f7(x).
xi 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7
f(xi) 3 3.1 3.2 3.3 3.4 4.5 4.6 4.7
MÉTODOS NÚMERICOS con VBA
156
Como se requiere un polinomio interpolante f3(x), se necesita una tabla de cuatro
datos. Una opción es:
xi 0.2 0.3 0.4 0.5
f(xi) 3.2 3.3 3.4 4.5
Haremos uso del programa inter_newton() para dar solución a este ejemplo, para
lo cual abrimos el archivo newton.xlsx e ingresamos los puntos y el valor a
interpolar. Finalmente presionamos en el botón de comando Interpolar y no
muestra los siguientes resultados:
Figura 4.7: Interpolante de Newton para f3(x).
En la figura 4.7 se muestra el valor interpolado, f3(x) = 3.2875
Ahora haremos uso de todos los datos, es decir trabajamos con la tabla original.
En la hoja de cálculo presionamos en el botón Nuevo para limpiar la hoja de
trabajo y a continuación ingresamos los puntos.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
157
Figura 4.8: Interpolante de Newton para f7(x).
El valor interpolado, f7(x) = 3.2518555
MÉTODOS NÚMERICOS con VBA
158
EJERCICIOS CAP. 4.1
1. Construya el polinomio de interpolación de Newton de tercer grado para la función
lnf x x en los puntos x0 = 1, x1 = 1.25, x2 = 1.5 y x3 = 1.75, y obtén una
aproximación de ln(1.4). Calcula el error relativo cometido.
2. La tabla siguiente muestra los valores de la función (la función de Bessel de
primera clase de orden cero) en varios puntos.
x f(x)
1.0
1.3
1.6
1.9
2.2
0.7651977
0.6200860
0.4554022
0.2818186
0.1103623
a) Construir la tabla de diferencias divididas.
b) Utilizar la información del apartado anterior para construir el polinomio
interpolador de Newton de la función de Bessel que pasa por los puntos
anteriores.
c) Obtener el valor aproximado de la función de Bessel en el punto 1.5.
3. Calcular el polinomio interpolador de Newton de grado uno, dos, tres y cuatro para
los siguientes datos. Aproximar los valores especificados usando cada uno de los
polinomios.
a) Aproximar f(8.4). Si f(8)=16.63553, f(8.1)=17.61549, f(8.3)=17.56492,
f(8.6)=18.50515 y f(8.7)=18.82091.
b) Aproximar f(π). Si f(2.9)=-4.827866, f(3.0)=-4.240058, f(3.1)=-3.496909,
f(3.2)=-2.5998792 y f(3.4)=-0.3330587.
4. Resuelve las siguientes cuestiones utilizando la implementación en VBA.
a) Construye la tabla de diferencias divididas para la tabla de datos siguiente:
x f(x)
1.0
1.1
1.2
1.3
1.4
1.684370
1.949477
2.199796
2.439189
2.670324
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
159
b) Los datos anteriores se generaron a partir de la función 2ln 2xf x e ,
aproxima f(1.15), utilizando la tabla de diferencias divididas construido en el
apartado a).
5. Un banco ha registrado los siguientes depósitos en los años que se indican en
distintos años. (Los depósitos están en millones de euros)
Año 2010 2012 2014
Depósitos 25 32 45
Hallar por interpolación de Newton los depósitos estimados en los años 2011 y
2013. (Se puede trabajar sustituyendo 2010 por x = 0, así 2012 será x = 2, etc).
6. A partir de los datos: 0 1e , 0.1 1.105171e y 0.2 1.221403e .
a) Aproxima el valor de 0.14e
b) Determina el error relativo porcentual
c) Compara con el valor obtenido haciendo uso del programa en VBA.
7. Calcular usando el método de Newton (diferencias divididas) el polinomio fn(x)
que interpola a la función f(x)=ln(x) en los puntos que resulta de dividir [1, 4] en 6
partes iguales.
8. Los datos correspondientes al censo de una población (en miles de habitantes) se
recogen en la siguiente tabla:
Año 1950 1960 1970 1980 1990 2000
Número de habitantes 123.5 131.2 150.7 141.3 203.2 240.5
Utilizar interpolación polinómica para estimar el número de habitantes en el año
1965.
9. La siguiente tabla contiene las presiones de vapor del cloruro de magnesio. Por
medio de interpolación simple, polinomial de grado 5 calcula la presión de vapor
correspondiente a una temperatura de 1100 0C.
Punto 0 1 2 3 4 5 6 7
Presión (mg de Hg) 10 20 40 60 100 200 400 760
Temperatura 0C 930 988 1050 1088 1142 1316 1223 1418
MÉTODOS NÚMERICOS con VBA
160
2. POLINOMIO INTERPOLANTE DE LAGRANGE
El polinomio de interpolación de Lagrange, simplemente es una reformulación del
polinomio de Newton que evita los cálculos de las diferencias divididas. Este se puede
representar concretamente como:
0
n
n i i
i
f x L x f x
(13)
en donde:
0
nj
i
j i j
x xL x
x x
, i≠j (14)
donde designa la “productoria”.
Por ejemplo, la versión lineal (n = 1) es:
1 01 0 1
0 1 1 0
x x x xf x f x f x
x x x x
(15)
y la versión de segundo orden es:
1 2 0 2 0 1
2 0 1 2
0 1 0 2 1 0 1 2 2 0 2 1
x x x x x x x x x x x xf x f x f x f x
x x x x x x x x x x x x
(16)
La ecuación (13) se deriva directamente del polinomio de Newton. Sin embargo, la
razón fundamental de la formulación de Lagrange se puede comprender directamente
notando que cada término Li(x) será 1 en x = xi y 0 en todos los demás puntos.
Por lo tanto, cada producto Li(x)f(xi) toma un valor de f(xi) en el punto xi. Por
consiguiente, la sumatoria de todos los productos, dada por la ecuación (13) es el
único polinomio de n-ésimo orden que pasa exactamente por los n + 1 puntos.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
161
Ejemplo 4.6: Úsese un polinomio de interpolación de Lagrange de primer y segundo
orden para evaluar 1e en base a los datos del ejemplo 4.3:
0 0x 0 1f x
1 2x 1 7.3891f x
2 3x 2 20.0855f x
El polinomio de primer orden es:
1 01 0 1
0 1 1 0
x x x xf x f x f x
x x x x
y, por lo tanto, la aproximación en x = 1 es
1
1 2 1 01 1 7.3891 4.1946
0 2 2 0f
de manera similar, el polinomio de segundo orden se desarrolla como:
2
1 2 1 3 1 0 1 3 1 0 1 21 1 7.3891 20.0855 1.0273
0 2 0 3 2 0 2 3 3 0 3 2f
Como se expresaba, ambos resultados son similares a los que se obtuvieron
previamente usando la interpolación polinomial de Newton.
En resumen, para los casos en donde el orden del polinomio se desconozca, el método
de Newton tiene ventajas debido a que profundiza en el comportamiento de las
diferentes fórmulas de orden superior.
Cuando se va a llevar a cabo sólo una interpolación, ambos métodos, el de Newton y
el de Lagrange requieren de un esfuerzo de cálculo similar. Sin embargo, la versión de
Lagrange es un poco más fácil de programar. También existen casos en donde la
forma de Newton es más susceptible a los errores de redondeo. Debido a esto y a que
no se requiere calcular y almacenar diferencias divididas, la forma de Lagrange se usa,
a menudo, cuando el orden del polinomio se conoce a priori.
MÉTODOS NÚMERICOS con VBA
162
Algoritmo e Implementación
En esta implementación calculamos fn(x), es decir, no calculamos el polinomio
interpolante; más bien calculamos este polinomio evaluado en un número x. Obtener
el polinomio es sencillo y se muestra continuación el algoritmo.
Algoritmo 4.3: Forma de Lagrange del polinomio interpolante.
Datos: n+1 datos (xi, yi), i=0, 1, 2, …, n con los xi’s distintos
Salida: Polinomio interpolante evaluado: Pn(x).
suma = 0
for i=1 to n
prod = 1
for j=1 to n
if i≠j then
prod = (xval – xj)/(xi – xj) * prod
end
next j
suma = suma + f(i)*prod
next i
return suma
La implementación en Visual Basic para Aplicaciones sería la siguiente:
Código VBA N° 4.2: Interpolación de Lagrange Sub inter_lagrange()
'Aproximación por Interpolación de Lagrange
Dim n As Integer, i As Integer
Dim x() As Double, f() As Double
Dim suma As Double, prod As Double
'Cuenta el número de puntos
n = 0
Do While Cells(n + 8, 1) <> ""
n = n + 1
Loop
If n <= 1 Then
MsgBox "INGRESE PUNTOS"
End
ElseIf Range("C8").Value = "" Then
MsgBox "INGRESE VALOR A INTERPOLAR"
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
163
End
Else
ReDim x(1 To n)
ReDim f(1 To n)
'Asigna valores a los vectores x(i) y f(i)
For i = 1 To n
x(i) = Cells(i + 7, 1).Value
f(i) = Cells(i + 7, 2).Value
Next i
'Interpolante de Lagrange
xval = Range("c8").Value
suma = 0
For i = 1 To n
Cells(7, 4 + i).Value = "L" & i - 1
prod = 1
For j = 1 To n
If i <> j Then
prod = (xval - x(j)) / (x(i) - x(j)) * prod
End If
Next j
Cells(8, 4 + i).Value = prod
suma = suma + f(i) * prod
Next i
Cells(8, 4).Value = suma
End If
End Sub
Sub limpiar()
Range("A8:S50").Value = ""
Range("E7:Z7").Value = ""
End Sub
Hoja de cálculo
Al igual que el caso anterior se muestra el diseño en una hoja de cálculo del método de
interpolación de Lagrange nombrada lagrange.xlsx. La implementación recibe como
valores los puntos (x, f(x)) y el valor a ser interpolado x. La figura 4.9 nos muestra el
desarrollo del ejercicio 4.6.
MÉTODOS NÚMERICOS con VBA
164
Figura 4.9: Interpolante de Lagrange para f2(x).
Hay un tema adicional que se deben de mencionar: La Extrapolación. Este es el
proceso de calcular un valor de f(x) que cae fuera del rango de los puntos base
conocidos x0, x1, ... , xn. La interpolación más exacta usualmente se obtiene cuando las
incógnitas caen cerca de los puntos base.
Obviamente, esto no sucede cuando las incógnitas caen fuera del rango, y por lo tanto,
el error en la extrapolación puede ser muy grande. La naturaleza abierta en los
extremos de la extrapolación representa un paso en la incógnita porque el proceso
extiende la curva más allá de la región conocida. Como tal, la curva verdadera diverge
fácilmente de la predicción. Por lo tanto, se debe tener cuidado extremo en casos
donde se deba extrapolar.
Ejemplo 4.7: Obtener el polinomio de interpolación usando la fórmula de
interpolación de Lagrange con la siguiente tabla de valores, e interpolar en el punto x
= −4.
xi 7 -6
f(xi) 30 -22
Sabemos que la fórmula de interpolación de Lagrange para los n + 1 puntos (xi, yi),
i=0, … , n, viene dada por:
1
1 0 0 1 1
0
i i
i
f x L x f x L x f x L x f x
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
165
Dados los puntos (x0, y0) = (7, 30); (x1, y1) = (-6, -22), tenemos entonces que los
polinomios de Lagrange son los siguientes:
11
0
0 0 0 1
6 6
7 6 13
j
j j
x x xx x xL x
x x x x
1
01
0 1 1 0
7 7
6 7 13
j
j j
x x x x x xL x
x x x x
El polinomio solución es por tanto:
1 0 0 1 1
6 7 26 5230 22 2 4
13 13 13
x x xf x L x f x L x f x x
Ahora que se tiene el polinomio de interpolación f1(x) = 2 + 4x, para obtener el valor
en x = −4 se tiene:
1 2 4 2 4 4 14f x x
Haciendo uso del programa implementado comprobaremos el resultado, tal como se
muestra en la figura 4.10. Para lo cual, hacemos click en el botón limpiar para
ingresar los nuevos datos y borrar los datos del ejercicio anterior y una vez ingresados
los datos de este ejercicio presionamos en el botón interpolar.
Obteniendo el mismo resultado que antes, f1(−4) = −14, con muchas menos
operaciones.
Figura 4.10: Resultados de la interpolación de Lagrange para f1(x).
MÉTODOS NÚMERICOS con VBA
166
y la gráfica del polinomio de interpolación y de los puntos (xi, yi), es la siguiente:
Figura 4.11: Polinomio de interpolación f1(x) = 2 + 4x.
Ejemplo 4.8: Obtener el polinomio de interpolación usando la fórmula de
interpolación de Lagrange con la siguiente tabla de valores, e interpolar en el punto x
= 1.
xi -4 -3 2 -6
f(xi) -16 -5 -10 -50
La fórmula de interpolación de Lagrange para los n + 1 puntos (xi, yi), i=0, … , n,
viene dada por:
3
1 0 0 1 1 2 2 3 3
0
i i
i
f x L x f x L x f x L x f x L x f x L x f x
Dados los puntos (x0, y0) de la tabla, tenemos entonces que los polinomios de
Lagrange son los siguientes:
3 231 2 3
0
0 0 0 1 0 2 0 3
3 2 6 73
12 12 12
j
j j
x x x x x x x x x x x x xL x
x x x x x x x x
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
167
3 230 2 3
1
0 1 1 0 1 2 1 3
4 2 6 8 4 16
15 15 15 15 5
j
j j
x x x x x x x x x x x x x xL x
x x x x x x x x
3 230 1 3
2
0 2 2 0 2 1 2 3
4 3 6 13 9 3
240 240 240 40 10
j
j j
x x x x x x x x x x x x x xL x
x x x x x x x x
3 230 1 2
3
0 3 3 0 3 1 3 2
4 3 2 5 1
48 48 48 24 2
j
j j
x x x x x x x x x x x x x xL x
x x x x x x x x
El polinomio solución es por tanto:
3
2
1 0 1 2 3
0
16 5 10 50 4 3 2i i
i
f x L x f x L x L x L x L x x x
Ahora que se tiene el polinomio de interpolación para obtener el valor en x = 1 se
tiene:
33
3 4 3 2 4 3 1 2 1 1f x x x
Utilizando el programa, tenemos:
Figura 4.12: Resultados de la interpolación de Lagrange para f3(x).
MÉTODOS NÚMERICOS con VBA
168
y la gráfica del polinomio de interpolación, es la siguiente:
Figura 4.13: Polinomio de interpolación f3(x).
Ejemplo 4.9: En una fábrica de automóviles, un modelo de coche X da a distintas
velocidades los niveles de ruido que se registran en la tabla:
Velocidad (km/h) 60 90 120 140
Decibelios 62.7 70.2 75.5 77.5
Estimar por interpolación de Lagrange los decibelios producidos cuando la velocidad
es de 130 km/h.
Para estimar el valor de x = 130 usamos el polinomio de Lagrange implementado en el
archivo lagrange.xlsx, el ingreso de los datos y el resultado se muestra a continuación:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
169
Figura 4.12: Resultados de la interpolación de Lagrange para f3(x).
La estimación es de 76.668889 decibelios.
MÉTODOS NÚMERICOS con VBA
170
EJERCICIOS CAP. 4.2
1. Encontrar el polinomio de interpolación f2(x) de segundo grado tal que f(0) = −1,
f(1) = 2 y f(2) = 7.
2. Obtener el polinomio de interpolación usando la fórmula de interpolación de
Lagrange con la siguiente tabla de valores, e interpolar en el punto x = −3
utilizando el polinomio y el programa implementado en VBA.
xi 1 -4 -7
f(xi) 10 10 34
3. Interpolar la función .f x x sen x por un polinomio de segundo grado que pase
por los puntos: x0 = 0, x1 = 2 y x2 = 3. Calcular el valor interpolado de f2(2.1).
4. Calcular el polinomio de Lagrange de segundo grado que pasa por los nodos x0 =
2, x1 = 2.5 y x2 = 4 e interpola a la función 1xf x . Calcular la aproximación a
f(3) y halla el error relativo producido.
5. Construir los polinomios de interpolación de Lagrange para las siguientes
funciones:
a) 2 cos 3xf x e x ; x0 = 2, x1 = 0.3 y x2 = 0.6
b) lnf x x ; x0 = 0, x1 = 0.25, x2 = 0.5 y x3 = 1.4
6. El número de turistas entre 1995-2010 en millones se registra en la tabla:
Año 1995 2000 2005 2010
Turistas 24.1 30.1 38.1 43.2
Estimar por interpolación lineal, cuadrática y cubica los millones de turistas del
año 2007. ¿Cuál es su comentario?
7. Determínese el polinomio interpolador de Lagrange de la función
.cos 2xf x e x sobre los puntos x0 = 1, x1 = 3 y x2 = π. Para ello:
a) Determínense los polinomios de Lagrange f1(x) y f2(x).
b) Grafique ambos polinomios (en el tramo de abscisas [0, 3]).
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
171
8. En la tabla siguiente se dan valores de la función 1
2f x x redondeados hasta
cinco cifras decimales:
x f(x)
1.00
1.05
1.10
1.15
1.20
1.25
1.30
1
1.02470
1.04881
1.07238
1.09545
1.11803
1.14017
Utilizar la tabla para obtener 1.011/2, 1.281/2 y 1.121/2
9. Utilizar los siguientes valores para construir un polinomio de Lagrange de cuarto
orden, mediante el cual aproximar f (1.25), siendo 2 1xf x e la función a
considerar.
x 1.0 1.1 1.2 1.3 1.4
f(x) 1.00000 1.23368 1.55271 1.99372 2.64470
10. Los valores t = {0.0, 10.0, 27.4, 42.1} y s = {61.5, 62.1, 66.3, 70.3} representan la
cantidad s en gramos de dicromato de potasio disueltos en 100 partes de agua a la
temperatura t en grados centígrados. Para una temperatura de 25 grados, encuentra
la cantidad de gramos de dicromato de potasio. Por medio de interpolación:
a) Lineal
b) Cuadrática
c) Polinomial grado 3.
Dada la siguiente tabla donde y es la amplitud de la oscilación de un péndulo largo, en
cm. y x es el tiempo medido en min. desde que inició la oscilación. Encuentra el
polinomio de Lagrange de grado n que pasa por todos los puntos y el valor de x
correspondiente a y = 2 cm.
Punto 0 1 2 3 4 5 6
x 0.0 2.5 5.0 7.5 10.0 12.5 15.0
y 10.00 4.97 2.47 1.22 0.61 0.3 0.14
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
173
Apéndice A
Apéndice A: INTRODUCCIÓN A LA
PROGRAMACIÓN EN VISUAL BASIC PARA
APLICACIONES (VBA)
MÉTODOS NÚMERICOS con VBA
174
INTRODUCCIÓN
Microsoft Excel es un software para el manejo de hojas electrónicas agrupadas en
libros para cálculos de casi cualquier índole. Entre muchas otras aplicaciones, es
utilizado en el tratamiento estadístico de datos, así como para la presentación gráfica
de los mismos. La hoja electrónica Excel es ampliamente conocida, en forma
generalizada, por profesionales y estudiantes en proceso de formación, pero hay una
gran cantidad de usuarios que no conocen a profundidad su gran potencial y
adaptabilidad a los diferentes campos del conocimiento.
Para estudiantes de ingeniería, el Excel constituye una herramienta computacional
muy poderosa. También tiene gran utilidad para ser utilizado en la enseñanza de las
ciencias y la Ingeniería, particularmente, en la enseñanza de los métodos numéricos.
Pese a que existen en el mercado programas computacionales muy sofisticados, tales
como MATLAB, MATHEMATICA, etc., no están tan disponibles como Excel, que
usualmente forma parte del paquete básico de software instalado en las computadoras
que funcionan bajo el sistema Windows de Microsoft.
A continuación, se brinda al lector una breve introducción a algunas actividades de
programación con macros escritos en VBA (una adaptación de Visual Basic para
Office de Microsoft), definidos desde una hoja electrónica de Excel. Salvo pequeñas
diferencias para versiones en inglés, el material puede ser desarrollado en cualquier
versión.
2. VISUAL BASIC PARA APLICACIONES (VBA)
Visual Basic para aplicaciones (VBA) es una combinación de un entorno de
programación integrado denominado Editor de Visual Basic y del lenguaje de
programación Visual Basic, permitiendo diseñar y desarrollar con facilidad programas
en Visual Basic. El término “para aplicaciones” hace referencia al hecho de que el
lenguaje de programación y las herramientas de desarrollo están integrados con las
aplicaciones del Microsoft Office (en este caso, el Microsoft Excel), de forma que se
puedan desarrollar nuevas funcionalidades y soluciones a medida, con el uso de estas
aplicaciones.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
175
El Editor de Visual Basic contiene todas las herramientas de programación necesarias
para escribir código en Visual Basic y crear soluciones personalizadas.
Este Editor (ver figura 1.1), es una ventana independiente de Microsoft Excel, pero
tiene el mismo aspecto que cualquier otra ventana de una aplicación Microsoft Office,
y funciona igual para todas estas aplicaciones. Cuando se cierre la aplicación,
consecuentemente también se cerrará la ventana del Editor de Visual Basic asociada.
Figura A.1: Editor de Visual Basic.
1.1. El Editor del Visual Basic
El Editor de Visual Basic es un programa cuya ventana principal le permite
realizar una serie de acciones sobre su macro, las propiedades de su libro y hojas,
así como el de crear nuevos módulos (procedimientos) y formularios. Aquí
MÉTODOS NÚMERICOS con VBA
176
podemos modificar las macros y potenciarlas dándole la interactividad que no
posee. Para usar el editor, haga uso de la siguiente secuencia:
Menú de Herramientas / Programador / Editor de Visual Basic o también usando
<ALT> + F11.
Figura A.2: Acceso al Editor de Visual Basic a través de Excel.
1.2. El Editor y la programación orientada a objetos
Todo lo que se puede hacer en el editor, está relacionada con programas. La
filosofía de programación usada en este editor, es el de la Programación Orientada
a Objetos (POO), la que nos permitirá hacer modificaciones sobre la
programación subyacente a una macro y crear nuestros propios programas. Un
programa es, en principio, una secuencia de pasos o instrucciones que escribimos
para resolver un problema en particular.
En un lenguaje de programación orientada a objetos, las instrucciones se basan en
variables, constantes, objetos, propiedades de los objetos, etc., pertenecientes a un
ámbito, a un entorno. Todos estos elementos, sean sus componentes o
características, como sus relaciones entre otros objetos, están agrupados o
"encapsulados" en los objetos. Los objetos en Excel están constituidos por Celdas,
Rangos, Hojas, Libros, Gráficos, Tablas, archivos externos, etc.
Los objetos, refiriéndonos a Excel, poseen cuatro características empleados en la
codificación de un programa: Propiedades de los objetos, Métodos para
manipularlos, Eventos que causan la manipulación de los mismos y, Colecciones
o Clases a las que pertenecen los objetos.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
177
Propiedades
Las propiedades son las características, atributos, formas o aspectos del objeto, a
las que se hace referencia mediante el uso de variables. Una propiedad de objeto
común de Excel es su Nombre, que nos permitirá usarlos en los diferentes usos
que hagamos del objeto. De manera que una celda, un rango de celdas, una hoja,
libro, gráfico o tabla en Excel, tendrá un nombre con el cual lo identificaremos.
Para hacer referencia a las propiedades mediante los programas en VBA, se usa la
sintaxis:
NombreDelObjeto.Propiedad
Ejemplo:
Range("A5").Name
Aquí se hace referencia al nombre del objeto Range de la celda A5.
Métodos
Un método es una acción, un procedimiento (un hilo), que tiene efectos sobre un
objeto.
Ejemplo:
Range("A5").Select
Aquí se ejecuta el método Select, que permite activar la celda A5 y ponerla en
disponible para cualquier otra operación.
Range("B2:G4").Formato
En este caso, se ejecuta el método Formato sobre el rango B2:G4. Se supone que
el método Formato ya está definido previamente.
Eventos
Un evento es el resultado de una acción, es la forma cómo queda el objeto
después de alguna acción sobre él. Por lo general estas acciones son producidas
por los métodos que actúan sobre el objeto.
Excel incluye varios controladores de eventos, o rutinas de código, que controlan
acciones determinadas. Cuando ocurre una de dichas acciones, y ha comunicado a
Excel qué desea que haga cuando ocurra el evento, Excel ejecuta el código del
MÉTODOS NÚMERICOS con VBA
178
controlador de eventos. Por ejemplo, si después de crear un nuevo libro desea que
Excel muestre todos los libros abiertos como un conjunto de ventanas en cascada,
puede crear el siguiente controlador de eventos:
Private Sub App_NewWorkbook(ByVal Wb As Workbook)
Application.Windows.Arrange xlArrangeStyleCascade
End Sub
Colecciones
Una colección es un grupo o conjunto de objetos contenidos en otro objeto cuyas
propiedades son comunes a los objetos componentes.
Puesto que un libro contiene una o más hojas de cálculo, podemos decir que un
libro es una colección de hojas de cálculo. Así las cosas, podemos ejecutar algún
método sobre esta colección a fin de realizar la misma acción sobre todas ellas.
Por ejemplo, seleccionar tres hojas y darle un determinado formato.
En el siguiente ejemplo, se ha programado la opción de imprimir la ruta donde se
encuentra el archivo. Como se puede ver (o lo podrá comprender cuando
desarrollemos la instrucción FOR …NEXT), la operación de añadir la dirección
se realiza sobre tres hojas del libro.
For i = 1 to 3
Worksheets(i).PageSetup.RightFooter = Path
Next i
1.3. Ventanas en el Editor de Visual Basic
El Editor de Visual Basic muestra distinta información en distintas ventanas.
Estas ventanas pueden contener a uno o más módulos (macros) o pueden hacer
referencia a las propiedades de los objetos contenidos en la hoja o libro.
Estas son: La ventana Explorador del proyecto, de Propiedades y de Código.
Ventana del Explorador del proyecto
Cuando se abre el Editor de Visual Basic directamente, se puede utilizar la
ventana Explorador del proyecto para seleccionar la macro en la que se desea
trabajar. El Explorador del proyecto muestra todos los proyectos en términos de
carpetas, en vista de árbol. En ella se muestran, además de los libros que el
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
179
usuario abre, todos los libros y complementos que el Excel abra en el momento de
ejecutar el Excel.
Figura A.3: Ventana explorador de Proyecto.
Un módulo puede contener las instrucciones de una o varias macros. El contenido
de los libros y complementos del Excel, no se pueden visualizar, excepto si se
supiera su contraseña.
Ventana Propiedades
Generalmente debajo de la ventana del Explorador de proyectos, está la ventana
de Propiedades, que se utiliza para examinar y modificar las distintas
propiedades asociadas al objeto seleccionado. La única propiedad que suele estar
disponible para los módulos es el nombre. Las hojas de cálculo tienen
propiedades adicionales que se pueden modificar, como StandardWidth y
DisplayPageBreaks, entre otras.
Para modificar las propiedades de un libro u hoja, debemos seleccionarlo primero
y luego hacer clic en la propiedad deseada y luego elegir entre las opciones
disponibles. Por ejemplo, si se desea ocultar la hoja cuyo nombre es Hoja1,
selecciónela primero, luego en la ventana propiedades, haga clic en la propiedad
<Visible> y seleccione la opción <xlSheetHidden>
MÉTODOS NÚMERICOS con VBA
180
Figura A.4: Ventana de propiedades.
Ventana de Código
La ventana de Código es la ventana que dispone de mayor tamaño en el Editor e
incluye en el lado superior, dos cuadros de lista desplegables. El cuadro de lista
del lado izquierdo (cuadro de Objeto) se utiliza para seleccionar el objeto en el
que se quiere trabajar. Cuando se trabaja sólo con código, el cuadro muestra el
objeto General predeterminado. El cuadro de lista de la derecha (cuadro de
Procedimiento) se utiliza para seleccionar macros individuales del módulo actual.
Según se agreguen o eliminen macros en el módulo, se agregarán y eliminarán en
el cuadro Procedimiento.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
181
Figura A.5: Ventana de código.
1.4. Variables
Puesto que todo lo que se realiza en el computador, debe ser guardado en la
memoria, cada uno de los datos deben tener un lugar en ella a donde guardarlos.
Para ello es necesario el uso de las variables. Mediante el uso de las variables y
también constantes, podemos almacenar cada uno de los datos o constantes en
una localidad de la memoria.
Esto implica que, para acceder a dichas localidades, es necesario el uso de las
variables. Estas tienen un nombre. El nombre puede estar formado por una letra,
seguido de uno o más caracteres literales o numéricos. Estos nombres son únicos;
es decir, ninguna otra variable puede tener el mismo nombre. Naturalmente, la
variable se puede usar en diferentes ámbitos o secciones; en cada una de ellas, el
mismo nombre de variable puede ser usado para propósitos distintos; sin
embargo, el nombre de una variable también puede ser definido para ser válido en
todos los ámbitos.
Nota:
El nombre de una variable puede estar escrito en minúsculas, mayúsculas o
combinarlas a fin de darle cierto sentido respecto a su contenido.
MÉTODOS NÚMERICOS con VBA
182
1.5. Sentencia DIM
Para declarar una variable se usa la sentencia DIM. Esta declaración se coloca al
principio de las secciones o módulos.
Sintaxis:
DIM NombreDeVariable As TipoDeDatos
DIM NombreVar1, NombreVar2, … As TipoDeDatos
Tipos de variable
La tabla siguiente muestra los tipos de datos compatibles, incluyendo el tamaño
de almacenamiento en memoria y el intervalo en el cual pueden variar.
Tipo de Visual
Basic
Asignación de
almacenamiento
nominal
Intervalo de valores
Boolean En función de la
plataforma de
implementación
True o False
Byte 1 byte 0 a 255 (sin signo)
Char (carácter
individual)
2 bytes 0 a 65535 (sin signo)
Date 8 bytes 0:00:00 (medianoche) del 1/01de 0001 a
11:59:59 p.m. del 31/12 de 9999.
Decimal 16 bytes 0 a +/-
79.228.162.514.264.337.593.543.950.335
(+/-7,9... E+28)
Double (punto
flotante de
precisión doble)
8 bytes -1,79769313486231570E+308 a -
4,94065645841246544E-324 † valores
negativos;
4,94065645841246544E-324 a
1,79769313486231570E+308 † valores
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
183
positivos
Integer 4 bytes -2.147.483.648 a 2.147.483.647 (con
signo)
Long (entero
largo)
8 bytes -9.223.372.036.854.775.808 a
9.223.372.036.854.775.807 (9,2...E+18 †)
(con signo)
Object 4 bytes en p/32
bits
8 bytes en p/64
bits
Cualquier tipo puede almacenarse en una
variable de tipo Object
SByte 1 byte -128 a 127 (con signo)
Short (entero
corto)
2 bytes -32.768 a 32.767 (con signo)
Single (punto
flotante de
precisión
simple)
4 bytes -3,4028235E+38 a -1,401298E-45 †
valores negativos;
1,401298E-45 a 3,4028235E+38 † valores
positivos
String (longitud
variable)
En función de la
plataforma de
implementación
0 a 2.000 millones de caracteres Unicode
aprox.
UInteger 4 bytes 0 a 4.294.967.295 (sin signo)
ULong 8 bytes 0 a 18.446.744.073.709.551.615
(1,8...E+19 †) (sin signo)
UShort 2 bytes 0 a 65.535 (sin signo)
MÉTODOS NÚMERICOS con VBA
184
Ejemplos:
DIM A, B As Integer A y B ‘serán usados como enteros
DIM Xtot, Zdat As Double Xtot y Zdat ‘serán usados como variables reales
DIM XTitulo, Nom01, Nom02 As String ‘Usados para contener datos literales
DIM N, Epsi As Variant ‘Puede contener datos numéricos o literales
Clases de variables
Las variables pueden ser: Locales, Públicas o Estáticas
Variables Locales
Las variables Locales son aquellas que se declaran dentro de un módulo o
procedimiento y sólo pueden ser utilizadas en éste. Éstas dejan de existir una vez
que el procedimiento termina su ejecución. Se pueden usar en otros módulos o
procedimientos pero sus características nada tienen que hacer con la declaración
dada en otro módulo o procedimiento. Para declararlas se debe usar la sentencia
DIM.
Por ejemplo:
Sub procedimiento()
Dim nDat As Integer
Dim Cadena As String
Sentencias ....
End Sub
Variables Públicas
Si se quiere que una variable esté disponible para todos los procedimientos de
todos los módulos VBA de un proyecto, se la debe definir a través de la sentencia
PUBLIC (y no DIM).
Por ejemplo:
Public NTotal As Integer
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
185
Las variables públicas se deben definir antes del primer procedimiento de un
módulo de VBA; no deben definirse en los módulos correspondientes a las hojas
del Libro de Trabajo ni en los módulos correspondientes a UserForms.
Variables Estáticas
Si se desea que una variable definida en un procedimiento conserve su valor una
vez terminado éste, e ingresado a otro procedimiento, ésta se debe definir a través
de la sentencia STATIC.
Por ejemplo:
Sub Procedimiento()
Static nDat As Integer
[ Sentencias ...]
End Sub
Option Explicit
La sentencia Option Explicit permite que el programa se detenga cada vez que
VBA encuentre una variable que no ha sido definida. Esto es de gran utilidad
cuando se usan muchas variables ya que nos permite identificar rápidamente
errores o uso no deseado en el nombre de la variable. Esta sentencia se debe
escribir al comienzo del módulo.
Constantes
A diferencia de las variables, cuyo valor cambia al ejecutarse un procedimiento,
hay valores que no cambian durante la ejecución de un procedimiento, éstos
valores se denominan Constantes. Las constantes se definen a través de la
sentencia Const. Por ejemplo;
Const Nivel As Integer
Las constantes también pueden declararse como Públicas para que estén
disponibles en todos los procedimientos de todos los módulos, esto se hace a
través de la sentencia PUBLIC
Public Const TasaActiva As Integer
MÉTODOS NÚMERICOS con VBA
186
Esta sentencia debe incluirse en un módulo antes del primer procedimiento.
Para definir constantes Locales, basta definirlas a través de la sentencia Const
dentro de un procedimiento o función.
1.6. Módulos
Un módulo es un ambiente, es un entorno de trabajo compuesto por sentencias de
declaración de variables y por uno o más procedimientos.
Estando en el Editor del Visual Basic, para disponer de un Módulo, se debe usar
la siguiente secuencia de comandos: Insertar / Módulos, como se indica en las
siguientes imágenes.
Figura A.6: Ventana de módulo.
Luego de esta acción, se podrá observar, en la ventana de proyectos y dentro del
libro en uso, una carpeta con el nombre Módulo. Dentro de ella se insertarán
todos los procedimientos que conforman dicho módulo.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
187
1.7. Procedimientos
Un procedimiento está formado por un conjunto de sentencias que permite
resolver un problema. Un módulo está formado por uno o más procedimientos.
Un procedimiento se declara a través de la sentencia Sub y puede ser Privado,
Público o
Estático.
Procedimiento Privado
Un procedimiento privado sólo es accesible por otros procedimientos dentro del
mismo módulo. Su sintaxis es:
Private Sub Procedimiento (Argumento1,Argumento2,.....)
[sentencias]
End Sub
Procedimiento Público
Un procedimiento público es accesible por todos los procedimientos de todos los
módulos VBA de un proyecto, su sintaxis es:
Public Sub Procedimiento(Argumento1,Argumento2,.....)
[Sentencias]
End Sub
Procedimiento Estático
Para que las variables de un procedimiento se conserven una vez terminada su
ejecución, éste debe definirse como Estático:
Static Sub Procedimiento(Argumento1,Argumento2,.....)
[Sentencias]
End Sub
MÉTODOS NÚMERICOS con VBA
188
La sentencia Sub y End Sub son obligatorias al definir cualquier procedimiento.
Los argumentos y las sentencias Private, Public y Static son opcionales. Es
importante mencionar que al definir un procedimiento sin ninguna de las
sentencias anteriores, por defecto éste se define como Público, es decir:
Sub Procedimiento(argumento1,argumento2,.....)
[Sentencias]
End Sub
Es equivalente a :
Public Sub Procedimiento(argumento1,argumento2,.....)
[Sentencias]
End Sub
Existe una instrucción que permite terminar la ejecución de un procedimiento,
ésta es la instrucción Exit Sub. Por ejemplo, si tenemos el siguiente
procedimiento:
Sub Procedimiento(argumento1,argumento2,.....)
[Sentencias]
Exit Sub
[Sentencias]
End Sub
1.8. Argumentos
Los argumentos pueden ser pasados a un procedimiento por referencia (por
defecto los argumentos se pasan de esta forma) o por valor. Cuando un argumento
es pasado por referencia, se pasa la variable misma al procedimiento llamado, por
lo que los cambios que se producen en la variable son devueltos al procedimiento
principal (al que llamó al otro). En cambio, cuando un argumento es pasado por
valor, se pasa una copia de la variable al procedimiento llamado por lo que los
cambios que se producen en la variable no son devueltos al procedimiento
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
189
principal. Para pasar un argumento por valor, se utiliza la sentencia ByVal, por
ejemplo:
Sub Proced2( ByVal indice)
[Sentencias]
End Sub
Pasar argumentos por valor es útil cuando se requiere conservar el valor original
de una variable después de llamar a otro procedimiento.
Al especificar los argumentos de un procedimiento también es posible definir el
tipo de dato, por ejemplo se puede definir un procedimiento de la siguiente forma:
Sub Procedimiento(argumento1 As Integer, argumento2 As String)
[Sentencias]
End Sub
1.9. Asignación de valores o expresiones
La asignación de valores en el VBA es muy simple:
VariableReceptora = ValorAsignado / ExpresionAsignada
ObjetoReceptor = ValorAsignado / ExpresionAsignada
El "ValorAsignado" o el resultado de ejecutar "ExpresiónAsignada" se almacena
en la localidad de memoria definida como "VariableReceptora" u
"ObjetoReceptor".
Por ejemplo tenemos:
1)
XTot = 120
SumaTot = SumaTot + Num01
XTitulo = "Cuadro de ventas consolidadas"
2)
X1 = "Hola Mundo !!!"
X2 = " Buenos días …."
Salida = X1 + X2 + "Hasta luego …"
MÉTODOS NÚMERICOS con VBA
190
Nota:
En los dos ejemplos anteriores, algunas variables reciben un valor dentro del
programa. Toda vez que se ejecute el programa, dichas variables siempre
usarán los mismos valores y, como tal, aquellas que dependen de ellas
también contendrán los mismos resultados. Para que dichas variables tomen
otros valores, es necesario ingresarlos desde otros programas o
procedimientos, o desde el teclado.
1.10. Ingreso de datos - Emisión de resultados
Ingreso de datos: Método InputBox(…)
En VBA los datos se ingresan usando el método InputBox(…) el cual abre una
ventana de diálogo. La sintaxis de este método es:
expresión.InputBox(Prompt[,Title][,Default][,XPos][,YPox] [,HelpFile]
[,Context])
Donde:
expression Es el nombre de un determinado objeto Application.
Si no se usa, asume Aplication.
Prompt Cadena de caracteres, requerido. Es usado como información al
usuario sobre lo que se le pide que ingrese.
Title Cadena de caracteres de tipo Variant, opcional. Es usado para
colocarlo en la barra de título de la ventana de diálogo.
Default Es opcional. Es el valor que se asigna a la variable receptora, si no
se digita ningún dato.
XPos Es la posición horizontal (en pixels) a partir de la cual se
visualizará la ventana.
YPos Es la posición vertical (en pixels)a partir de la cual se visualizará
la ventana.
HelpFile Es el nombre del archivo de ayuda.
Context Es la posición o ubicación dentro del tema de la ayuda, relativo a
la instrucción.
Ejemplo A.1
En este ejemplo se pide ingresar un número y que, si no se digita, la variable
Num recibirá el valor que se asume, 120. La ventana de diálogo tendrá por título
"Ingreso de datos", se desplegará a partir de las coordenadas (4830, 2210) de la
pantalla (en pixels). En la siguiente instrucción no se coloca un título, si no se
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
191
digita una expresión, la variable texto contendrá "Métodos Numéricos" y
cambiará de posición.
Sub datos()
Num = InputBox("Ingresa un número", "Ingreso de datos", 120, ...
...4830, 2210)
Texto = InputBox("Métodos Numéricos", , 5, 1200, 4800)
End Sub
Emisión de resultados: Función MsgBox(..)
Para poder emitir o imprimir en pantalla el contenido de una variable o el
resultado de un cálculo, se usa la función MsgBox (…), el cual abre una ventana
en cual se visualizará todos los resultados emitidos. La sintaxis de este método es
el siguiente:
MsgBox (Prompt [,Botones] [,Title] [,HelpFile] [Context])
Donde:
Prompt Cadena de caracteres de hasta 1024 bytes. Si ocupa más de una
línea se puede separar usando el carácter de retorno de carro
CHR(13), o un carácter de avance de línea CHR(10) o una
combinación de los dos: CHR(13)+CHR(10).
Botones Permite mostrar u determinado tipo d botón a través de un icono.
A continuación, se muestra la lista de las variables internas usadas
para mostrar el icono.
vbOkOnly
vbOkCancel
vbYesNoCancel
vbAbortRetryIgnore
Iconos
Puedes elegir entre los siguientes.
vbCritical
vbQuestion
vbExclamation
vbInformation
Devolver
información
Si quieres que el programa utilice la respuesta del usuario, estas
son las cifras que te devuelve.
Ok = 1
Cancel = 2
Abort = 3
MÉTODOS NÚMERICOS con VBA
192
Retry = 4
Ignore = 5
Yes = 6
No = 7
Ejemplo A.2
El siguiente procedimiento permite ingresar el radio de la circunferencia y
extraer el valor de = 3.1416 de la celda “A1” de la hoja de cálculo activa y
luego calcular el área de la circunferencia.
Sub AreaCirculo()
Dim radio As Double
Dim Area As Double
radio = InputBox("Ingrese el radio r = ")
Pi = Range("A1")
Area = Pi * radio ^ 2
MsgBox (Area)
End Sub
1.11. Funciones
Una función VBA también es conocida como Función Definida por el Usuario,
UDF por sus siglas en inglés, y una vez creada puede ser utilizada de la misma
manera que las funciones incluidas en Excel como la función SUMAR o la
función CONSULTAV. Esto hace que las funciones VBA sean una herramienta
muy poderosa.
Sintaxis:
Function NombreFun(arg1, arg2,...,argn)
Declaración de Variables y constantes
Instrucción 1
Instrucción 2
...
Instrucción k
NombreFun = Valor de retorno
'comentario
End Function
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
193
Una función puede tener o no tener argumentos, pero es conveniente que retorne
un valor. Observe que se debe usar el nombre de la función para especificar la
salida:
NombreFun = Valor de retorno
Nota A.1: Al interior de las funciones, se pueden hacer comentarios utilizando (antes de
éstos) el apostrofo ( ' ) o también se usa rem. El uso de comentarios ayuda a
documentar los programas.
Nota A.2: Para el uso de nombres de variables o de cualquier otra palabra reservada de
VBA, no se discrimina entre el uso de letras mayúsculas y minúsculas.
Ejemplo A.3
Vamos a implementar como una macro la siguiente función en el intervalo [0;1]:
2 1xf x x e
Para su definición y utilización, se siguen los pasos:
a) Ingresamos al menú y en el grupo de opción Programador (activada
previamente) seleccionamos Visual Basic.
Figura A.7: Pasos para abrir el Editor de Visual Basic.
Luego se mostrará la ventana Editor de Visual Basic. También se puede acceder
de forma rápida pulsando la combinación Alt + F11.
MÉTODOS NÚMERICOS con VBA
194
b) Nuevamente, en el menú de la ventana activa, se elige Insertar, para luego
seleccionar Módulo:
Figura A.8: Pasos para insertar módulo para escribir el código de la macro.
c) Ahora en la pantalla de edición del módulo, escribimos el siguiente código
(ver figura A.9):
Function fu(x)
fu = (x ^ 2) * Exp(x) - 1
'Retorna la evaluación de fu(x)
End Function
d) Una vez que ha sido editado el código de la macro, se guarda y salimos del
ambiente de programación en Visual Basic para volver a la hoja electrónica
de donde partimos. Esto se hace en el menú Archivo, seleccionando Cerrar
y Volver a Microsoft Excel.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
195
Figura A.9: Escritura del código de una macro.
e) Para evaluar la función fu(x) en algunos valores que se localicen, por
ejemplo, desde la fila 3 hasta la fila 7 de la columna B, nos situamos en una
celda en la que nos interese dejar el resultado de dicha evaluación y se digital
=f(B3). Luego se arrastra hasta C6 para copiar la fórmula, quedando:
Figura A.10: Resultado de aplicación de la función fu(x).
3. EVALUACIÓN DE FUNCIONES
Muchas fórmulas a evaluar tienen argumentos de distinto tipo, pues algunos
argumentos varían (a veces con un incremento determinado), mientras que otros
permanecen constantes. Por lo general estos argumentos son tomados de celdas
específicas, por lo que es importante saber manejar distintos escenarios para la
evaluación de una función o fórmula.
MÉTODOS NÚMERICOS con VBA
196
2.10. Evaluación con argumentos variables
Tomando el ejemplo de la sección 1.11, a partir de la celda B4 podemos continuar
digitando valores, siempre en la columna B y con el cuidado de que estos
números no se salgan del dominio de la función 2 1xf x x e , es decir, del
intervalo [0 ; 1] que en este caso es el conjunto de los números reales positivos.
Luego se evalúa la función f(x) en la celda C3, como se hizo anteriormente.
Finalmente copiamos el formato hasta la celda C7.
Figura A.11: Evaluación de la función f(x) con funciones de Excel.
2.11. Evaluación con argumentos variables y/o constantes
Es común tener que evaluar funciones o fórmulas que dependen de varios
parámetros, algunos de los cuales se mantienen fijos mientras que otros son
variables.
Ejemplo A.4
El siguiente ejemplo describe una función con tres parámetros y una variable.
La función 1 x
Nf x
Ab
, con A, N, b constantes, b 1 describe una función
logística.
Si queremos evaluar f(x) para distintos valores de x [0 ; 5], seguimos la
siguiente secuencia de pasos:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
197
Para empezar, diseñamos la siguiente tabla en la hoja de cálculo:
Ahora escribimos la fórmula de la función f(x) en la celda E3:
=A$3/(1+B$3*(C$3^-D3))
Como puede observarse, el único argumento variable es x y nos interesa
mantener a los otros argumentos constantes. Para mantener un valor (que se
lea en una celda) constante, se le agrega el símbolo $ antes del número de
fila, como por ejemplo A$3.
Finalmente, escribimos varios valores para x en la columna D, seleccionamos
la celda E3 y arrastramos para evaluar f(x) en el resto de valores de x, como
se muestra en la siguiente figura:
2.12. Construyendo rangos con un incremento fijo
A menudo necesitamos evaluar una función en una secuencia de valores
igualmente espaciados, por lo que a continuación se explica cómo hacerlo,
modificando el ejemplo anterior de función logística.
MÉTODOS NÚMERICOS con VBA
198
Podemos aumentar el incremento h en la celda C5 y mantener los valores fijos N,
A y b. En este caso, por ejemplo, h = 0.5 servirá como incremento entre un valor
y el siguiente, iniciando con x = 0.
En la celda E4 escribimos el valor inicial x = 0 y en la celda E4 se escribe el
nuevo tiempo con el incremento h:
=+E3+C$5
Debemos usar C$5 para que el incremento se mantenga inalterado al copiar esta
operación en otra fila diferente.
Ahora seleccionamos esta celda E5 y la arrastramos hacia abajo para obtener los
nuevos tiempos con el respectivo incremento.
4. ESTRUCTURAS DE CONTROL EN VBA
Un programa computacional escrito mediante cualquier lenguaje de programación
puede verse a grandes rasgos como un flujo de datos, algunos jugando el papel de
datos de entrada, otros son datos que cumplen alguna función temporal dentro del
programa y otros son datos de salida. A lo largo del programa es muy frecuente que
sea necesaria la entrada en acción de otros programas o procesos. A mayor
complejidad del problema que resuelve el programa, mayor es la necesidad de
programar por aparte algunos segmentos de instrucciones que se especializan en una
tarea o conjunto de tareas.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
199
Hay tres tipos de estructuras básicas que son muy utilizadas en la programación de un
algoritmo, a saber, la estructura secuencial, la estructura condicional y la repetitiva.
A continuación, se explica, con ejemplos programados como macros de Excel, estas
estructuras. También se incluyen los programas en seudocódigo para explicar de un
modo más claro la lógica del programa. El uso de seudocódigos por lo general es
suficientemente claro y se escribe en lenguaje muy cercano al lenguaje natural.
En VBA al igual en que otros lenguajes de programación se encuentran disponibles las
principales estructuras de programación en esta capitulo encontraremos algunos
ejemplos de las principales estructuras de control disponibles para la creación de
nuestras macros.
Flujo Secuencial
El flujo secuencial consiste en seguir una secuencia de pasos que siguen un orden
predeterminado.
Ejemplo 1.5
Implemente un programa que a partir de un número N de días, calcula la cantidad
de segundos que hay en esta cantidad de días. Este programa se puede ver como
una secuencia de varios pasos:
Inicio: Ingresa el número N de días
1. H = 24*N, para determinar la cantidad de horas
2. M = 60*H, para determinar la cantidad de minutos.
3. S = 60*M, para determinar la cantidad de segundos.
4. Imprime S.
Fin.
La macro correspondiente a esta secuencia de cálculos puede escribirse como
sigue:
Sub CalculeSegundos()
Dias = InputBox("Ingrese N° de días ")
Horas = 24 * Dias
Minutos = 60 * Horas
Segundos = 60 * Minutos
MsgBox (Segundos)
End Sub
MÉTODOS NÚMERICOS con VBA
200
Sentencia Condicional: IF – THEN – ELSE
Una de las estructuras de programación más comunes, sencillas y muy útiles para
la programación es la estructura IF THEN ELSE.
Una sentencia condicional se presenta en un programa o procedimiento que debe
escoger una acción o proceso a ejecutar, dependiendo de condiciones que puedan
cumplirse.
Sintaxis
If ExpresionCondicional Then
[ Sentencias 1 ]
Else
[ Sentencias 2 ]
End If
Permite ejecutar el grupo de sentencias 1 siempre que la evaluación de
"ExpresiónCondicional" de cómo resultado Verdadero; en caso contrario se ejecuta
el grupo de sentencias 2.
Ejemplo A.6
Se le pide al usuario que ingrese la fecha de cierre, y, en el caso de que lo haga,
entonces se ejecute el procedimiento cierre. Para esto escribimos el siguiente
código:
Sub Fech_cierre()
Dim Fecha_V As Date
Fecha_V = InputBox("Ingrese fecha de cierre:")
If Fecha_V = Date Then cierre
End Sub
Sub cierre()
MsgBox ("La fecha es Correcta")
End Sub
Ahora vamos a realizar un procedimiento que le pregunte al usuario si desea salir
de la aplicación, y, si su respuesta es afirmativa, entonces se muestre un saludo y
se ejecute el procedimiento salir.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
201
Sub Fech_salir()
R = MsgBox("¿Desea salir de la aplicacion?", vbQuestion + vbYesNo)
If R = vbYes Then
MsgBox "Hasta Pronto"
End 'salir
End If
End Sub
Como vimos, la estructura If…Then es muy limitada, porque permite ejecutar una
o más instrucciones solo si una cierta condición es verdadera, y no realiza ninguna
acción en caso contrario.
Ejemplo A.7
Implemente un programa que realice lo siguiente: defina dos variables: sexo y
nombre. Luego, solicita al usuario que ingrese el nombre y el sexo de una persona.
En función del último dato introducido, se escribirá: “Hola Sra. xxxx”, si la
variable sexo es igual a F y “Hola Sr. xxxx”, si es distinta de F.
Sub saludo()
Dim nombre As String
Dim sexo As String
nombre = UCase(InputBox("Ingrese su nombre: "))
sexo = UCase(InputBox("Ingrese su sexo: " & "(F: femenino, M: Masculino)"))
If sexo = "F" Then
MsgBox "Hola Sra. " & nombre
Else
MsgBox "Hola Sr. " & nombre
End If
End Sub
MÉTODOS NÚMERICOS con VBA
202
Sentencia Condicional: SELECT – CASE
Cuando tenemos muchas condiciones diferentes, puede ser difícil utilizar varios If
anidados; por esta razón, VBA ofrece la estructura Select Case como alternativa
de la estructura If…Then…Else. Con la estructura Select Case, se evalúa una
expresión que puede tomar un número indeterminado de valores y realizar
acciones según el valor de esta. Su sintaxis es la siguiente:
Sintaxis
Select Case Expresión
Case valor 1
[ Sentencias 1 ]
[ Sentencias 2 ]
…
Case valor 2
[ Sentencias 1 ]
[ Sentencias 2 ]
…
Case valor 3
[ Sentencias 1 ]
[ Sentencias 2 ]
…
…
Case Else
[ Sentencias 1 ]
[ Sentencias 2 ]
…
End Select
Ejemplo A.8
Implemente un programa, el cual pida al usuario que ingrese una longitud
expresada en centímetros. Si la longitud es menor que 30.48 cm, se la debe mostrar
en pulgadas; si es mayor o igual que 91.44 cm, se la debe mostrar en yardas, y, en
caso contrario, se la debe mostrar en pies. (Sabemos que 1 yarda = 3 pies, 1 pie =
12 pulgadas y 1 pulgada = 2.54 cm).
Para esto, escribimos el siguiente procedimiento:
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
203
Sub conver()
'L = longitud, inch = pulgada
'ft = pie, yd = yarda
Dim L As Single, inch As Single
Dim ft As Single, yd As Single
L = Val(InputBox("Ingrese Longitud en cm:"))
Select Case L
Case Is < 30.48
inch = L / 2.54
MsgBox L & " cm equivalen a " & inch & " pulgadas"
Case 30.48 To 91.44
ft = L / (12 * 2.54)
MsgBox L & " cm equivalen a " & ft & " pies"
Case Else
yd = L / (3 * 12 * 2.54)
MsgBox L & " cm equivalen a " & yd & " yardas"
End Select
End Sub
Sentencias repetitivas: SENTENCIA FOR … NEXT
Permite ejecutar un determinado número de veces el grupo de sentencias incluidos
en el cuerpo del For … Next
Sintaxis
For VarIndice = ValInit To ValFInal [ Step Incr ]
[ Sentencias ]
Next
Para ello requiere de una variable que funciona a modo de índice (VarIndice) el
cual empieza en un primer valor (ValInit), por cada iteración que se realiza, se
incrementa en una determinada cantidad (Incr), hasta llegar al extremo (ValFinal),
después del cual, continua con la siguiente sentencia, debajo de Next. Si el
incremento es la unidad, no se usa STEP Incr.
MÉTODOS NÚMERICOS con VBA
204
Ejemplo A.9
Implemente un programa que, permita realizar la sumatoria de los números enteros
múltiplos de 5, comprendidos entre el 1 y el 100, es decir, 5 + 10 + 15 + … + 100,
y muestre el resultado en un cuadro de mensaje.
Sub suma_5()
Dim i As Integer
Dim suma As Integer
For i = 1 To 100
If (i Mod 5) = 0 Then
suma = suma + i
End If
Next
MsgBox "La suma de los múltiplos de 5 entre 1 y 100 es: " & suma
End Sub
Nos muestra:
Ejemplo A.10
Ahora implemente el programa que, calcule la potencia de dos de los números
naturales impares que se encuentran comprendidos entre 1 y 10, es decir 12, 32, 52,
72, 92.
Sub potencia_impar()
Dim i As Integer
Dim suma As Integer
Dim potencia As Integer
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
205
For i = 1 To 10 Step 2
potencia = i ^ 2
Range("A" & i).Value = i
Range("B" & i).Value = " = "
Range("C" & i).Value = potencia
Next
End Sub
En la hoja de cálculo activa no muestra:
NOTA:
Use Cells(fila, columna), donde fila es el índice de la fila y columna es el índice de
la columna, para obtener una sola celda. En el siguiente ejemplo se establece en 24
el valor de la celda A1.
Worksheets(1).Cells(1, 1).Value = 24
MÉTODOS NÚMERICOS con VBA
206
Sentencias repetitivas: DO … LOOP
La estructura Do…Loop permite ejecutar un bloque de instrucciones un número
indefinido de veces, hasta que se cumpla una condición. Este tipo de bucle hace
posible probar una condición al comienzo o al final de una estructura de bucle.
También podemos especificar si el bucle se repite mientras (While) la condición
sigue siendo verdadera (True) o hasta que se convierta en verdadera (Until).
Sintaxis Do … Loop While (Este bucle se repite mientras la condición se cumple)
Do
[ Sentencias ]
Loop While ExpresiónCondicional
Sintaxis Do … Loop Until (Este bucle se repite hasta que la condición se cumple)
Do
[ Sentencias ]
Loop Until ExpresiónCondicional
Ejemplo A.10
Implemente un programa que, solicite al usuario que ingrese la cantidad de
números para realizar la sumatoria de los múltiplos de 5, entre 1 y la cantidad
ingresada.
Sub ejemplo_Do_Loop()
Dim i As Integer
Dim n As Integer
Dim suma As Integer
n = InputBox("ingrese cantidad de números")
Do
i = i + 1
If (i Mod 5) = 0 Then
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
207
suma = suma + i
End If
Loop While i < n
MsgBox "La suma de los múltiplos de 5 entre" & "1 y " & n & " es: " & suma
End Sub
Sentencias repetitivas: WHILE … WEND
La estructura While…Wend podemos utilizarla cuando no conocemos por
anticipado el número de iteraciones. Su sintaxis es la siguiente:
Sintaxis
While ExpresiónCondicional
[ Sentencias ]
Wend
Ejemplo A.11
Implemente un programa haciendo uso de la estructura While…Wend para el
ejemplo A.10.
Sub ejemplo_While_Wend()
Dim contador As Integer
Dim n As Integer
Dim suma As Integer
n = InputBox("Ingrese cantidad de números: ")
While contador <= n
contador = contador + 1
If (contador Mod 5) = 0 Then
suma = suma + contador
End If
Wend
MsgBox "La suma de los múltiplos de 5 " & "entre 1 y " & n & " es: " & suma
End Sub
MÉTODOS NÚMERICOS con VBA
208
5. CODIGOS MÁS COMUNES EN MACROS
Trasladarse a una Celda
Range("A1").Select
Escribir en una Celda
Activecell.FormulaR1C1="Paty Acosta"
Letra Negrita
Selection.Font.Bold = True
Letra Cursiva
Selection.Font.Italic = True
Letra Subrayada
Selection.Font.Underline = xlUnderlineStyleSingle
Centrar Texto
With Selection
.HorizontalAlignment = xlCenter
End With
Alinear a la izquierda
With Selection
.HorizontalAlignment = xlLeft
End With
Alinear a la Derecha
With Selection
.HorizontalAlignment = xlRight
End With
Tipo de Letra (Fuente)
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
209
With Selection
.Font .Name = "AGaramond"
End With
Tamaño de Letra (Tamaño de Fuente)
With Selection.Font
.Size = 15
End With
Copiar
Selection.Copy
Pegar
ActiveSheet.Paste
Cortar
Selection.Cut
Ordenar Ascendente
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Orden Descendente
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Funciones para manejo de texto
Left(Texto,NChar)
Esta función permite extraer los primeros "NChar" caracteres de la cadena "Texto"
Right(Texto, NChar)
Contrario a la anterior, esta función permite extraer de la cadena "Texto", los
últimos "NChar" caracteres.
MÉTODOS NÚMERICOS con VBA
210
Mid(Texto, Init, NChar)
Esta función permite extraer de Texto, "NChar" caracteres a partir del carácter
"Init"
Instr(Texto1, Texto2,[Inicial])
Esta función devuelve la posición inicial en que se encuentra la cadena Texto2,
dentro de la cadena Texto1. Esto lo hace examinando a partir de la posición Inicial.
Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos
211
BIBLIOGRAFIA
Acosta, N. P., & Acosta, T. A. (2015). Introducción a la programación en
Excel con Visual Basic Application. Quito : Escuela Politécnica
Nacional.
Acosta, P. (2010). MS Excel con programación de Macros en Visual Basic
Application.
Amelot, M. (2013). VBA Excel 2013 Programación en Excel: Macros y
lenguaje VBA. ENI Ediciones.
Cardona, J. G., Rojas, L. M., & Mesa, F. (2008). EXCEL aplicaciones en
álgebra, estadística, probabilidad y física. Colombia: ECOE
Ediciones.
Castañeda, J. J. (2006). Aplicaciones en Visual Basic 6.0. Lima - Perú: RITISA
GRAFF.
Castellanos, L. (2014). Cálculo Numérico. Maracaibo - Venezuela.
Chapra, S., & Canale, R. (2006). Métodos Numéricos para ingenieros. México:
Mc Graw Hill.
Comer, E. (2009). Métodos Numéricos, Una exploración basada en Scheme.
Tijuana.
Mora, W. (2010). Introducción a la Teoría de los Números. Cartago - Costa
Rica.
Morales, H. (2005). MATLAB para Ciencias e Ingeniería con Métodos
Numéricos y Visualización Gráfica . Lima Perú: Megabyte.
Quintana, P., Villalobos, E., & Cornejo, M. (2005). Métodos Numéricos con
aplicaciones en Excel. México: Reverté.
Zanini, V. (2013). Macros en Excel 2013: Desarrollo de aplicaciones con
Visual Basic. Buenos Aires: Fox Andina & Dálaga S.A.
Zota, V. (2006). Métodos Numéricos con aplicaciones. La Paz.