Matlab code loops
-
- Berichten: 4.246
Matlab code loops
Kan iemand checken of ik ergens een fout hierin heb gemaakt?
Quitters never win and winners never quit.
-
- Berichten: 7.068
Re: Matlab code loops
Ik zie ook niet precies wat het nut is van 'k' (wordt immers nergens gebruikt).Ik denk echter wel dat de 'v=v_new' buiten de while-loop moet (anders is de while-loop zinloos).
-
- Berichten: 4.246
Re: Matlab code loops
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).
Quitters never win and winners never quit.
-
- Berichten: 4.246
Re: Matlab code loops
Ik heb het uitgeprobeerd en erover nagedacht die v_new moet in die while-loop anders itereert hij het niet.
Dit algoritme is voor een getransformeerde warmtevergelijking en in mijn algoritme gaat er iets mis. De w is een benadering voor y.
Ik wil een plot van V tegen S maken en ik schreef daarvoor deze code waarbij ik terugrekende naar V. Alleen de laatste vergelijking in het kader doet ertoe.
Hier moet dan ergens de fout inzitten aangezien het vorige algoritme goed is, maar ik zie niet waar.
Dit algoritme is voor een getransformeerde warmtevergelijking en in mijn algoritme gaat er iets mis. De w is een benadering voor y.
Ik wil een plot van V tegen S maken en ik schreef daarvoor deze code waarbij ik terugrekende naar V. Alleen de laatste vergelijking in het kader doet ertoe.
Hier moet dan ergens de fout inzitten aangezien het vorige algoritme goed is, maar ik zie niet waar.
Quitters never win and winners never quit.
-
- Berichten: 7.068
Re: Matlab code loops
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.
P.S. onder de douche kreeg ik het volgende idee: volgens mij moet je code een nieuwe benadering berekenen en deze dan vergelijken met de vorige benadering. Als het verschil kleiner is dan een gegeven grens ga je door. Op het moment dat het verschil te groot is dan doe je nog een stap (dus de nieuwe benadering wordt dan de oude benadering en je berekent dan een nieuwe 'nieuwe benadering'). In pseudo-code:
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;
-
- Berichten: 4.246
Re: Matlab code loops
OK, ik ben eergisteren naar mijn docent langsgegaan en de v_new hoort er wel in. Ik heb het gelukkig nu aan de praat gekregen, maar dat ging zeker niet zonder slag of stoot.
@Evilbro: de SOR loop is er om een matrixongelijkheid op te lossen:
De k is er om de while-loop te stoppen als deze niet convergeert in het aangepast algoritme hierboven.
@Evilbro: de SOR loop is er om een matrixongelijkheid op te lossen:
De k is er om de while-loop te stoppen als deze niet convergeert in het aangepast algoritme hierboven.
Quitters never win and winners never quit.
-
- Berichten: 7.068
Re: Matlab code loops
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.
-
- Berichten: 4.246
Re: Matlab code loops
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.
Quitters never win and winners never quit.
-
- Berichten: 7.068
Re: Matlab code loops
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?
-
- Berichten: 4.246
-
- Berichten: 7.068
Re: Matlab code loops
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):
Waarom post je eigenlijk je code als plaatje en niet gewoon als tekst tussen
Code: Selecteer alles
-tags?
-
- Berichten: 4.246
Re: Matlab code loops
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?
Quitters never win and winners never quit.
-
- Berichten: 7.068
Re: Matlab code loops
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.)