-=[ Oefeningen Numerieke Wiskunde ]=-





  1. Groepen

Ik geef oefenzittingen voor de volgende groepen van 2de kan burgerlijk ingenieur
  • groep B2
  • groep B3

  2. Links

Volgende links zijn interessant:

  3. Zitting 1

  • IEEE 754 floating-point voorstelling:

    Een Matlab script dumpfp.m dat je de machine representatie van een double toont op een machine met intel-architectuur.

    >> dumpfp(0); dumpfp(1); dumpfp(-1); dumpfp(eps); dumpfp(1+eps); dumpfp(-Inf); dumpfp(pi);
    0                      +0.0000000000000000000000000000000000000000000000000000 2^00000000000 (denorm)
    1                      +1.0000000000000000000000000000000000000000000000000000 2^01111111111 (2^0)
    -1                     -1.0000000000000000000000000000000000000000000000000000 2^01111111111 (2^0)
    2.2204460492503131e-16 +1.0000000000000000000000000000000000000000000000000000 2^01111001011 (2^-52)
    1.0000000000000002     +1.0000000000000000000000000000000000000000000000000001 2^01111111111 (2^0)
    -Inf                   -x.0000000000000000000000000000000000000000000000000000 2^11111111111 (Inf/NaN)
    3.1415926535897931     +1.1001001000011111101101010100010001000010110100011000 2^10000000000 (2^1)

    Een C programma dumpfp.c dat nethetzelfde doet, maar de kennis van de bit-layout uit een header file haalt en daardoor wel zal werken op andere architecturen.

    Het C programma fp.c laat dezelfde floating point 'rariteiten' zien als die uit de Java Core tips van hierboven.

    $ ./fp
    
    Representation error:
    d1                  =              0.1 =     0.10000000000000001 =      0x1.999999999999ap-4
    d2                  =              0.3 =     0.29999999999999999 =      0x1.3333333333333p-2
    d = d1 + d1 + d1    =              0.3 =     0.30000000000000004 =      0x1.3333333333334p-2
    d - d2              =      5.55112e-17 =  5.5511151231257827e-17 =                    0x1p-54
    
    Precission:
    d1                  =            12345 =                   12345 =     0x1.81c8000000000p+13
    d2                  =            1e-16 =  9.9999999999999998e-17 =     0x1.cd2b297d889bcp-54
    d1 + d2             =            12345 =                   12345 =     0x1.81c8000000000p+13
    
    Overflow:
    d1                  =         1.6e+308 =                1.6e+308 =   0x1.c7b1f3cac7433p+1023
    d2 = (d1*2.0) / 2.0 =              inf =                     inf =                       inf

  4. Zitting 4

Tips en truuks bij oefening 1:

  • Lees de gegevens in door het data script uit te voeren:
    >> data                     % defineert een vector decades en een vector telling
  • De decades vector bevat de getallen 0 t.e.m. 10, deze komen uiteraard overeen met de jaren 1900 t.e.m. 2000!
  • Voor deze oefening moet je heel wat plotjes maken van verschillende interpolaties. Om deze gemakkelijk te kunnen vergelijken is het handig als je deze plotjes op dezelfde grafiek hebt staan en voor elke plot een ander kleurt en/of lijntype gebruikt.
    kleuren betekenis lijntypes betekenis
    'r' red '-' volle lijn (continue)
    'm' magenta ':' stippe lijn (continue)
    'b' blue '--' streepjes lijn (continue)
    'k' black '*' sterretjes (discreet)
    'y' yellow 'o' bolletjes (discreet)
    'g' green 'd' diamands (discreet)
    'c' cyan '.' puntjes (discreet)
    Je kan een kleur en een lijntype combineren, bijvoorbeeld een blauwe streepjes lijn is 'b--'.
    De eerste plot is deze van de gegevens, dit doe je bijvoorbeeld met
    >> plot(decades, telling, 'bo')     % teken discrete data met blauwe bolletjes
    >> hold on                          % voeg volgende plots toe aan deze grafiek
    Het commando hold on zorgt ervoor dat een volgend plot commando de huidige grafiek niet verwijderd. Wanneer je een interpolerende veelterm wil plotten, dan doe je dit best door veel meer punten dan de 11 data punten, de veelterm defineert immers een continue kromme. Je plot deze best door
    >> t = [-2:.1:12];      % een reeks die begint in -2 en gaat tot 12 in stapjes van .1
    Dit zijn de jaren 1880 t.e.m. 2020 in stapjes van 1 jaar.
  • Lees de documentatie van het commando polyfit en polyval eens (met help polyfit en help polyval).
  • Indien je een veelterm van graad 2 (die gaat netjes door 3 punten!) wil berekenen door de jaren 1900, 1950 en 2000 dan heb je de overeenkomstige elementen nodig van de vectoren decades en telling. Dit zijn de elementen op posities 1, 6 en 11 en je gebruikt het commando polyfit dan als volgt:
    >> p = polyfit(decades([1 6 11]), telling([1 6 11]), 2);   % in p de coefficienten
    >> plot(t, polyval(p, t), 'm-')                            % zet bij op grafiek
  • Indien je iets verkeerds geplot hebt op je grafiek dan kan je de grafiek bewerken en dit terug verwijderen (je kan zo ook kleuren en lijntypes veranderen). Dit doe je door het zwarte pijltje aan te klikken en dan het object op de grafiek dat je wilt verwijderen of wijzigen.

  5. Zitting 5

  • De slide met de grafische interpretie van de formule van Neville en Aitken. De gegevens zijn de magenta punten (x0, f0, x1, f1, x2, f2) en we willen de waarde in het punt met x = s. De punten die we berekenen zijn rood gekleurd, en de waarden van de 1-ste orde zijn reeds berekend. We willen nu y012(s) berekenen adhv y01(s) en y12(s) bij Neville (of y01(s) en y02(s) bij Aitken). En dat doen we door een lineaire interpolatie op de groene rechte!

  6. Zitting 6

  • Het aanzetten van ticks en lijnen op de X-as met stapjes van pi/2:
    >> set(gca, 'XTick', [0:pi/2:8*pi])
    >> set(gca, 'XGrid', 'on')
  • Visualisatie van de slinger in Matlab voor vaste stapgroottes: visslinger.m.
    >> [trk4, yrk4] = rk4('slinger', [0 20], 0.02, [pi/2 5.12]);
    >> visslinger(0.02, yrk4(:,1))
    Hiervoor heb je wel een recente versie van Matlab nodig (R13).
  • Om de vissualisatie voortijdig te stoppen kan je volgend command gebruiken
    >> delete(timerfind('Tag', 'Slinger'));
  • De plots voor vvweuler, heun en rk4 kan je hier nog eens bekijken: hoek en hoeksnelheid ifv de tijd en hoeksnelheid ifv hoek.
  • stabiliteit.mws met rechts en links
  • Orde bepalen op log-log plot van fout i.f.v. stapgrootte met cvg.m

  7. Zitting 7

  • Een voorbeeld Maple sheet voor de eerste oefening: voorbeeld.mws.


  © 2005, Dirk Nuyens

   Generated on 2005-11-04T15:31:21+01:00