Oplossen van stelsels: [Gauss]
-
Voor het oplossen van stelsels programmeren we de methode van Gauss in
matlab. Een eerste versie is gauss.m . Je
hebt er wel een hulpprogramma genmat.m
bij nodig dat een willekeurige matrix genereert. Het programma "kiest"
een oplossingsvector die voor alle xk=1 is en genereert een
bijhorend rechterlid. Daarna wordt het stelsel opgelost.
-
Laat dit programma lopen met del=0.
Geeft dit bevredigende resultaten?
-
Hoe hebben we experimenteel de nauwkeurigheid van de berekende LR-ontbinding van de matrix getest?
-
Laat het programma nu lopen met del=1.e-15.
Hoe zijn nu de resultaten?
Heb je hiervoor een verklaring? Kijk naar de
grootte van de spilelementen.
-
Ga na wat er in het programma genmat.m gebeurt.
-
Kan je de grootte van de fout op x voorspellen aan
de hand van de grootte van del?
-
We programmeren nu de methode van Gauss met optimale
pivotering. Het matlab
programma heet gaussp.m
. Het gebruikt een hulpprogramma optspil.m
dat de optimale spil bepaalt. Tegelijk hebben we ook de multiplicatoren
op de nul-posities van de matrix bewaard in plaats van in een afzonderlijke
matrix.
-
Geeft het programma nu bevredigende resultaten?
-
Hoe hebben we de permutatiematrix bewaard?
-
Waarom mag men nu de eliminatie niet op de ganse
rij van de uitgebreide matrix toepassen? Hoe hebben we dit in het programma
opgelost?
-
Hoe hebben we nu experimenteel nagegaan dat P A=L
R? Hoe hebben we de matrices L en R uit de uitgebreide matrix [A|B] gehaald?
(Gebruik eventueel de matlab help.)
-
Is er nu nog een verband tussen del
en de relatieve fout op het resultaat?
-
Pas het programma aan zodat het ook de determinant
van de matrix A berekent.
-
Pas het programma aan voor meerdere rechterleden
(bv. om de inverse van A te berekenen).
-
Pas het programma aan zodat het aantal bewerkingen geteld wordt. Klopt dit aantal met het theoretisch berekend aantal in de cursus? Zoniet, hoe is dit dan te verklaren?
-
Het programma gaussh.m
is een copie van het vorige, zonder het uitschrijven van tussenresultaten.
De gegenereerde matrix is echter een hilbertmatrix (gemaakt met het matlab
commando hilb(n) met n=10).
-
Voor het programma gaussh.m uit. Hoe nauwkeurig zijn
de resultaten nu? Is dit nog steeds door een instabiliteit in de methode
van Gauss veroorzaakt, of is er nu een andere reden?
-
Doe help cond
en bereken het conditiegetal van de matrix A. Verklaart dit de nauwkeurigheid
van de resultaten? Is er een verband tussen cond(A)
en de relatieve fout op de oplossing?
- Zie het overzicht van de matlab programmas voor gauss.
- java applet
Het laatste voorbeeld is ook in een java applet uitgewerkt.
Je kan de orde van de hilbertmatrix ingeven en het conditiegetal voor de oneindig-norm verschijnt evenals de berekende oplossing (die in theorie moet
geven xk=1) en de fout 1 - xk.
Om de applet te starten druk op de volgende knop.
© Adhemar Bultheel
2001-12-05