Resolver ecuación con excel (Valoración de 5.00 sobre 5, resultante de 1 votos)

Aplicaciones y herramientas informáticas, internet y otros sucedáneos informáticos
Avatar de Usuario
por
#202636
Buenas, a ver si algún alma caritativa con mas nivel de excel que yo sabe como programar lo siguiente.
Estaba yo preparando una hojita excel que calculase las pérdidas instantáneas de tesado en hormigón pretensado, y en una de estas, resulta que no se programar la siguiente formulita:

a= [Pa · [1- exp(-mu·alfa - k · Lp)] · Lp]/ Ep·Ap

el tema es que el dichoso Lp no puedo despejarlo al estar afectado con el "e" y si saco logaritmos pues uno me queda dentro del logaritmo, asi que no consigo ni despejarlo ni programar en excel algo que metiendo el resto de datos me calcule Lp.

Alguna idea?

:brindis
Avatar de Usuario
por
#202637
Qué variables son conocidas y cúales quieres obtener? y "exp" es e^ no?, mejor si pones un ejemplo con los datos que tienes y los que quieres obtener.
Avatar de Usuario
por
#202641
Sobre la formula que puse:

a= [Pa · [1- exp(-mu·alfa - k · Lp)] · Lp]/ Ep·Ap

son conocidas todas las variables excepto Lp
exp es "e^" que estaba con la notación excel en mente jeje.

por poner un ejemplo:
a = 5 mm
Pa = 198.75 kN
mu = 0.18
alfa = 0.3 rd
k = 0.0018 m^(-1)
Ep = 190000 N/mm2
Ap= 4019 mm2
Lp = ?????? m

Gracias
por
#202651
Es una ecuación trancendente y para hallar Lp tienes que usar "Buscar objetivo" o el "Solver" que tantea por aproximaciones sucesivas el valor de Lp.

Yo uso mucho estas herramientas de excel en cálculos técnicos como la fórmula de Coolebrok en flujo de fluidos.

También se puede hacer "a mano" por aproximaciones sucesivas dando valores aproximados de Lp hasta que se resuelva la ecuación.

Repasa el tema de la solución de ecuaciones trancendentes por aprximaciones sucesivas, que para algo estudiastes cálculo :ein
Avatar de Usuario
por
#202653
No, si a mano lo se resolver, y con la HP también, no me falla el cálculo me falla el excel :mrgreen: , que no conozco ninguna de las dos funciones que me indicas.. :cabezazo

Muchas gracias
Avatar de Usuario
por
#202656
Tienes que igualar a cero la ecución y resolverla con Solver
Avatar de Usuario
por
#202686
Como te han dicho con buscar objetivo, sería suficiente, está en menú datos/buscar objetivo, como se ve en la siguiente imagen.

También la puedes resolver con una función personalizada, como el archivo adjunto (evidentemente, tiene programación vba) para modificar la función entras en el editor vba (pulsando alt+F11), es un bucle muy simpre entre unos valores que puedes fijar como quieras. No he comprobado las unidades.

Saludos.
Regístrese y/o inicie sesión para ver archivos adjuntos.
Avatar de Usuario
por
#202788
muchas gracias por vuestra ayuda! intentare introducir lo que me comentais.

Ea, os la habeis ganado. :brindis :brindis
Avatar de Usuario
por
#204199
Hay otra manera que es la que prefiero yo: creando una referencia circular a la propia celda.

Con esto se consigue un cálculo por iteración automático, sin tener que utilizar el Solver o funciones de Visual Basic.

Lo primero es recombinar la ecuación para tenerla de forma Lp=f(Lp) o sea: Lp = (Ep·a)/(Ap·Pa·(1-exp(-mu·alfa-K·Lp)))

Una vez metidas la variables conocidas en celdas, en la celda que quieres calcular metes la siguiente fórmula:

=SI(ESERROR(Lp);15;(Ep·a)/(Ap·Pa·(1-exp(-mu·alfa-K·Lp))))

Obviamente cambiando las variables por las celdas donde estén.
El 15 es una estimación inicial del valor de Lp.

Para que esto funcione tienes que asegurarte de ir al menu Herramientas>Opciones>Pestaña Calcular>Iteración y mirar que esté activada la opción. Si no lo está, te dará un mensaje de error avisando de referencia circular que debes cancelar y entonces debes activar la opción. Yo lo he probado y me funciona.

Igual lo que he hecho es liarte más cuando ya tenias la solución, tengo ese don :D
por
#211502
Y para hacer algo parecido con la ecuación Colebrooks-white??
Avatar de Usuario
por
#211511
Seomah escribió:Hay otra manera que es la que prefiero yo: creando una referencia circular a la propia celda.

Con esto se consigue un cálculo por iteración automático, sin tener que utilizar el Solver o funciones de Visual Basic.

Lo primero es recombinar la ecuación para tenerla de forma Lp=f(Lp) o sea: Lp = (Ep·a)/(Ap·Pa·(1-exp(-mu·alfa-K·Lp)))

Una vez metidas la variables conocidas en celdas, en la celda que quieres calcular metes la siguiente fórmula:

=SI(ESERROR(Lp);15;(Ep·a)/(Ap·Pa·(1-exp(-mu·alfa-K·Lp))))

Obviamente cambiando las variables por las celdas donde estén.
El 15 es una estimación inicial del valor de Lp.

Para que esto funcione tienes que asegurarte de ir al menu Herramientas>Opciones>Pestaña Calcular>Iteración y mirar que esté activada la opción. Si no lo está, te dará un mensaje de error avisando de referencia circular que debes cancelar y entonces debes activar la opción. Yo lo he probado y me funciona.

Igual lo que he hecho es liarte más cuando ya tenias la solución, tengo ese don :D

Tiene muy buena pinta, pero yo no consigo que me funcione :oops: .. podrias colgar un excel con esa programación? Gracias por tu ayuda! :brindis
por
#211512
esto lo hacía solo un programita muy chorras que usabamos en la escuela de ing. El EES (Engineering equation solver)

Salut.
Pero oyez, me apunto lo de la excel!
Muy bueno. :brindis
Avatar de Usuario
por
#211513
osca escribió:Y para hacer algo parecido con la ecuación Colebrooks-white??


Y con una UDF muy sencilla:

Código: Seleccionar todoFunction Friccion(Reynolds, Rugosidad, Diametro)
    '___Funcion personalizada para calcular el factor de fricción
    '___con la fómula de Colebrok-White
    '___Rugosidad en metros
    '___Diámetro en milímetros
    Dim n As Double 'Contador bucle
    Dim PrimerTermino
    Dim SegundoTermino
    Const Precision = 0.001
    On Error Resume Next
    For n = 0.0001 To 0.5 Step 0.00001
        PrimerTermino = 1 / Sqr(n)
        SegundoTermino = -2 * (WorksheetFunction.Log(Rugosidad / (Diametro / 1000) / 3.7 + 2.51 / (Reynolds * Sqr(n))))
        If Abs((PrimerTermino - SegundoTermino)) < Precision Then
            Friccion = n
            Exit Function
        End If
    Next
    On Error GoTo 0
End Function
por
#211514
Gracias wenner eres un máquina, pero que significa UDF?

Si en mi tabla tengo el diámetro en diferentes filas como lo pongo en ese programa? Y como saco el valor a la tabla excell?

Gracias de nuevo y un saludo.
Avatar de Usuario
por
#211518
Una UDF es una función definida por el usuario, funciona igual que una función integrada de excel aparecerá en la funciones de usuario, para entrar en el editor VBA pulsas alt-F11, puedes modificar los parámetros de precisión ya que si tienes muchas fórmulas en tu hoja se puede ralentizar bastante, quizás sería mejor buscar otra macro más eficiente.
Regístrese y/o inicie sesión para ver archivos adjuntos.
Palabras clave
Temas similares

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

Permisos de mensaje

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro