lineare Gleichungen - zwei Unbekannten

  • hallo

    ich sollte für meine Prüfung folgendes können (bin noch ein C++ Anfänger und mein Mathe ist auch nicht das beste ... somit hoffe ich auf etwas Unterstützung von euch ) :

    Erstellen Sie ein C++ Programm, das einfache lineare Gleichungen mit zwei
    Unbekannten (x,y) lösen kann. Eine Gleichung besteht aus zwei Termen, und die
    Werte für die Koeffizienten und Konstanten der Terme sollen vom Benutzer
    eingegeben werden. Beschränken Sie sich beim Ermitteln der Werte für x und y auf
    positive ganze Zahlen, die kleiner als 100 sind. Wenn Ihr Programm keine Lösung im
    geforderten Wertebereich findet, soll die Meldung 'Keine Lösung im Wertebereich 1..100' ausgegeben werden.

    Als Beispiel:
    Eingabe:
    Term1 xKoeffizient: 1
    Term1 yKoeffizient: 2
    Term1 Konstante: 5
    Term2 xKoeffizient: 2
    Term2 yKoeffizient: 3
    Term2 Konstante: 4
    Term1 wäre in diesem Fall x + 2y = 5
    Term2 ware 2x – 3y = 4
    Ausgabe:
    Lösung: x=1 y=2


    .... soviel zur Angabe ... jetzt habe ich mir diverse Videos über Gauß-Algorithmus und Lineare Gleichungssystem angeschaut. ( http://www.youtube.com/watch?v=DNSB9PwzwM8 ,....)

    soweit so gut .. ich versteh jetzt wie man es lösen kann (bzw. ungefähr) ... hätte mir jemand hier noch weitere gute Quellen, damit ich mein angführtes Beispiel lösen kann?

    gruss
    pascal

  • Da du ein sehr einfaches Gleichungssystem hast, ist der Gauß-Alg. ein Overkill, wenn nicht gefordert. Ich würde dir raten mit Rationalen Zahlen zu rechnen. Dann brauchst du aber eine eigene Klasse oder du machst dies nicht generisch im Code. Dann addierst einfach -kx1/kx2*(kx2*x+ky2*y) = -kx1/kx2*k2 auf die erste Gleichung drauf. Dadurch ist kx1=0 jetzt und wenn der neue Koeffizient ky1 jetzt 0 ist, ist die Gleichung nicht eindeutig lösbar (unendlich viele Lösungen in diesem Fall). Sonst brauchst du nur die Konstante 1 nur noch durch k1yneu dividieren und hast deine Lösung für y.

    Dann deine Ergebnisse auf Ganzzahlig etc. überprüfen.

    Eingabe/Ausgabe entweder durch fread/freadline/fprintf oder cin/cout (<-- Einfacher).

  • Du kannst auch ohne mathematischem Verständnis das Problem lösen.

    Nachdem ihr mit ganzen Zahlen arbeitet und das nur in einem Bereich unter 100, ist der Bereich so klein, dass du einfach alle Kombinationen durchprobierst... Dann sind wir bei 100*100 Möglichkeiten und irgendwann hast du ein x und ein y, das beide Gleichungen erfüllt -> Fertig.
    Oder du findest kein x,y in dem Bereich, dann ist es nicht lösbar.

    Ich denke die Angabe ist bewußt so einfach gehalten, dass diese Möglichkeit offen bleibt.

    Stefan Spelitz
    [Computergraphik UE Tutor 2017SS]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!