Layout,graphics and scripting by EyE

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
Plaatje van het pseudospectrum

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
xy10log(epsilon)# punten in de curverekentijd [sec]
3.2080.000-0.499622935.4
1.1680.000-1.373919835.0
1.3670.000-2.248617931.6
1.5530.000-3.12346814.8
0.000-1.884-3.12486311.9
0.0001.884-3.12486312.7
0.500-2.194-3.9992509.6
0.5002.194-3.9992509.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 $\sigma_{\mbox{min}}\left(z\mathbf{I} -
\mathbf{A}\right)$ 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
Nog een plaatje van het pseudospectrum

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