DMUG-Archiv 2002

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Beschleunigen von NDSolve

Hallo,

> Ich versuche ein System gekoppelter gewöhnlicher Differentialgleichungen mit
> NDSolve numerisch zu lösen. Die (schwach) nichtlineare Kopplung zwischen den
> unabhängigen Variablen ist durch InterpolatingFunctions beschrieben. Die
> Berechnung der Lösung dauert leider ziemlich lange; zum Vergleich das selbe
> Problem gelöst mit einem Fortran Programm ist 100mal schneller.

Ja, und ? das ist doch normal, bloss 100 mal langsamer ist doch prima !

Ausserdem kann man das so nicht sagen. Solange Du nicht exakt den selben
Algorithmus in einem FORTRAN Programm verwendest ist der Vergleich
absurd.

> 
> Offensichtlich versucht Mathematica eine viel zu exakte Lösung zu berechnen.

Oder es nimmt ein anderes Verfahren. Stellt z. B. fest, das Dein System
steiff
ist und schaltet auf ein Gear-Verfahren um, was Dein FORTRAN Programm
garnicht
mit bekommt und weiter mit einem expliziten Verfahren rum wurstelt.

> Wie kann ich dem System sagen dass es weniger genau sein soll? Eine
> Reduktion der Werte für AccuracyGoal und PrecisionGoal erhöht sogar die
> Laufzeit ?!. 

Nun ja. Eigenlich erfordert ein gutes Verfahren eine hinreichent oft
*stetig*
differnzierbare rechte Seite. Es w"are also gescheiter die
Interpolationsordnung
zu erh"ohen und so h"assliche Spr"unge in den Ableitungen der rechten
Seite
zu vermeiden.

>Gibt es einen Ersatz für NDSolve mit simpleren Methoden (z.B.
> Euler) oder RungeKutta mit festen Schrittweiten?

Tja, ein Ersatz ist das wohl nicht, aber was sagt
Programming in Mathematica 

  7.4 Application: Differential Equations

und das ziemlich lieblos programmierte

<< ProgrammingInMathematica`RungeKutta`

ist auch schon auf der Festplatte.

Nat"urlich kann man statt einem Euler Verfahren
oder eine RK-Verfahren ohne 
Schrittweitensteuerung und Genauigkeitskontrolle
auch einfach einen Zufallzahlengenerator nehmen.
Das ist flink und genauso aussagekr"aftig,
oder man denkt sich einfach irgendwelche Funktionen
aus.

Ansonsten ist es so, das Verfahren h"oherer Ordung schneller
sind als Verfahren niedriger Ordnung und Verfahren 
mit Schrittweiten-Steuerung ebenfalls schneller sind
als Verfahren ohne. Insofern wiederspricht der Wunsch
nach einem "einfachen Verfahren" dem Wunsch nach einem
schnelleren Verfahren ..


Gruss
  Jens


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html