Funciones en VBA para Sumatorias

Las sumatorias constituyen una herramienta muy importante de las matemáticas, que son muy utilizada en algunos algoritmos de métodos numéricos para resolver algunos problemas como la aproximación de integrales.

En este articulo vamos a crear algunas funciones en VBA para realizar sumatorias.

Una suma puede ser expresada de la siguiente forma:

suma-1

para realizar la sumatoria en VBA puede utilizarse un ciclo for next, el cual tiene la siguiente forma:

Public Function sumatoria(a As Single, b As Single, st As Single) As Single

Dim suma As Single
suma = 0
For i = a To b Step st
suma = suma + i
Next i
sumatoria = suma

End Function

Esta es una rutina muy sencilla que permite realizar una sumatoria de números naturales desde a hasta b con paso st.

Esta función puede ser aplicada como cualquier función de Excel, o dentro de cualquier procedimiento en VBA.

suma-2

El resultado de aplicar esta formula en la hoja es la que se muestra a continuación.

suma-3

Para realizar la sumatoria de los cuadrados entre a y b con paso igual a st podríamos utilizar una función bastante parecida.

Public Function sumacuad(a As Single, b As Single, st As Single) As Single

Dim suma As Single
suma = 0
For i = a To b Step st
suma = suma + i ^ 2
Next i
sumacuad = suma

End Function
suma-4

En lugar de definir el paso st, podríamos definir el numero de pasos y podríamos calcular el delta a sumar.

Supongamos que tenemos una función f(x), y queremos sumar los paneles que se encuentran entre dos puntos a y b. y que existen n paneles de igual ancho delta x.

Primero trataremos de hacer una suma de los rectángulos, y tomaremos la altura de cada rectángulo el valor de f(xi), tal y como se muestra en la figura, esto genera al final un área que es menor  que el área debajo de la curva.

suma-5

Es decir en el intervalo el punto 1 y 2 tomaremos el valor de f(1) como el valor de la altura del rectángulo.

La función VBA para implementar esta suma es:

Public Function areapanel1(a As Single, b As Single, n As Integer) As Single
Dim deltax As Single
deltax = (b – a) / n
Dim sumpanel As Single
sumapanel = 0

For i = a To (b – deltax) Step deltax
funcr = i ^ 2 + 3
sumapanel = sumapanel + funcr * deltax
Next i
areapanel1 = sumapanel

End Function

El valor de la función se calcula en la línea de código:

funcr=i^2+3, lo que equivale a f(x)=x^2+3

La aproximación realizada es una aproximación por defecto, ahora en lugar de utilizar como altura del rectángulo f(Xi) utilizaremos f(Xi+1). En el intervalo entre el punto 1 y el punto 2 utilizaremos f(2) como altura del rectángulo. Esto proporcionara una aproximación por exceso, ya que es mayor que el área debajo de la curva.

suma-6

La función para implementar esta suma en VBA es:

Public Function areapanel2(a As Single, b As Single, n As Integer) As Single
Dim deltax As Single
deltax = (b – a) / n
Dim sumpanel As Single
sumapanel = 0

For i = (a + deltax) To b Step deltax
funcr = i ^ 2 + 3
sumapanel = sumapanel + funcr * deltax
Next i
areapanel2 = sumapanel

End Function

A medida que el numero de paneles aumenta, la diferencia entre las aproximaciones por exceso y por defecto se hace mas pequeña, y ellas se aproximan mas al valor del área debajo de la curva.suma-7

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s