O(n3)
AAdet(A)≠0xbxA
Um sicher zu gehen, ist es wahrscheinlich am besten sicherzustellen, dass keinen numerischen Rangmangel aufweist (dh keine kleinen Singularwerte hat).A
Das Problem mit der Cramer-Regel ist, dass ihre Stabilitätseigenschaften unbekannt sind, mit Ausnahme von (das vorwärts stabil, aber nicht rückwärts stabil ist). (Siehe Genauigkeit und Stabilität numerischer Algorithmen , 2. Auflage, von N. Higham.) Es wird nicht als zuverlässiger Algorithmus angesehen. Die Gaußsche Eliminierung mit partiellem Schwenken (GEPP) wird bevorzugt.n=2
Ich würde erwarten, dass das Problem bei der Verwendung von BLAS + LAPACK zur Ausführung von GEPP in einer ODE-Lösung eine endliche Differenzierung ist, die in einer impliziten ODE-Methode verwendet wird. Ich weiß, dass Menschen lineare Programme im Rahmen einer Auswertung auf der rechten Seite gelöst haben, und weil sie dies naiv getan haben (nur die lineare Programmlösung in die rechte Seite gesteckt und einen Simplex-Algorithmus aufgerufen), haben sie die Genauigkeit ihrer Programme stark reduziert berechnete Lösung und wesentlich länger die Zeit, die es dauerte, um das Problem zu lösen. Ein Labmate von mir fand heraus, wie man solche Probleme viel effizienter und genauer lösen kann. Ich muss nachsehen, ob seine Veröffentlichung bereits veröffentlicht wurde. Möglicherweise haben Sie ein ähnliches Problem, unabhängig davon, ob Sie sich für die Verwendung von GEPP oder Cramer's Rule entscheiden.
Wenn Sie auf irgendeine Weise eine analytische Jacobi-Matrix für Ihr Problem berechnen können, möchten Sie dies möglicherweise tun, um sich einige numerische Kopfschmerzen zu ersparen. Es ist billiger zu bewerten und wahrscheinlich genauer als eine Näherung mit endlichen Differenzen. Ausdrücke für die Ableitung der Matrixinverse finden Sie hier, wenn Sie sie benötigen. Die Auswertung der Ableitung der Matrixinverse sieht so aus, als würde es mindestens zwei oder drei lineare Systemlösungen erfordern, aber sie würden alle dieselbe Matrix und unterschiedliche rechte Seiten haben, so dass sie nicht wesentlich teurer wäre als ein einzelnes lineares System lösen.
Und wenn es eine Möglichkeit gibt, Ihre berechnete Lösung mit einer Lösung mit bekannten Parameterwerten zu vergleichen, würde ich das tun, damit Sie diagnostizieren können, ob Sie auf eine dieser numerischen Fallstricke gestoßen sind.