Numerisk fysik 2015 - TØ opgaver

Anders A. Søndergaard
1525-220
aspegren@phys.au.dk


Hints til afleveringsopgaver

Hvis man vil have kameraet til at følge Steve: Husk at en plan er fuldstændigt specificeret ved et punkt og en normalvektor. Plot kun ting der er på den ene side af planen.
  1. Aflevering 4b: Lad være med at starte før du har lavet TØ opgave 4.4.
    Opgave c-d): Overvej forskellen mellem hist() og histc().
    Opgave e): Tag et kig på side 117.
  2. Aflevering 5b: TØ opgave 5.6. I en ODE dy/dt = f(t,y), hvis man får brug for at f(t,y,...) afhænger af flere variable ... kan man give den til ode45 med ode45(@(t,y) f(t,y,...), [t0, t], y(t0))

Yderligere tip (ikke til afleveringer): Matlab kan bruges til at lave film:

Note om numerisk løsning af differentialligninger

En førsteordens ODE skrives som dy/dt = f(t,y(t)), hvor t er den uafhængige variabel, y er funktionsværdien og f er funktionens afledte. At Eulermetoden er af første orden betyder, at hvis løsningen er et førstegradspolynomium, så løser metoden ligningen eksakt. Boksen på side 81-82 viser en andenordens metode. Hvis løsningen er et polynomium af 2. (eller lavere) orden er denne metode eksakt. Ordenenen p af en løsningsmetode er graden af det polynomium som metoden løser eksakt. Man approximerer altså lokalt sin funktion som dens Taylorrække til p'te orden, og løser det problem eksakt for et lille nok tidsskridt. Fejlen i hvert tidsskridt dt går så højest som dt^(p+1). ode45() løser problemet med både en 4. og en 5. ordens metode. Forskellen mellem de to løsninger er et mål for fejlen. Hvis fejlen i et tidsskridt er for stor bruger ode45() selv et mindre tidsskridt. På den måde får man lange tidsskridt hvor ligningen er nem at løse, og korte tidsskridt hvor den er mere besværlig. Dette minimerer den tid det tager at finde løsningen indenfor en given fejl tolerance. For flere detaljer, se evt. Dmitris noter til kurset numeriske metoder.

Hvordan virker fzero, fminsearch og quad?

Computerens endelige præcision

Computeren regner ikke med reelle tal, men kun en approximation. Den kan nemlig ikke opbevare eller regne med uendeligt mange ciffre. I praksis regner computeren kun med omkring 16 ciffre (se også side 117). Det har den konsekvens at den associative lov (a+b)+c = a+(b+c) ikke holder på en computer. Prøv f.eks med a = 1, b = -1, c = 1e-20. Computeren laver altså afrundingsfejl, specielt når man lægger store og små tal sammen, eller trækker tal fra hinanden som ligger tæt. I store simuleringer hvor man lægger en masse tal sammen kan disse fejl hobe sig op og give problemer hvis ikke man passer på.

Sjov og spas

vektorrally.m