problem executing while loop
Mostrar comentarios más antiguos
im writing a script to solve the square root of a number using halley's method
my equations: y=(1/a)*x^2
n = (x/8)*(15-(y)*(10-3*(y)))
then n becomes the new x and the equation repeats
my problem is its not looping it runs through once and then stops
clc
clear
a = input('number ');
x = input('guess ');
tol = 0.0000001;
while (abs(n-x)<=tol)
y=(1/a)*x^2;
n = ((x/8)*(15-(y)*(10-3*(y))));
x=n;
end
disp(n)
i want the loop to stop when the number is accurate to 6 decimal places. what am i doing wrong
very new to ML
1 comentario
GreGG
el 9 de Oct. de 2012
Respuesta aceptada
Más respuestas (2)
Sachin Ganjare
el 9 de Oct. de 2012
0 votos
n should be initialized with proper value, probabaly zero.
Hope it helps
Amateuromania
el 9 de Oct. de 2012
Editada: Walter Roberson
el 9 de Oct. de 2012
You haven't declared n. First calculate n then check the condition much like the do while loop.
You can use something like this:
clc;
clear;
a = input('number ');
x = input('guess ');
tol = 0.0000001;
y=(1/a)*x^2;
n = ((x/8)*(15-(y)*(10-3*(y))));
x=n;
while (abs(n-x)<=tol)
y=(1/a)*x^2;
n = ((x/8)*(15-(y)*(10-3*(y))));
x=n;
end;
disp(n)
Categorías
Más información sobre Common Operations en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!