Ich suche ein Tool oder eine Bibliothek, die einen schnellen Algorithmus in C oder JAVA implementiert, um die Gleichung $Ax=b$ zu lösen, wobei $A$ eine $N*N$ Sparse-Matrix mit $5$ Diagonalen ungleich Null ist $(- N,-1,0,1,N)$.
Mein Problem ist, dass $N$ wirklich groß ist ($N$ kann $1-5e7$ erreichen).
Ich löse es jetzt in Matlab, aber es ist wirklich langsam, also suche ich nach anderen Methoden in anderen Sprachen, um es schneller zu machen.
aktualisieren:
Entschuldigung für den Mangel an Informationen, ich werde meine Frage aktualisieren und versuchen, mein Problem zu klären.
Ich löse numerisch die 2D-Laplace-Gleichung auf einer rechteckigen Domäne (die Schwierigkeit kann sich aus den Abmessungen des Rechtecks ergeben - 1 mm * 100 nm) mit gemischten Randbedingungen.
Neumann-Grenze auf der linken und unteren Seite, Dirichlet-Grenze auf der oberen Seite und auf der rechten Seite die Ableitung gleich einer Funktion.
Mit der Finite-Differenzen-Methode erhalte ich die Matrix A mit 5 Diagonalen (jeder Punkt ist mit seinen 4 Nachbarn und sich selbst gekoppelt).
Ich habe alle integrierten Funktionen in Matlab zum Lösen linearer Gleichungen einschließlich "bicgstab" ohne Erfolg ausprobiert (die Lösung explodiert).
Der Backslash-Operator mit einer Matrix von N*N (wobei N=5e7) dauert etwa 13 Minuten hin oder her.
Die Notation ist mir nicht klar, aber unter der Annahme, dass die Diagonale Null ist, die erste Superdiagonale aus Kopien von 1 besteht, die zweite Superdiagonale aus Kopien von N besteht und diese Matrix antisymmetrisch ist, dann ist die Matrix A singulär für ungerade N .
Wenn meine ursprüngliche Interpretation der Notation richtig ist, dann ist die Matrix B auch singulär für ungerade N.
Auf der positiven Seite ist dies eine der schönsten Testmatrizen, mit denen ich seit einiger Zeit gespielt habe.
A=@(N)toeplitz([0 1 N Nullen(1,N-3)],[0 -1 -N Nullen(1,N-3)]);
B=@(N)toeplitz([0 1 Nullen(1,N-3) N],[0 -1 Nullen(1,N-3) -N]);
Insbesondere die reduzierte Zeilenstufenform von B ist am unterhaltsamsten.
wenigO
Claude Leibovici
wenigO
Swetoslaw
jorik
Izzy
Karl Christian
dor gotleyb