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
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.
- Compartir respuesta