Stopping my function from doing iteration (infinite while loop)
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
After achieving the desired result the loop continues, how can i stop this? if truefunction y = mysqrt(x,y0,tol) % this function calculates the square root of a number x as y given the % less appropriate guess y0. The function ceases to iterate when the the % difference between y0 and y is less than 1e-3.
 y = (y0 + (x/y0))/2;
 y = (y + (x/y))/2;
 while abs(y-y0)>tol
     y = (y + (x/y))/2
 end
Respuesta aceptada
  Azzi Abdelmalek
      
      
 el 21 de Dic. de 2012
        
      Editada: Azzi Abdelmalek
      
      
 el 21 de Dic. de 2012
  
      function y = mysqrt(x,y0,tol)
y = (y0 + (x/y0))/2;
y = (y + (x/y))/2;
while abs(y^2-x)>tol
   y = (y + (x/y))/2
end
5 comentarios
Más respuestas (1)
  John Petersen
      
 el 21 de Dic. de 2012
        
      Editada: John Petersen
      
 el 21 de Dic. de 2012
  
         function y = mysqrt(x,y0,tol)
y = (y0 + (x/y0))/2;
 while abs(y-y0)>tol
     y0 = y;     
     y = (y + (x/y))/2;
 end
Now I see Azzi's answer which is better because it tests against the desired result.
0 comentarios
Ver también
Categorías
				Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

