Meines Wissens gibt es 4 Möglichkeiten, ein lineares Gleichungssystem zu lösen (korrigieren Sie mich, wenn es mehr gibt):
- Wenn die Systemmatrix eine quadratische Matrix mit vollem Rang ist, können Sie die Cramer-Regel verwenden.
- Berechnen Sie die Inverse oder die Pseudoinverse der Systemmatrix.
- Verwenden Sie Matrixzerlegungsmethoden (Gaußsche oder Gauß-Jordan-Eliminierung wird als LU-Zerlegung betrachtet).
- Verwenden Sie iterative Methoden, z. B. die konjugierte Gradientenmethode.
Tatsächlich möchten Sie fast nie die Gleichungen mit der Cramer-Regel lösen oder die Inverse oder Pseudoinverse berechnen, insbesondere für hochdimensionale Matrizen. Die erste Frage ist daher, wann Sie Zerlegungsmethoden bzw. iterative Methoden verwenden müssen. Ich denke, es hängt von der Größe und den Eigenschaften der Systemmatrix ab.
Die zweite Frage ist nach Ihrem Kenntnisstand, welche Art von Zerlegungsmethoden oder iterativen Methoden für eine bestimmte Systemmatrix im Hinblick auf numerische Stabilität und Effizienz am besten geeignet sind.
Beispielsweise wird das konjugierte Gradientenverfahren verwendet, um Gleichungen zu lösen, bei denen die Matrix symmetrisch und positiv bestimmt ist, obwohl es auch auf beliebige lineare Gleichungen angewendet werden kann, indem in konvertiert wird . Auch für eine positiv definierte Matrix können Sie die Cholesky-Zerlegungsmethode verwenden, um die Lösung zu suchen. Aber ich weiß nicht, wann ich die CG-Methode und wann ich die Cholesky-Zerlegung wählen soll. Meiner Meinung nach sollten wir die CG-Methode für große Matrizen verwenden.
Für rechteckige Matrizen können wir entweder QR-Zerlegung oder SVD verwenden, aber ich weiß auch nicht, wie ich eine davon auswählen soll.
Für andere Matrizen kann ich jetzt keinen geeigneten Löser auswählen, wie Hermitian / Symmetric-Matrizen, Sparse-Matrizen, Band-Matrizen usw.