Wetenschappelijk programmeren

Deze cursus volgt op het vak Numerieke analyse. We behandelen verder een aantal numerieke basistechnieken, waaronder mogelijk:

  • veelterm- en spline-interpolatie
  • oplossen van een niet-lineaire vergelijking
  • stelsels lineaire vergelijkingen
  • het modelleren van ruizige data
  • functiebenaderingen
  • Fourier transformatie
  • optimizatie
  • numerieke integratie
  • random number generatie

Na een inleiding op elke probleemstelling, worden verschillende oplossingsmethoden behandeld. Verschillende wiskundige en numerieke aspecten komen aan bod, zoals foutencontrole, gevoeligheid en complexiteit. Vervolgens wordt bij elke techniek een illustratief voorbeeld uitgewerkt.

Praktische informatie

Studenten Bachelor in de informatica (deel 3)
Periode 1e semester 2019-2020
Contacturen Vrijdag 13:45-18:00 uur, lokaal M.G.006
controleer het tijdschema voor de juiste data
Docent prof. dr. Annie Cuyt
Assistent Ferre Knaepkens

Tijdschema

27 september Introductie (theorie)
Introductie (practicum)
Kennismaking Maple (practicum)
Het practicum zal plaatsvinden in computerlokaal M.G.025.
4 oktober Data fitting (theorie)
Kennismaking Matlab (practicum)
Het practicum zal plaatsvinden in computerlokaal M.G.025.
18 oktober Stelsels lineaire vergelijkingen (theorie)
afgeven practicum data fitting
25 oktober Data smoothing (theorie)
Data fitting (practicum)
4 november afgeven practicum stelsels lineaire vergelijkingen
8 november Stelsels lineaire vergelijkingen (practicum)
afgeven practicum data smoothing
15 november Orthogonale en periodieke basisfuncties (theorie)
Data smoothing (practicum)
22 november Random number generatie en simulatie (theorie)
29 november afgeven practicum orthogonale en periodieke basisfuncties
6 december Orthogonale en periodieke basisfuncties (practicum)
afgeven pacticum random number generatie en simulatie
13 december Random number generatie en simulatie (practicum)

Studiemateriaal

Hieronder vind je de (Engelstalige) cursusnota's van alle onderwerpen die tijdens de theorie aan bod zullen komen. Deze nota's zijn ook beschikbaar bij de cursusdienst. Daarnaast vind je hier enkele MATLAB scripts die gebruikt zijn tijdens de theorieles. Tenslotte geven we ook links naar aanvullend materiaal dat hetzelfde onderwerp behandelt.

Opmerking: Tijdens de theorielessen mogen geen laptops gebruikt worden. We raden je aan de cursus mee te brengen, zodat je tijdens de les aanvullend notities kan maken.

  1. Data fitting
    Scripts: lagrange.m, polyinterp.m
    Illustraties: interpol_6.pdf, naspline_6.pdf, nonspline3.pdf, lagrange_4.pdf
    Demo: fitting_demo.mw
  2. Stelsels lineaire vergelijkingen
    Scripts: examplemoler.m, verbosegepp.m
    Demo: syslineq_demo.mw
  3. Data smoothing
    Scripts: censusqr3.m, (qrsteps.m), qrexample.m, (verboseLSq.m, Rotate.m, UTriSol.m)
    Illustraties: normcases.pdf
    Demo: smoothing_demo.mw, smoothing.mlx, legendre.m

Hieronder vind je de documenten die gebruikt worden bij de kennismakingslessen:

Een overzicht van de basiskennis waarover je dient te beschikken bij aanvang van deze cursus is te vinden in dit calculus document.

Hier vind je de slides die gebruikt werden bij de introductieles:

Aanvullende nota's

De onderstaande nota's dienen slechts ter aanvulling van de cursusnota's en kunnen helpen bij het studeren.

  1. Data fitting
  2. Stelsels lineaire vergelijkingen
  3. Data smoothing

Practicum

Hieronder vind je de opgaven van alle onderwerpen die in het practicum aan bod komen.

  1. Data fitting [Doodle poll]
  2. Stelsels lineaire vergelijkingen [Doodle poll]
  3. Data smoothing [Doodle poll]

Wat houdt het practicum allemaal in?

Je moet uit elke opgave minstens één oefening kiezen die je wil uitwerken. Om voor een evenwichtige verdeling van de opgaven te zorgen, gebruiken we een Doodle poll (zie Blackboard); vul je naam in bij de door jouw gekozen oefening (let op, elke oefening kan slechts door een beperkt aantal studenten geselecteerd worden).

Vervolgens werk je deze oefening uit en geef je jouw oplossing af ten laatste aan het begin van de les op de datum zoals aangekondigd op het tijdschema.

Tijdens de practicumsessie die voor elk onderwerp is voorzien op het tijdschema zullen jullie antwoorden worden besproken en indien nodig verbeterd. Hiertoe kiest elke student één oefening uit één opgave die hij/zij wenst voor te dragen aan de groep. Ook hier mag je vrij kiezen, zolang iedereen maar aan bod komt. Geef dit aan in de Doodle poll met een opmerking. Een overzicht van de presentaties voor het practicum vind je op Blackboard.

Wat moeten we afgeven en onder welke vorm?

Een bespreking van het antwoord en de output geef je afgeprint (dat mag in twee kolommen en recto-verso) af. Je stuurt ook een elektronische versie samen met je code (via e-mail in bijlage met bestandsnaam NaamVoornaam.X.zip, met X het nummer van de opgave (niet de oefening)). Er moet duidelijk vermeld worden hoe het programma moet worden gecompileerd (gebruik indien mogelijk een makefile), welke de softwarevereisten zijn, en hoe je het programma dient te gebruiken.

Als je je hebt opgegeven voor de presentatie van een oefening, dan mail je je presentatie (slides, ...) ten laatste op woensdag (voor de presentatie op vrijdag) naar de assistent. Zo kunnen we eventueel nog bijsturen.

Welke software mogen we gebruiken?

Het is de bedoeling de opgavenreeksen zoveel als mogelijk op te lossen met behulp van bestaande softwarebibliotheken (GSL, Numerical Recipes, GAMS, Netlib, Intel MKL, SciPy). Bij elke opgave zullen we vermelden welke bibliotheek je mag gebruiken voor die opgave. Je vermeldt aan het begin van je antwoord welke code je hebt gebruikt (welke repository, class en package name, en met een verwijzing en/of url). Als je iets aan de code wijzigt, moet je ze meegeven in elektronische vorm.

Externe Matlab code wordt niet aanvaard. Maple mag je alleen gebruiken als je iets in exacte aritmetiek wil berekenen of om figuren te plotten. Ook Matlab mag gebruikt worden om figuren te plotten.

Als je twijfelt of je bepaalde code wel of niet mag gebruiken, vraag het dan.

Enkele opmerkingen

  • Het practicum is verplicht en individueel.
  • Wacht niet tot de laatste dag om eraan te beginnen.
  • Veel plezier!

Nuttige hyperlinks

Softwarebibliotheken:

Wiskundige rekenpakketten: