[pyar] algun matematico por estos lados??

Fidel Sanchez-Bueno fidellira.6 en gmail.com
Sab Ago 21 22:45:59 ART 2010


  El 21/08/2010 12:17 p.m., Pablo Alejandro Costesich escribió:
> 2010/8/21 Fidel Sanchez-Bueno<fidellira.6 en gmail.com>:
>> es decir calcular un minimo, un maximo y un valor del medio, comparar con mi
>> setpoint y luego repetir el proceso..
>>
>> Yo se que la busqueda binaria es bastante efectiva para disminuir el numero
>> de iteraciones, el problema es que los datos no son lineales (en la imagen
>> ven los datos y la grafica resultante [1])
>>
>> me imagino que debe haber alguna manera de mejorar la busqueda binaria con
>> valores no lineales tratando de predecir mejor el "valor del medio"..
>>
>> [1] http://dl.dropbox.com/u/391810/imagen.PNG
>>
> A riesgo de ser incinerado por los matemáticos, ingenieros y
> científicos de la lista, respondo:
>
> ¿Los valores siempre van a tomar una curva similar? Porque eso parece
> una función del estilo f(x) = a/x + b. Si vas a los x's más chicos, tu
> pivote va a estar más a la izquierda del segmento de búsqueda. En
> valores de x's más grandes, va a estar cada vez más cerca del medio.
>
> ¿Si probás con un pivote que fraccione con p(x_1, x_2) =
> (2*x_1*x_2)/(x_1 + x_2)? Luego es cuestión de comparar los resultados
> para ver si se encuentran dentro del rango [x_1, pivote), [pivote,
> pivote] o (pivote, x_2].
>
> La función p la saqué buscando el promedio de y_1 con y_2 y buscando
> el x que le corresponde. Tomo f(x) = 1/x, que vos tendrías que
> ajustar, pero creo que anda mejor que tomar x como el promedio clásico
> (no lo probé).
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
Muchas gracias esa es la respuesta que andaba buscando =) (bueno no la 
he probado todavia pero almenos es una guia)

antes que nada disculpen por no explicar bien mi pregunta, no soy bueno 
para plantear preguntas matematicas, generalmente enredo mas a la gente 
a quien le pregunto y yo me quedo con la duda xD

para los que me recomendaron scipy, metodos de montecarlo y 
newton-raphson igualmente muchas gracias pero el problema es mas 
sencillo de lo que les he planteado..

voy a tratar de explicar mejor el problema (espero no enredarlos mas)....

estoy desarrollando un programa para diseñar sistemas de tuberias 
(calcular el diametro minimo de operacion de la linea, calcular las 
perdidas por friccion, caida de presion, etc)..

Para resumir un poco, debido a la  naturaleza de las ecuaciones que 
riguen los "fenomenos" que ocurren al transportar fluidos por tuberias, 
el procedimiento para calcular el diametro minimo de operacion es 
netamente iterativo. el procedimiento es asi:

    * Se tiene caida de presion de la linea
    * Se asume un diametro
    * se calcula la caida de presion con el diametro asumido
    * Se compara la caida de presion calculada con el diametro asumido,
      con la caida de presion de la linea en caso de que no sean igual
      se realiza otra iteracion con otro diametro


el problema para mi es que cada "iteracion" conlleva varios calculos, y 
llamadas a una base de datos, y es ideal mantener el numero de 
iteraciones a un minimo para mejorar el performance del programa..

El otro problema es que como se dan cuenta, la relacion entre "Caida de 
presion (Y) - Diametro de la tuberia (X)" no es lineal [1] (es inverso y 
en el eje de las Y tiende a infinito (fijense que la grafica es 
logaritmica en el eje de las Y))

Este comportamiento es debido a varios factores como la densidad del 
fluido, la viscosidad, el regimen del fluido (laminar, turbulento).. 
pero para un mismo sistema (en el caso de la grafica es un sistema de 3 
tuberias y 2 codos de 90 grados) como no varia la densidad, ni la 
viscosidad, la curva que se genera es debido a que el fluido pasa de 
estar en regimen laminar, y entra a regimen turbulento disparando hacia 
arriba las perdidas o caida de presion..


Si no se han aburrido (disculpen por lo largo) lo que me interesa es 
hacer que la busqueda binaria sea mas "inteligente" al asumir el valor 
del medio (con simplemente hacer "(Xmax+Xmin)/2" me genera mas 
iteraciones de las que deberia porque no es una linea recta..

Voy a probar usando "(2*Xmax*Xmin)/(Xmax+Xmin)" a ver que tal..

muchas gracias a todos y disculpen por lo largo de la respuesta..

[1] http://dl.dropbox.com/u/391810/imagen.PNG

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100821/cb59a2a0/attachment.html>


More information about the pyar mailing list