Está en la página 1de 4

Tcnicas Programadas en Visual Basic para Aproximacin a Integrales

Por Harvey Triana


Este articulo presenta tcnicas programadas en Visual Basic para integracin numrica por mtodos
elementales. Resulta bastante til en Ingeniera aplicada y para estudiantes de las reas del Calculo
Infinitesimal.
En un contexto formal, la integral es la funcin antiderivada de una funcin f(x). La integracin numrica es
aplicable en los siguientes caso: (1) La antiderivada no es simple de resolver, (2) Se desea determinar el rea
bajo la curva de una serie de datos empricos o valores tabulados, lo que implica una incertidumbre de f(x).
(3) La antiderivada conduce a funciones cuyas propiedades no han sido estudiadas o cuyos valores no han
sido tabulados. Personalmente he aplicado la integracin numrica dado el problema o razn (2)
La idea bsica es muy sencilla, se aproxima el integrando mediante segmentos pequeos de otra funcin cuya
integral es de fcil clculo, p.e. una trapecio. El propsito del presente documento no es ensear o demostrar
los teoremas y formulas, sino dar una aplicacin a travs de un programa Visual Basic..

Ejemplo
La antiderivada de 1/x es Log|x|. Supongamos que la antiderivada no se conociera, que la funcin f(x) tuviera
una antiderivada bastante compleja, o que solo contramos con una serie de datos empricos y requerimos
conocer el rea bajo la curva. En estos caso, la solucin puntual (un valor), o la integral, se calcula por
Tcnicas numricas.
Caso concreto: hallar la integral de 1a 2 de f(x) = 1/x. Como conocemos la antiderivada de f(x) = 1/ x es
Log(x) + C, rpidamente podemos decir que es Log(2) - Log(1), (logaritmos neperianos o en base Euler) y
con el uso de una calculadora, obtengo 0.69... Cmo solucionara esto si no conociera la antiderivada?.
1. Obtengo valores de la funcin f(x) desde a hasta b, con un incremento discreto (entre menor es el
intervalo, ms precisa ser la aproximacin numrica):
i x f(x)
0 1.000 1.00000
1 1.100 0.90909
2 1.200 0.83333
3 1.300 0.76923
4 1.400 0.71429
5 1.500 0.66667
6 1.600 0.62500
7 1.700 0.58824
8 1.800 0.55556
9 1.900 0.52632
10 2.000 0.50000
Aplico la formula de algn mtodo numrico para aproximar Integrales. Los ms conocidos y elementales
son:

Regla de lo Trapecios:


Regla de Simpson Generalizada:


El termino E se refiere al error que implica la tcnica numrica. El error tiene una connotacin terica y en la
prctica no se aplica. La Regla de Simpson es ms precisa que la Regla de los Trapecios, pero se limita a la
condicin de que n sea impar (el mtodo se basa en aproximacin a segmentos de parbola cada 3 punto).
Bien, empleo cualquiera de las funciones TrapeciosRule o SimpsonRule que anexo al final de este articulo, de
la siguiente manera:
Uso un array y() de tipo Single y almaceno los valores de f(x). Finalmente aplico Resultado =
TrapeciosRule(a, b, n, y()), Donde a =1, b = 2 y n = 10. En cdigo que use fue:
n = 10
ReDim y(0 To n) As Single
a = 1
b = 2
x = 0
For i = 0 To n
x = a + i * (b - a) / n
y(i) = 1 / x
Next
Resultado = TrapeciosRule(a, b, n, y())
Los resultados son los siguientes:
Antidifferentiation = 0.693147
Trapecios Rule = 0.693773 Error: -0.09 %
Regla de Simpson = 0.693152 Error: 0.00 %
Funciones para Integracin Numrica
Public Function TrapeciosRule( _
a As Single, b As Single, n, y() As Single _
) As Single
'Apostol 735
Dim i, s As Single
For i = 1 To n - 1
s = s + y(i)
Next
TrapeciosRule = 0.5 * (b - a) * (y(0) + 2 * s + y(n)) / n
End Function

Public Function SimpsonRule( _
a As Single, b As Single, n, y() As Single _
) As Single
If n Mod 2 Then
SimpsonRule = -999.25 'Retorna una bandera de error
Exit Function
End If

'//Apostol 742
Dim i, s1 As Single, s2 As Single, Par As Boolean
For i = 1 To n - 1
If Par Then
s2 = s2 + y(i)
Else
s1 = s1 + y(i)
End If
Par = Not Par
Next
SimpsonRule = (b - a) * (y(0) + 4 * s1 + 2 * s2 + y(n)) / 3 / n
End Function
Hola,
En el cdigo este deberas darle un nombre distinto al seno.
Con seno(z) estas dicindole que busque un vector llamado "seno" y le saque la posicin z. Aqu no
usas vectores as que nada.
Despus, en el Next no tienes que poner "Next z", eso ya lo defines al poner For z = 0 To 100.
Te propongo mi solucin:
Private Sub Command1_Click()
'declaro variables
Dim seno As Double
Dim seno_temp As Double 'Variable para almacenar temporalmente el valor del seno antes de
sumarlo a seno
Dim fact As Double
Dim z As Integer
Dim n As Double
Dim a As Single
Dim x As Single
'suma acumulativa y calculo factorial para cada valor de "z"
seno = 0
x = Val(Text1.Text)
For z = 0 To 100
n = (2 * z + 1)
'Calculo el factorial
If n = 1 Then
fact = 1
Else
fact = fact * (n + 1) * (n + 2)
'Hallo el valor de "seno" y sumo
seno_temp = ((-1) ^ z) * (x ^ n) / (n * fact)
seno = seno + seno_temp
Next
Text3.Text.SetFocus
End Sub
Marcado en negrita lo que deberas corregir.
Espero que te sirva.
Saludos

También podría gustarte