Using a while loop to determine and display the number of terms it takes for a given series to converge within 0.01% of its exact value ((pi^2)/6)?

1 visualización (últimos 30 días)
I'm trying to get a while loop to work to do the above and then display the error and number or iterations ran, but it doesn't seem to be working and I am getting an infinite loop. Any help? My current code is:
ER=100;
s=0;
nn=0;
while (ER >= 0.01)
nn_sum = (1/(nn^2));
s = s + nn_sum; %compute the running sum
ER =(abs(exp((pi^2)/6)-s)/exp((pi^2)/6))*100; %Calculate error
nn = nn + 1; %counter
end
disp(nn-1)
disp(ER)

Respuesta aceptada

the cyclist
the cyclist el 25 de Nov. de 2017
Editada: the cyclist el 25 de Nov. de 2017
Two observations:
  1. I think you want your initialization of nn to be 1, not 0. Otherwise your some is infinite immediately.
  2. You have an exponentiation in your calculation of ER.
If I fix those two things, I get convergence after about 6,000 iterations.
FYI, I found those by using debug mode.

Más respuestas (1)

Jose Marques
Jose Marques el 25 de Nov. de 2017
In the first iteration, seem that nn == 0 and nn_sum == (1/nn^2) which means a zero division. Maybe you can include a if statement to fix this:
ER=100;
s=0;
nn=0;
while (ER >= 0.01)
if (nn ~= 0)
nn_sum = (1/(nn^2));
else
% do something
end
s = s + nn_sum; %compute the running sum
ER =(abs(exp((pi^2)/6)-s)/exp((pi^2)/6))*100; %Calculate error
nn = nn + 1; %counter
end
disp(nn-1)
disp(ER)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by