Como Escribir Algoritmo en Excel

como puedo escribir un algoritmo en excel  π = ∞ ∑ i=0 (i!) 22 i+1 /(2i+1)!  o una macro que calcule un volumen de datos

1 Respuesta

Respuesta
1

No me queda claro si tu ecuación es (22x+1)/(2x+1) o 22x + (1/(2x+1)), también olvidaste poner los limites en los cuales se va a evaluar la integral, asumiendo que sea la primera he creado una plantilla así, con limites en intervalos, en la columna 1 esta desglosada la división de los intervalos, en la columna 2 a partir de la celda b9 empieza calculando así b8+limite_sup - limite_inf) / intervalos, en la columna 3 son los valores que se calculan aplicando la fórmula que quieres integrar, después en la columna 4 se hace repite el calculo de la columna 2 solo que ahora se toma la celda c8, después dos sumas una de d8 a d27 y otra de d9 a d28, las promedia, el promedio lo divide entre 10 ya que parte del resultado es un logaritmo y ese es el resultado de la integral faltaría multiplicarla por Pi que eso ya te lo dejo a ti

y esta es la macro usa el metodo de Riemman 

Sub integral()
With Range("c3:c5")
    limite_inf = .Cells(1)
    limite_sup = .Cells(2)
    intervalos = .Cells(3)
End With
Set datos = Range("a9").Resize(intervalos, 3)
With datos
    For i = 0 To intervalos
        .Cells(i, 1) = i
        If i = 0 Then .Cells(i, 2) = 1
        If i > 0 Then
            anterior = .Cells(i - 1, 2)
            resultado = anterior + ((limite_sup - limite_inf) / intervalos)
            .Cells(i, 2) = resultado
        End If
        .Cells(i, 3) = (22 * .Cells(i, 2) + 1) / ((2 * .Cells(i, 2) + 1))
        resultado2 = .Cells(i, 3) + ((limite_sup - limite_inf) / intervalos)
        .Cells(i, 4) = resultado2
    Next i
    Set datos = .CurrentRegion
    filas = .Rows.Count
    .Cells(2, 4).Resize(filas, 1).Select
    Range("g3") = WorksheetFunction.Sum(.Cells(1, 4).Resize(filas - 1, 1))
    Range("g4") = WorksheetFunction.Sum(.Cells(2, 4).Resize(filas, 1))
    Range("g5") = WorksheetFunction.Average(Range("g3:g4")) / 10
End With
Set datos = Nothing
End Sub

¡Gracias! Señor Bond, te pido disculpas, aparece mal la fórmula.. es el algoritmo de espiga.I calcula valor de "pi".. te envío enlace www.cs.ox.ac.uk/people/jeremy.gibbons/publications/spigot.pdf

La idea es calcular un volumen de datos "10 mil "... Moltes Gracies

Hay algo mal en tu petición el algoritmo que planteas no es para calcular volúmenes sino constantes como Pi, e, ln(2) y ln(10), la macro que te pase es para calcular volúmenes solo que necesitas definir los limites y la fórmula que vas a integrar, solo decir quiero encontrar el volumen de 10000 no dice nada, esta fórmula que planteas no te sirve para calcular volúmenes, si dijeras quiero encontrar el volumen de una área definida por x2 dx en la región comprendida de 0 a 10000 entonces seria otra cosa, respecto a tu fórmula hay otro problema el factorial un factorial de 10000! Es una cifra astronómica quizá del tamaño del universo no hay manera de calcularla con Excel o al menos yo no conozco forma, lo más lejos que llega en factoriales es 85 y esta es la macro, en C2 pones cuantas interacciones quieres llevar a cabo si pasa de 85 te mandara un mensaje de error y dará por finalizada la macro

Sub CALCULAR_PI()
INTERACCIONES = Range("C2")
For I = 0 To INTERACCIONES
    FACTORIAL = WorksheetFunction.Fact(I) ^ 2
    POTENCIA = I + 1
    On Error Resume Next
    DIVISOR = WorksheetFunction.Fact(((2 * I) + 1))
    If Err.Number > 0 Then
        MsgBox ("HAS LLEGADO AL LIMTE DE INTERACCIONES"), vbInformation, "AVISO"
        Exit For
    End If
    On Error GoTo 0
    Formula = FACTORIAL * 2 ^ POTENCIA / (DIVISOR)
    If I = 0 Then X = Formula
    If I > 0 Then X = X + Formula
Next I
Range("C5") = X
End Sub

Hola .. disculpa no me he expresado bien.. con este algoritmo se calcula el valor de "pi".. me refiero con 10 mil, ha que necesito calcular el valor de 10 mil números... te envío una macro que hace este calculo, pero tarda mucho al trabajar con un enlace de la web..http://www.subidiom.com/pi/pi.asp

Se tarda bastante justo porque el factorial va arrojando números cada vez más grandes de hecho un factorial de 10000, es un numero 3.14 x 10 elevado a la 10000, hay poco que hacer por ese método y aun quedan las potencias que tendrán justo el mismo problema un numero elevado a la 10000 genera un numero casi infinito hay una alternativa llamada simulación de montecarlo y en sus inicios se uso para tratar de encontrar el cero fonal de Pi la fórmula es la siguiente Pi=4*(puntos dentro del circulo/puntos totales), para esto se simula un lanzamiento de dardos, se cuentan cuantos cayeron dentro del circulo y cuantos dardos se tiraron basado en números aleatorios, por ejemplo en la imagen veras lo siguiente en la columna B se encuentran cuantos dardos se lanzaron, en la columna C cuantos cayeron dentro del circulo y en la columna A la fórmula que explique arriba, y con este método que es bastante sencillo la única limitación es la cantidad de números que le pongas puede ser 10000 o un millón.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas