|
|
|
Eerste vergelijking van psagui en de matlab continuation toolbox
Om een indruk te krijgen van de performance van de matlab continuation toolbox
in vergelijk tot de tool van Trefethen (psagui), is de volgende test
uitgevoerd:
Maak een plot van de pseudospectra van de matrix: gallery('grcar', 32, 3),
op het domein x:[-1.5, 3.5], y:[-4, 4], voor vijf verschillende
epsilon
Bevindingen met psagui
De tool gestart met psagui(initmatrix). Vervolgens de assen, en curve aantal
ingesteld op het gewenste gebied. Om een beetje kwaliteit te krijgen grid op
100. Na 52 seconden rekenen kwam de volgende figuur tevoorschijn:
Figuur 1:
pseudospectrum van grcar(32,3), geplot door de psagui
|
|
Bevindingen met matlab continuation toolbox (mct)
Om meerdere curves te maken, maoet herhaaldelijk het commando
maakcurve(x,y) worden aangeroepen. Omdat op dit moment nog geen
instrument voorhanden is om een startpunt te vinden voor een gegeven epsilon,
moest iets ander bedacht worden. Uit figuur 1 zijn x en y redelijk af te lezen
voor de gewenste epsilon. Door nu deze afgelezen in te vullen in de functie
10log(svdfunction(x,y)) wordt de bijbehorende epsilon uitgerekend. Met wat
geprobeer is een nauwkerig startpunt te vinden, zodat epsilon vlakbij de
gewenste waarde ligt. De gebruikte startpunten staan
in tabel 1, hieronder.
Tabel 1:
gebruikte startpunten, epsilon en rekenkosten van de toolbox
| x | y | 10log(epsilon) | #
punten in de curve | rekentijd [sec] |
| 3.208 | 0.000 | -0.4996 | 229 | 35.4 |
| 1.168 | 0.000 | -1.3739 | 198 | 35.0 |
| 1.367 | 0.000 | -2.2486 | 179 | 31.6 |
| 1.553 | 0.000 | -3.1234 | 68 | 14.8 |
| 0.000 | -1.884 | -3.1248 | 63 | 11.9 |
| 0.000 | 1.884 | -3.1248 | 63 | 12.7 |
| 0.500 | -2.194 | -3.9992 | 50 | 9.6 |
| 0.500 | 2.194 | -3.9992 | 50 | 9.8 |
De rekentijd om een enkele curve te maken is dus minder dan dat de psagui nodig
had, echter de totale rekentijd bedraagt 160.8 seconden, en dat is weer meer dan
de 52 seconden van de psagui. Een andere manier om de twee te vergelijken is
door na te
gaan op hoeveel punten ge-evalueerd moet worden. De psagui evalueert op grid *
grid punten, in dit geval 100 * 100 = 10000 punten. Om de curves te berekenen
met de mct, is op totaal 900 punten geevalueerd. Dat is
aanzienlijk minder. Het feit dat de psagui toch sneller resultaten heeft, komt
omdat de kleinste singuliere waarde op een slimmere manier wordt gezocht in de
psagui, dan bij in svdfunction.m, die door de mct wordt gebruikt.
Figuur 2:
pseudospectrum van grcar(32,3), berekenend met de mct. Kleurcodering is dezelfde als
figuur 1
|
|
Opmerkingen
Vooral het feit dat met de mct slechts op 900 punten (tegen 10000 psagui) de
'dure' kleinste singuliere waarde hoeft uit te rekenen, geeft goede hoop.
Performance verbeteringen zijn aan te brengen door implementatie van de volgende
verbeteringen
- Symbolische jacobiaan van sigma(zI-A) toevoegen
- een C-implementatie maken van de module svdfuntion.m. Dit is de functie die
de kleinste singuliere waarde van zI-A uitrekent.
- RK4 of AB als predictor
- Correctorstappen overslaan
- Andere paramters van de mct gebruiken dan de standaardwaarden (bijvoorbeeld
de minimale of maximale stapgrootte etcetera
- ???
Verder moet nog een methode bedacht worden, om bij een gegeven epsilon een
startpunt te vinden, en misschien zelfs meerdere startpunten die bij continueren
verschillende curves opleveren.
Practicum CS 2000
2000-11-1
|