Transcript

Nivel Básico

Alcides RAMOS CALCINA

Víctor Alfredo PANIAGUA GALLEGOS

_________________________ 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: [email protected]

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: [email protected]

Noviembre, 2019

MÉTODOS NÚMERICOS con VBA

A nuestros alumnos

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

Alcides Ramos Calcina – Víctor Alfredo Paniagua Gallegos

7

Capítulo 1

Capítulo 1: CÁLCULO NUMÉRICO

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.

MÉTODOS NÚMERICOS con VBA

34

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.

MÉTODOS NÚMERICOS con VBA

68

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?

MÉTODOS NÚMERICOS con VBA

138

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

MÉTODOS NÚMERICOS con VBA

172

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.

UNIVERSIDADPRIVADASAN CARLOS


Recommended