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 2020-2021
Contacturen
Woensdag 13:45-18:00 uur, lokaal M.G.010
controleer het tijdschema voor de juiste data
Docent
prof. dr. Annie Cuyt
Assistent
Ferre Knaepkens

Tijdschema

23 september
Introductieles
30 september
Computer aritmetiek (theorie)
7 oktober
Computer aritmetiek (practicum)
14 oktober
Interpolatie (theorie)
Afgeven practicum computer aritmetiek
21 oktober
LU-decompositie (theorie)
Interpolatie (practicum)
Computer aritmetiek (presentatie)
28 oktober
LU-decompositie (practicum)
Afgeven practicum interpolatie
4 november
Afgeven practicum LU-decompositie
11 november
Kleinste-kwadraten (theorie)
18 november
Kwadratuur en random numbers (theorie)
Kleinste-kwadraten (practicum)
Interpolatie (presentatie)
25 november
Kwadratuur en random numbers (practicum)
LU-decompositie (presentatie)
Afgeven practicum kleinste-kwadraten
2 december
Kleinste-kwadraten (presentatie)
Afgeven practicum kwadratuur en random numbers
9 december
Kwadratuur en random numbers (presentatie)

Studiemateriaal

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

Hieronder vind je de (Engelstalige) cursusnota's van alle onderwerpen die tijdens de theorie aan bod zullen komen. Tenslotte geven we ook links naar aanvullend materiaal dat hetzelfde onderwerp behandelt.

  1. Computer aritmetiek
    De secties 1.3, 1.4 en 1.5 bespreken respectievelijk het maken van grafieken, het gebruik van matrices en het omgaan met strings in Matlab. Deze secties maken geen deel uit van de cursus en zijn louter informatief.
    Demo: Floats_demo.pdf
  2. Interpolatie
    De secties 3.4, 3.6 en 3.7 behandelen een variant op het thema van de secties 3.3 en 3.5. Deze variant is bedoeld als extra leesmateriaal en behoort niet tot het te studeren cursusmateriaal. Demo: Interpolatie_demo.pdf
  3. LU-decompositie
    De secties 2.10 en 2.11 behoren niet tot het cursusmateriaal. Daarin worden toepassingen van de LU-decompositie besproken, bij het oplossen van gestructureerde stelsels of het berekenen van de pagerank van een search engine.
    Demo: LU_demo.pdf
  4. Kleinste-kwadraten
    De Secties 5.6-8 behandelen aan kleinste-kwadratenproblemen verwante gevorderde onderwerpen en horen bijgevolg niet bij de cursus. Het is altijd interessant om eens naar de behandelde probleemsteling te kijken.
    Demo: KleinsteKwadraten_demo.pdf
  5. Kwadratuur en random numbers
    De veralgemeningen gepresenteerd in de secties 6.6 (integratie op basis van discrete data), 9.3 en 9.4 (normaal verdeling) behoren niet tot de cursusinhoud. In de plaats wordt in de demoles RNG aangewend voor de berekening van hoger-dimensionale integralen.
    Demo: KwadratuurRandom_demo.pdf

Voor een introductie tot MATLAB verwijzen we je door naar MATLAB Onramp. Via dit platform leer je al spelenderwijs de basis van Matlab kennen aan de hand van korte oefeningen en kleine projectjes. Voor extra informatie kan je terecht onder aanvullende nota's of de website van MathWorks zelf.

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

Aanvullende nota's​

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

Matlab

Practicum

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

  1. Computer aritmetiek [Doodle poll]
  2. Interpolatie [Doodle poll: zie Blackboard] Voor het berekenen van de splines is het aangeraden om de Curve Fitting Toolbox te gebruiken (die moet je waarschijnlijk eerst nog installeren). In deze toolbox vind je de functie 'csape' die je kan gebruiken voor de kubische spline met verschillende opties voor de randvoorwaarden.
  3. LU-decompositie [Doodle poll: zie Blackboard]
  4. Kleinste-kwadraten [Doodle poll: zie Blackboard]
  5. Kwadratuur en random numbers [Doodle poll: zie Blackboard]

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)).

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

Welke software mogen we gebruiken?

Het is de bedoeling de opgavenreeksen gemaakt worden in Matlab. 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

Wiskundige rekenpakketten: