1. Feilretting
I oppgaveteksten st?r det i pseudokoden at man skal bruke ligning 5 for ? regne ut f?rste utslag (i tilfelle null hastighet i starten) og ligning 4 deretter for ? ta alle senere step. Ligningsnumrene skulle v?rt 7 og 5 hhv.
I ligning (3) er det sneket seg inn en t_i i stedet for t_j midt i teller.
Merk for?vrig at n?r vi f.eks. i oppgave 3.4 sier at ustlaget y(x_i,t_-1) skal v?re lik 98 % av utslaget y(x_i,t_0) i alle punkt, s? refererer "punkt" seg til posisjoner langs strengen (x-aksen), IKKE i tid. Tvert om, det er bare initialbetingelsene vi her diskuterer, slik at indeksen p? t er nettopp -1 og 0 som svarer til "utslaget for bitte litt siden" og "utslaget n?", gitt i starten alene!
2. Valg av parametre
Vi har ikke valgt stramming av streng, masse pr lengde, oppdeling i posisjon (delta_x) eller tid (delta_t). Du kan velge det meste av dette fritt. MEN strammer du strengen mye, eller gj?r strengen tynn, svarer det til at b?lgehastigheten blir stor. Det betyr at strengen vil svinge raskere, og det betyr at du m? velge finere tidssteg for ? f?lge med i hva som skjer. Ligningen som st?r under 3.1 er derfor meget viktig ? ta hensyn til, mens stramming og masse pr lengde n?rmest kan velges fritt.
3. Programmeringen
Det er ikke sv?rt vanskelig programmering i denne obligen, men det kan likevel l?nne seg ? f?lge samme prosedyre som for store programmeringsoppgaver: Stykk opp programmeringen i relativt sm? oppgaver og test dem ut hver for seg f?r du g?r videre med neste steg. I v?rt tilfelle kan oppstykkingen f.eks. gj?res slik:
- Start med ? f? inn parametrene, lage arrayer for posisjon (du trenger tre av dem), f? satt inn én initialbetingelse for utslag i en av de tre (f.eks. den gitt i oppgave 3.2) og plott resultatet og se at plottet er slik du forventer det skal v?re.
- Lag en enkel l?kke for animering ut fra eksempelprogrammet som er lagt ut. Du kan starte med initialbetingelsen fra forrige punkt og bare multiplisere utslagene med en sinusfunksjon etter som "tiden" (indeksene i l?kka) g?r for ? modellere en st?ende b?lge. Du kan da f? sjekket at animeringen g?r bra.
- Tiden er da moden for ? legge inn b?lgeligningen. For oppgave 3.1 og 3.2 (null hastighet ved start) m? du legge inn en liten l?kke for ? beregne utslaget like etter (= utslag like f?r) "n?"-utslaget i initialbetingelsen (dvs ut fra ligning 7). Dernest m? du ha en l?kke som skal f?lge hele bevegelsen i tiden som f?lger (if?lge ligning 5). Animeringsbiten er uforandret.
- Kj?r programmet og se at alt er ok f?r du legger om til andre initialbetingelser osv.
4. Forst?else av fenomenet
Det er flere l?ringsm?l med obligen. For det f?rste ?nsker vi at dere skal m?te anvendelige numeriske beregningsmetoder som dere kan ha bruk for i senere kurs og i en fremtidig jobb. For det andre (og minst like viktig!!!) er ?nsket om at dere skal f? en dypere forst?else av b?lger og hva som ligger bak en b?lgebevegelse enn dere ellers ville ha f?tt. Forst?else av uttrykkene ?verst side tre i oppgaveteksten er meget viktig. I tillegg er det sv?rt viktig ? fors?ke ? skj?nne hva vi gj?r n?r vi velger andre initialbetingelser enn den som er gitt gjennom ligning 7 ("hastigheten lik null i startpunktet"). For tilfellet som ligger bak ligning 7 avtar hastigheten oppover mot null i de siste tidsstegene f?r nullpunktet for tid (fra ? v?re p? vei oppover til null), mens hastigheten etterp? ?ker (nedover) i neste tidssteg. Reduksjon og ?kning av hastighet svarer n?yaktig til strammingen og masse pr lengde i stystemet. Det s?rger ligning 7 for helt av seg selv.
Figur 1: Figuren viser utslaget de siste tidsstegene f?r man n?r toppunktet i et slikt tilfelle som er gitt gjennom ligning 7. Indeksene p? y indikerer hvor mange tidssteg man er f?r nullpunktet. Vi ser at endring i utslag i l?pet av ett tidssteg avtar n?r vi n?rmer oss toppunktet. Det betyr selvf?lgelig at hastigheten avtar n?r vi n?rmer oss maksimalt utslag. Hvor mye hastigheten avtar er gitt av stramming og masse pr lengde. Tenk deg da at du ikke velger et utslag y_-1 som p? figuren, men et helt annet utslag. Initialbetingelser man i s? fall gir vil selvf?lgelig ikke svare til at strengen har sitt maksimale utslag i y_0 (ved tiden t=0).
Hva da dersom vi velger en annen gjennomsnittlig hastighet i siste intervallet f?r "n?" (t=0) i initialbetingelsen? Vil den gjennomsnittshastigheten man da implisitt velger, s?rge for at vi akkurat n?r toppen i slutten av intervallet vi gir initialbetingelsene i forhold til? Fors?k ? f?lge denne type argumentasjon slik at du kan forst? hvorfor resultatene blir slik de blir.
En ekstra utfordring f?lger n?r initialbetingelsen er spesifisert ved at det ogs? er en sidesveis forskyvning mellom "utslaget for bitte litt siden" og "utslaget n?". Hva kan man da forvente?
N?r du velger ? la "utslaget for bitte litt siden" v?re forskj?vet sideslengst i forhold til "utslaget n?" (alt relatert bare til initialbetingelsene!), vil du f? et litt komplisert tidsforl?p. Fors?k ? beskrive det du ser med ord. F? med deg hvordan hovedb?lgen beveger seg. Du f?r ogs? en ekstrab?lge som du neppe hadde forventet. Beskriv den ogs?, b?de bevegelse og st?rrelse relativt til hovedb?lgen. ?rsaken til ekstra-b?lge kan du spekulere p?. (Noen aspekter du kan tenke p? i den sammenheng: Vil en b?lge kunne forplante seg med samme b?lgeform langs en uendelig lang streng? Vil det samme skje dersom strengen er fastklemt i endene som i v?rt tilfelle? Hvor enkelt er det ? finne initialbetingelser som perfekt svarer til den l?sningen man er ettertrakter for et system?).
NB: Husk for?vrig ? endre skalering langs y-aksen i animeringer dersom b?lgen g?r ut over det intervallet du f?rst valgte!