Azzera filtri
Azzera filtri

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)?

3 visualizzazioni (ultimi 30 giorni)
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)

Risposta accettata

the cyclist
the cyclist il 25 Nov 2017
Modificato: the cyclist il 25 Nov 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.

Più risposte (1)

Jose Marques
Jose Marques il 25 Nov 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)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by