Ver Mensaje Individual
  #11 (permalink)  
Antiguo 02/03/2007, 19:37
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 3 meses
Puntos: 45
Re: Calculo de minimos

Bueno, espero que no hayas perdido el hilo panyy80, he hecho un script básico para sacar los mínimos locales (que creo que es lo que necesitas) de un conjunto de puntos encerrados en una matriz.

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<
HTML>
<
HEAD>
<
TITLEM&#237;nimos locales </TITLE>
</HEAD>

<
BODY>


<
script language="javascript">

function 
pto(x,y) {
    
this.x=xthis.y=y;
}

var 
ptos=new Array();
ptos[0]=new pto(0,100);
ptos[1]=new pto(11,50);            // 0 y 1 -> pendiente negativa
ptos[2]=new pto(20,20);            // 1 y 2 -> pendiente negativa    -->    MINIMO
ptos[3]=new pto(35,30);            // 2 y 3 -> pendiente    Positiva
ptos[4]=new pto(41,200);        // 3 y 4 -> pendiente    Positiva
ptos[5]=new pto(50,100);        // 4 y 5 -> pendiente negativa    --> MINIMO
ptos[6]=new pto(54,150);        // 5 y 6 -> pendiente    Positiva
ptos[7]=new pto(62,100);        // 6 y 7 -> pendiente negativa
ptos[8]=new pto(70,10);            // 7 y 8 -> pendiente negativa    --> MINIMO
ptos[9]=new pto(72,12);            // 8 y 9 -> pendiente    Positiva


function minimos_locales(matriz) {
    var 
minimos=new Array();            //la matriz que contendrá los índices de los puntos que son mínimos locales en matriz
    //calcula la pendiente entre dos ptos (índices de matriz) siendo i1.x<i2.x y devuelve true si es positiva (creciente) y false si es negativa (decreciente) o cero (horizontal)
    
function pendiente_pos(matriz,i1,i2) {        
        var 
incr_x matriz[i2].matriz[i1].x;
        if( 
incr_x == ) return false;
        var 
incr_y matriz[i2].matriz[i1].y;
        return 
incr_y/incr_x 0;
    }
    for(var 
i=0pend_anterior=undefinedi<ptos.length-1i++) {    //comparamos (i) con (i+1)
        
var pend_nueva pendiente_pos(matrizii+1);
        if( 
pend_anterior!=undefined )    //si teniamos almacenada una pendiente anterior
            
if( (pend_anterior==false) && (pend_nueva==true) )        //pendientes pasan de negativas a positivas --> MINIMO
                
minimos[minimos.length]=i;
        
pend_anterior=pend_nueva;
    }
    return 
minimos;
}

for( 
i in ptos 
    
document.write"pto["+i+"] = ("+ptos[i].x+", "+ptos[i].y+") <br/>");
document.write"Mínimos locales: "minimos_locales(ptos).join(", ") );


</script>

</BODY>
</HTML> 
Espero que te sirva y veas ahí la idea.


Hacer después la distancia entre mínimos no debería ser complicado.


Un saludo y espero tu respuesta.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.