Ver Mensaje Individual
  #9 (permalink)  
Antiguo 22/11/2011, 07:10
Avatar de SetheR
SetheR
 
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Bucle que realiza iteraciones de operaciones

Un problema que veo es que asignas la variable contado ( $contador = 1; ) siempre dentro del bucle, entonces esa variable siempre va a valer 2 antes del if (desconozco si ese es tu propósito, pero visto que luego no la utilizas, no tiene mucho sentido).

Otra cosa es la inicialización del bucle. Inicialo con un "true" si vas a cortarlo manualmente dentro (cuidado con formar un bucle infinito).

Hay otra línea que tampoco entiendo, en este caso, la última ( $vd0 = $vd1; ).

Estás asignando a $vd0 un valor, para luego en la segunda línea del bucle, volver a asignar un valor distinto sin usar lo anterior.

Otro fallo que te veo es la inicialización de la variable $i0. Debido a que no la modificas dentro del bucle, inicalízala fuera para no definirla en cada iteración del bucle.

Ten en cuenta el ambito de las variables.
Tu código ordenado. hazle un debug con algún IDE (eclipse pdt por ejemplo)
Código PHP:
    $i0 = ($vg/$r); //Primera aproximación de la intensidad 
    
$contador 0;
    
$v0 0;
    while ( 
true ) { //El bucle se ejecuta constantemente hasta que lo rompas manualmente
    
        
$vd0 $ktentreq * (exponencial ($i0/$is) + 1); //Utilizamos la función que calcula e y lo elevamos según la segunda ecuación 
        
$i1 = ( ($vg-$vd0)/ $r ); 
        
$vd1 $ktentreq * (exponencial ($i1/$is) + 1); 
        
$errorpermitido abs($precision $vd1); //Definimos el error permitido como el valor absoluto de la resta del valor inicial y el final multiplicado por el margen de error establecido en el enunciado 
        
$contador++; 
        if ( 
abs($vd0 $vd1) <= $errorpermitido) {
            break; 
        }
        
        
$vd0 $vd1
    } 
PD: perdona si tengo errores, lo estoy haciendo desde éste editor y es algo complicado.

Última edición por SetheR; 22/11/2011 a las 11:38 Razón: Cambio nombre de variable