while loop
Hej jag behöver hjälp med att skriva en wile loop.
Det är s att jag beräknar en variabel G genom att kalla till en funktionfil kallas zeta. Jag är enbart intresserad utav sista elementet av G. och while loopen körs tills man har fyra korrekta sifror. För varje iteration så dubbleras N som är en variabel som beror på G. Trunkeringsfelet dvs d = G1(end)-G2(end) hoppar över trunkeringsfelet mellan 50 och 100. Jag vet redan enligt facit att körningen körs tils N blir 400.
N=25;
Det enda som inte funkar på min while loop är att trunkerings felet inte körs för när N=50 och N=100 utan hoppar över det steget. Jag får värden föra alla G(sista elementet) när N dubbleras men jag behöver att trunkeringsfelet räknas för varje iteration men för andra iterationen så hoppas det över.
Skulle det vara mer kod där? Jag ser bara raden "N=25;".
Laguna skrev:Skulle det vara mer kod där? Jag ser bara raden "N=25;".
Nsteg=25; tolecance=4E-4;
while da>tolerance
[t g1] = zeta(Nsteg,h,); [t g2] = zeta(Msteg,y) % h is a constant
YA(end+1)=G1(end); % array förlängs samtidigt som sista elementet av G1 sparas. .
Nsteg=2*Nsteg;
[t G2] = zeta(Nsteg,h,);
YB(end+1)=G2(end);
da=(abs(G1(end)-G2(end)));
Nsteg=2*Nsteg YY(END+1)=g2(end);
Jag får rätt svar där jag har med alla iterationer tills man får rätt korrekta siffror men turnkeringsfelet dvs da hoppas över ett beräknings steg och det är vid andra iterationen där den ska beräkna skillnaden när Nsteg=50 OCH Nsteg=100.
Inlägg uppdaterat på användarens begäran. /Smutstvätt, moderator
Du har Nsteg=2*Nsteg två gånger, så Nsteg kommer att vara 100 när andra iterationen börjar.
Laguna skrev:Du har Nsteg=2*Nsteg två gånger, så Nsteg kommer att vara 100 när andra iterationen börjar.
Ja precis,om jag inte har en till dubblering på slutet så får jag dubbletter i min g vektor . Detta kan ses då i första iterationen så räknas g1(sista elementet) för n=25 och n=50 och da(trunkering felet/skillnaden) för n=25 och n=50. sedan i andra iterationen så räknas g1(sista elementet) för n=50 igen då Nsteg är 50 i början på andra iterationen. Om jag tar bort den andra dubblering av Nsteg så får jag faktiskt rätt men loopen räknas inte da för när n=50 och n=100 dvs andra iterationen.
Ska försöka formulera mig bättre:
Om jag inte N=2*N två gånger så räknas G1 för när N =50 två gånger. Detta ses i andra iterationen. Om jag har två N=2*N så får räknas inte d= g(N=50) -g(N=100= ut. Det steget hoppas över