2010-12-08 18 views
6

Mögliche Duplizieren zu lösen:
Solving a linear equationbeste Weg, um eine lineare Gleichung in Code

ich programmatisch müssen ein System von linearen Gleichungen in C# lösen und VB

Hier ein Beispiel für die Gleichungen:

12.40 = a * 56.0 + b * 27.0 + tx 
-53.39 = a * 12.0 + b * 59.0 + tx 
14.94 = a * 53.0 + b * 41.0 + tx 

Ich möchte die beste Approximation für a, b und tx erhalten.

Sollte ich irgendeine Art von Matrix-Klasse oder etwas verwenden?

+0

Sie sagen, beste Annäherung, so wissen Sie, dass Ihre Matrix immer quadratisch und gut konditionierte wird? –

+0

Siehe auch: http://StackOverflow.com/questions/769/solving-a-Linear-Equation –

Antwort

1

Ich denke, wir diese Frage schon gesehen haben: Solving a linear equation

+0

Die Sprache ist etwas anders, aber die Methode ist die gleiche und wir scheinen sowieso über Algorithmen zu sprechen, also ja, es gibt nichts Neues in dieser Frage. –

+5

Kommentare. Die Identifizierung von Duplikaten gehört in die Kommentare. – dmckee

+0

@dmckee: +1 +1 +1 +1 –

3

Gauß-Jordan-Eliminierung ist die direkteste und einfachste Methode zu verstehen, für die Lösung ein System simultaner linearer Gleichungen wie dieses. Die LU-Zerlegung ist etwas numerischer stabil, aber Ihre Matrix sieht nicht schlecht konditioniert aus, daher glaube ich nicht, dass Sie die zusätzliche Komplexität benötigen.

+0

Gaussian Elimination war was ich sagen wollte, aber um 3.55 Uhr, aus irgendeinem Grund sagte mein Kopf Simplex! Behoben. http://en.wikipedia.org/wiki/Gaussian_elimination – Orbling

+0

ah ja, Simplex hat einen Schritt mit Gaussian Eliminierung, die anderen Schritte werden verwendet, um zu bestimmen, welche Kombinationen von Gleichungen eine Lösung in der machbaren Region geben, und zu benachbarten Ecken zu bewegen in Richtung auf verbesserte Zielfunktion. Natürlich habe ich den Vorteil, dass es hier nur 22.00 Uhr ist und mein Gehirn ist noch nicht so ein Fuzz. –

Verwandte Themen