Numerieke wiskunde
Van Wikipedia
Numerieke wiskunde is een deelgebied van de wiskunde waarin algoritmes voor problemen in de continue wiskunde bestudeerd worden (in tegenstelling tot discrete wiskunde). Dit betekent dat het vooral gaat over reële of complexe variabelen, de oplossing van differentiaalvergelijkingen en andere vergelijkbare problemen die optreden in de natuurkunde en techniek.
Inhoud |
[bewerk] Algemeen
Sommige problemen in de continue wiskunde kunnen exact opgelost worden met behulp van een algoritme. Zulke algoritmen worden directe methoden genoemd. Een voorbeeld van een directe methode is Gauss-eliminatie voor het oplossen van een systeem lineaire vergelijkingen en de simplexmethode voor het oplossen van lineaire programmerings-problemen.
Toch zijn voor de meeste problemen geen directe methoden beschikbaar. Eén mogelijkheid is om het continue probleem te vervangen door een discrete variant. Dit proces wordt discretisatie genoemd. Een andere mogelijkheid is het gebruik van een iteratieve methode. Bij deze methode wordt uitgegaan van een schatting en vervolgens vindt men benaderingen die hopelijk naar de oplossing convergeren. Zelfs als discrete methoden voorhanden zijn, wordt vaak gekozen voor iteratieve methoden, omdat deze efficiënter zijn.
[bewerk] Ontstaan en propageren van fouten
De studie van fouten vormt een belangrijk deel van de numerieke wiskunde. Fouten ontstaan in iteratieve methoden omdat de benaderde oplossingen afwijken van de exacte oplossing. Discretisatie brengt ook fouten met zich mee, omdat de oplossing van een gediscretiseerd probleem in het algemeen niet overeenkomt met de oplossing van het continue probleem. Zelfs als een directe methode wordt gebruikt kunnen fouten optreden, namelijk afrondingsfouten.
Als er eenmaal een fout in het algoritme is opgetreden, propageert deze. Dit leidt tot het begrip numerieke stabiliteit: een algoritme is numeriek stabiel als een fout (ontstaan in het algoritme) niet te hard groeit gedurende de berekening. Dit is alleen mogelijk als het probleem bepaalde eigenschappen bezit. Dit staat bekend als de conditionering van het probleem. Een goed geconditioneerd probleem heeft de eigenschap dat de gegenereerde oplossing niet veel verandert als de inputdata niet veel verandert. Dit in tegenstelling tot een slecht geconditioneerd probleem, waarin de oplossing snel verandert bij een kleine wijziging in de inputdata.
Toch wil dit niet zeggen dat elk algoritme dat wordt toegepast op een goed geconditioneerd probleem numeriek stabiel is. De kunst van de numerieke wiskunde is het vinden van een stabiel algoritme voor het oplossen van goed geconditioneerde wiskundige problemen.
[bewerk] Toepassingen
De algoritmes in de numerieke wiskunde worden toegepast bij veel problemen in de wetenschap en techniek. Voorbeelden zijn het ontwerp van bouwwerken als bruggen en vliegtuigen, weersvoorspellingen, klimaatmodellen, de analyse van moleculen en het vinden van oliereservoirs. Bijna alle supercomputers voeren constant numerieke algoritmes uit.
Efficiëntie van de berekeningen speelt dan ook een zeer belangrijke rol in de numerieke wiskunde. Vaak speelt de theoretische onderbouwing van de modellen een ondergeschikte rol bij de keuze voor een bepaald model. In de numerieke wiskunde worden empirische resultaten van modellen gebruikt om nieuwe modellen te vinden en problemen te analyseren. Daarnaast wordt uiteraard ook gebruikgemaakt van wiskundige axioma's, stellingen en bewijzen.
[bewerk] Onderzoeksgebieden
De numerieke wiskunde is verdeeld in een aantal disciplines.
[bewerk] Berekenen van functiewaarden
Een van de meest eenvoudige problemen is de evaluatie van de functie in een gegeven punt. Echter, zelfs het evalueren van een polynoom is niet triviaal: het Horner schema is vaak efficiënter dan de meest voor de hand liggende methode. In het algemeen is het belangrijk om afrondingsfouten te schatten en onder controle te houden.
[bewerk] Interpolatie, extrapolatie en regressie
Interpolatie lost het volgende probleem op: gegeven de waarde van een of andere onbekende functie in een aantal punten, welke waarde heeft die functie in een ander punt tussen de gegeven punten? De meest eenvoudige methode is het gebruik van lineaire interpolatie, waarin wordt aangenomen dat de onbekende functie lineair is tussen elk paar opeenvolgende punten. Dit kan gegeneraliseerd worden tot interpolatie met polynomen (veeltermen), hetgeen soms betrouwbaardere resultaten geeft. Zo heeft men bijvoorbeeld de interpolerende veeltermen van Lagrange, de voor- en achterwaarts interpolerende veeltermen van Newton en Gauss en de interpolatiemethode van Neville.
Extrapolatie lijkt erg op interpolatie, behalve dat we nu de waarde van de onbekende functie willen weten in een punt buiten de gegeven punten.
Regressie is ook soortgelijk, maar hierbij wordt er vanuit gegaan de de gegeven data niet exact is. Gegeven een aantal punten en een meting van een functie in deze punten (met een fout) willen we de onbekende functie bepalen. De kleinste-kwadratenmethode is een populaire methode om dit te bereiken.
[bewerk] Oplossing van vergelijkingen
Een ander fundamenteel probleem is het berekenen van een oplossing van een gegeven vergelijking. Vaak wordt hierbij onderscheidt gemaakt tussen twee gevallen, afhankelijk van of de vergelijking lineair is of niet.
Er is veel onderzoek gedaan naar de ontwikkeling van methoden om systemen van lineaire vergelijkingen op te lossen. Bekende methoden zijn Gauss-eliminatie en LU-factorisatie. Er zijn ook speciale methoden voor zeer grote systemen.
Voor nonlineaire vergelijkingen zijn andere algoritmen beschikbaar. Als de functie differentieerbaar is en de afgeleide is bekend, dan wordt de Newtonmethode veel toegepast. Linearisatie is een andere techniek voor het oplossing van niet-lineaire vergelijkingen.
[bewerk] Optimalisatie
In optimalisatieproblemen wordt gezocht naar een punt waarin een gegeven functie zijn maximum of minimum aanneemt. Vaak moet dit punt ook aan zekere voorwaarden volden.
Het gebied van optimalisatie wordt verder onderverdeeld in diverse deelgebieden, afhankelijk van de vorm van de doelstellingsfunctie en de voorwaarden. Zo gaat lineair programmeren over het geval dat zowel de doelstellingsfunctie als de voorwaarden lineair zijn. Een beroemde methode voor het oplossen van dergelijke problemen is de simplexmethode.
[bewerk] Evaluatie van integralen
Numerieke integratie vraagt om de waarde van een bepaalde integraal. Er zijn diverse numerieke methoden die gebruikt kunnen worden, al naar gelang de aard van de integraal. Voorbeelden zijn de Newton-Cotes formules, zoals de trapeziumregel en de Simpson-methode.
[bewerk] Differentiaalvergelijkingen
In de numerieke wiskunde houdt men zich ook bezig met het benaderen van de oplossing van differentiaalvergelijkingen, zowel gewone differentiaalvergelijkingen als partiële differentiaalvergelijkingen.
Partiële differentiaalvergelijkingen worden vaak opgelost door de vergelijking eerst te discretiseren. Dit kan gedaan worden middels de eindige-elementenmethode, de eindige-differentiemethode of (met name in de techniek) de eindige-volumemethode. De theoretische onderbouwing van deze methoden steunt op stellingen uit de functionaalanalyse.
Na discretisatie komt het oplossen van de differentiaalvergelijking neer op het oplossen van een stelsel van algebraïsche vergelijkingen. Echter, het oplossen van deze vergelijkingen kan in veel gevallen niet worden gedaan met behulp van Gauss-eliminatie. Indien het stelsel vergelijkingen uit te veel onbekenden bestaat zal men een iteratieve oplossingsmethode moeten gebruiken. Veel gebruikte methoden zijn Multigrid, BIM, CG en verwante methodieken die zijn gebaseerd op een Krylov deelruimte.
[bewerk] Geschiedenis
De numerieke wiskunde heeft zijn oorsprong ver voordat de eerste computers werden uitgevonden. Veel beroemde wiskundigen uit het verleden hielden zich met numerieke wiskunde bezig. Veel belangrijke algoritmen zijn naar hen vernoemd, zoals de Newtonmethode, Gauss-eliminatie en Euler's methode.
Om de berekeningen met de hand uit te kunnen voeren, werden grote boeken geproduceerd met formules en tabellen met data zoals interpolatiepunten en functiecoëfficiënten. Door gebruik te maken van deze tabellen (vaak berekend tot 16 decimalen nauwkeurig) kon men waarden opzoeken en deze aan formules toevoegen. Zo bereikte men zeer goede numerieke schattingen van sommige functies. De functieberekingen waren niet meer erg bruikbaar toen de computer eenmaal zijn intrede deed.
De mechanische rekenmachine werd ontwikkeld voor berekening met de hand. Deze rekenmachines gingen in de jaren veertig over in computers en dit betekende een revolutie in de numerieke wiskunde. Er konden gecompliceerde berekeningen worden gedaan die vroeger veel werk vereiste. Dit leidde tot vele nieuwe modellen, met name voor grootschalige problemen.
[bewerk] Software
Tegenwoordig worden de meeste modellen geïmplementeerd en uitgevoerd op een computer. Er zijn een aantal bekende computerprogramma's die worden gebruikt voor het uitvoeren van numerieke berekeningen:
- MATLAB is een breed toegepast programma voor het uitvoeren van numerieke berekeningen. Het heeft zijn eigen programmeertaal, waarin numerieke problemen geïmplementeerd kunnen worden.
- GNU Octave is een gratis programma dat veel op MATLAB lijkt.
- SciLab.
- Fortran
- R (programmeertaal)
- IDL (programmeertaal)
Veel computeralgebrasystemen zoals Mathematica en Maple kunnen ook gebruikt worden om numerieke berekeningen te verrichten.