Gleichung mit 3 Unbekannten?!



  • Hallo
    Habe euer Forum schon durchforstet aber nicht wirklich was gefunden.
    Also meine Frage wie Programmiere ich eine Gleichung mit 3 Unbekannten?
    Ich habe schon bei Google gesucht aber keinen Quellcode gefungen.

    Grundformel Lautet z.B.:
    A= Bx + Cy + Dz
    E= Fx + Gy + Hz
    I= Jx + Ky + Lz

    Nun möchte ich das ganze nach x,y,z auflösen,
    Mathematisch bekomme ich das hin aber kein Plan wie ich das in C Programmiere.
    Danke an alle die mir Helfen können.
    MFG Bonsai88



  • Berechne doch die Determinante und verwende die Cramersche Regel



  • Jester schrieb:

    Berechne doch die Determinante und verwende die Cramersche Regel

    Und wenn du das jetzt nicht verstanden hast, dann hast du wenigstens Suchbegriffe 🙂



  • Die Cramersche Regel ist doch blöd, vorallem wenn das LGS nicht eindeutig lösbar ist. Ich würd den Gauss-Algo. benutzen. Kann ja nicht so schwer sein den in C umzusetzen.



  • Ob es lösbar ist, erkennt man an der Determinante. Wenn es nicht eindeutig lösbar ist, dann viel Spaß dabei, etwas zu coden, was die Lösung in Abhängigkeit von einer Unbekannten angibt.
    Für 3x3 ist die Cramer'sche Regel glaub ich am schnellsten, wenn das Programm allerdings allgemeiner sein soll, ist der Gauss vielleicht die bessere Wahl.



  • Ich glaub nicht das die Cramer'sche Regel schneller ist. Der Aufwand eine Determinante zu berechnen ist ja schon fast so hoch wie der von Gauss und bei der Cramer'schen Regel muss man 4 Determinanten (für 3x3 Matritzen) berechnen.



  • Für 3x3 geht es ja noch recht schnell. Ab 4x4 wird es natürlich ekelhaft (Determinanten-Entwicklungssatz). 🙂



  • also wenn man nur 3x3 lösen möchte ist ein einfacher Gauss ganz leicht

    I  : A00*x+A01*y+A02*z = L0   | I*-A10/A00+II |  I*-A20/A00+III
    II : A10*x+A11*y+A12*z = L1
    III: A20*x+A21*y+A22*z = L2
    
    I  : A00*x+A01 *y+A02 *z = L0 
    II :     0+A11'*y+A12'*z = L1' | II*-A21'/A11'+III 
    III:     0+A21'*y+A22'*z = L2'
    
    I  : A00*x+A01 *y+A02  *z = L0 
    II :     0+A11'*y+A12' *z = L1' 
    III:     0+A    0+A22''*z = L2''
    

    und von nun an gehts durch einsetzen und immer auf Div/0 achten

    für grössere Matrizen hilft [LU|QR|SVD]- Decomposing



  • Optimizer schrieb:

    Für 3x3 geht es ja noch recht schnell. Ab 4x4 wird es natürlich ekelhaft (Determinanten-Entwicklungssatz). 🙂

    Bah, erinnere mich bloß nicht daran. Das ist eine scheiß Arbeit 😉 .


Anmelden zum Antworten