Matlab code loops
Geplaatst: za 24 mei 2008, 14:04
Kan iemand checken of ik ergens een fout hierin heb gemaakt?
Ik vond dit dus ook vreemd.Ik zie ook niet precies wat het nut is van 'k' (wordt immers nergens gebruikt).
Hier zat ik lang mee te klooien, ik weet niet wat ze bedoelen met "after testing for convergence". Als je v_new buiten de while-loop zet dan itereert hij toch niet?Ik denk echter wel dat de 'v=v_new' buiten de while-loop moet (anders is de while-loop zinloos).
Ik denk dat je eerdere algoritme niet goed is. Het is me niet helemaal duidelijk wat je probeert (numerieke wiskunde heb ik niet helemaal meer paraat ), maar het lijkt op een methode die stapgewijs een voldoende nauwkeurige oplossing probeert te bepalen voor een bepaald tijdstip. Het algoritme zal dan nieuwe benaderingen moeten genereren zolang deze nauwkeurigheid niet bereikt is. Het algoritme dat jij geimplementeerd hebt houdt echter na 1 poging op. Dit lijkt me onjuist. Daarom denk ik dan ook dat het overnemen van 'v' pas moet gebeuren als deze nauwkeurigheid bereikt is en dat deze overname dus buiten de while-lus moet gebeuren.Hier moet dan ergens de fout inzitten aangezien het vorige algoritme goed is, maar ik zie niet waar.
Code: Selecteer alles
v_new = eerste benadering
verschil = iets dat groter is dan epsilon.
while (verschil > epsilon),
v_old = v_new;
bereken nieuwe v_new;
verschil = norm(v_new-v_old);
end
v = v_new;
Als je de while-loop nog steeds zo hebt als je hierboven had dan kun je hem net zo goed weglaten... iets waardoor ik dus nog steeds denk dat je iets niet goed doet.De k is er om de while-loop te stoppen als deze niet convergeert in het aangepast algoritme hierboven.
Nee, want de bedoeling is dat v itereert naar een stabiele waarde afhankelijk van mijn w. Die v wordt dan de w op het tijdstip nu+1. Als je de while loop weglaat dan itereert v niet meer, toch?Als je de while-loop nog steeds zo hebt als je hierboven had dan kun je hem net zo goed weglaten... iets waardoor ik dus nog steeds denk dat je iets niet goed doet.
Ik zou zeggen 'zet eens een breakpoint en stap vanaf dat moment door je code'. Je zult zien dat je while-loop totaal zinloos is (iets dat volgens mij niet zo moeilijk is om in te zien. Bedenk de waarde van vnew-v maar eens als je vlak daarvoor v = vnew gedaan hebt...).Als je de while loop weglaat dan itereert v niet meer, toch?
Dat lijkt me beter. Je zou in de while-lus nog een teller mee kunnen laten lopen en een statement dat de while-lus onderbreekt als de teller boven een bepaald getal komt (om een oneindige lus te voorkomen).De nieuwe (werkende code):
Code: Selecteer alles
-tags?
Die stond er ook, maar die heb ik weggehaald speciaal voor deze postDat lijkt me beter. Je zou in de while-lus nog een teller mee kunnen laten lopen en een statement dat de while-lus onderbreekt als de teller boven een bepaald getal komt (om een oneindige lus te voorkomen).
Waarom post je eigenlijk je code als plaatje en niet gewoon als tekst tussenCode: Selecteer alles
-tags?[/quote] Wat? Tekst? Dan wordt de tekst toch een quote?
Wat? Tekst? Dan wordt de tekst toch een quote?
Code: Selecteer alles
I don't think so
Tim...
(let op het blijven bestaan van spaties.)