Ich suche nach der C # -Implementierung des Projected Gauss-Seidel-Algorithmus zur Lösung des linearen Komplementaritätsproblems . Bisher habe ich das in C ++ geschriebene in der Bullet -Bibliothek gefunden, aber leider ist es in hohem Maße optimiert (so wäre schwer, es in C # zu übersetzen).
In der ähnlich Frage eins schlug vor, die numerischen Bibliotheken für .NET . Alle von ihnen enthalten nur Algorithmen zur Lösung von Systemen linearer Gleichungen .
Bearbeiten: Auch wenn ich eins gefunden habe, scheint es nicht vollständig zu sein, daher ist die Frage immer noch offen.
Sie haben Gauss Seidel ohne Projektion implementiert. Für projizierte Gauß-Seidel müssen Sie die Lösung innerhalb der unteren und oberen Grenzen projizieren (oder klammern):
%Vor%Es ist eine geringfügige Änderung. Hier ist ein Kern, der zeigt, wie man die A-Matrix und den b-Vektor aus der Bullet Physics Library extrahiert und sie mit dem projizierten Gauss Seidel löst: Ссылка
Nach einer Woche Suche habe ich endlich diese Veröffentlichung gefunden (auf Russisch, basierend auf Kenny Erlebens Arbeit). Ein projizierter Gauss-Seidel-Algorithmus wird dort beschrieben und dann um SOR und Abbruchbedingungen erweitert. All das mit Beispielen in C ++, die ich für diese grundlegende C # -Implementierung verwendet habe:
%Vor%