3 svar
129 visningar
Cien behöver inte mer hjälp
Cien 1188
Postad: 15 dec 2021 16:29 Redigerad: 15 dec 2021 16:56

Approximera pi/4

Hej, har lite problem med a uppgiften, har skrivit följande kod och håller på och debuggar, efter första iterationen så är mitt värde på d=0.2146 vilket följer att villkoret i whilesatsen är falskt sant men ändå så stoppas loopen, vad är det som händer?

d=0;
tol=1e-5;
s=0;
n=0;
while d<tol 
           s=s+((-1)^n)/(2*n+1);
           d=abs(s-pi/4);
           n=n+1;
end

disp(d)
Laguna Online 30493
Postad: 15 dec 2021 16:34

d är jättestort efter första varvet, så d<tol är falskt.

Rätt villkor är d>tol, men du får ordna så man kommer in i loopen första gången.

Cien 1188
Postad: 15 dec 2021 16:44
Laguna skrev:

d är jättestort efter första varvet, så d<tol är falskt.

Rätt villkor är d>tol, men du får ordna så man kommer in i loopen första gången.

Använder jag debugg fel?

Cien 1188
Postad: 15 dec 2021 16:59 Redigerad: 15 dec 2021 17:09
Laguna skrev:

d är jättestort efter första varvet, så d<tol är falskt.

Rätt villkor är d>tol, men du får ordna så man kommer in i loopen första gången.

Jag ändrar d=1 så kommer vi in i loopen

 

Edit: Nya koden

d=1;
tol=1e-5;
s=0;
n=0;
while d>tol 
           s=s+((-1)^n)/(2*n+1);
           d=abs(s-pi/4);
           n=n+1;
end

disp(d)
disp(n)

Edit: Vi är klara här :D tack för hjälpen!

Svara
Close