Ver Mensaje Individual
  #10 (permalink)  
Antiguo 23/11/2011, 16:35
erchavalin
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Bucle que realiza iteraciones de operaciones

Gracias a vuestros mensajes he conseguido realizar todo, mi especial agradecimiento a todos (que habéis sido recompensados con karma)
Los fallos detectados gracias a vuestros consejos son los siguiente:
1. El ámbito de las variables, se me olvidó añadir "global"
2. El sacar vd0 del bucle es correcto, pero también he de añadir que i0 es i1 tras finalizar el if


El código definitivo es el siguiente:
Código PHP:
function calculadora () {
global 
$vg;
global 
$is;
global 
$r;
global 
$precision;

    
$ktentreq 0.025;
    
$i0 = ($vg/$r); //Primera aproximación de la intensidad 
    
$contador 0;
    
$vd0 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;
        
$i0 $i1;
    }
        echo 
"<p>El n&uacute;mero de iteraciones necesarias ha sido de: $contador iteracione(s)</p>";
        echo 
"<p>La tensión del diodo es de: $vd1 voltio(s)</p>";
        echo 
"<p>La intensidad del diodo es de: $i1 amperio(s)</p>"
    } 
Este código ejecuta correctamente, queda comprobar que los resultados devueltos son correctos, que mañana os lo confirmaré (ya que aquí son casi las 12 de la noche).

Os agradezco vuestra ayuda y me quedaré por el foro ayudando a aquellos en lo que me sea posible. Un saludo