Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 18

Thema: Gauss Algorithmus

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.02.2006
    Beiträge
    17

    Gauss Algorithmus

    Meine Aufgabe ist das ich eine funktion schreibe die es erlaubt n lineare Gleichungen mit n unbekannten zu lösen A*x = b.
    Eingabe ist eine Matrix A und der Vektor b, und ausgegebn soll der Vektor x.

    Hat jemand eine gute Ide wie man das lösen kann.

    Danke in Voraus

  2. #2
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Für die Matrix würde ich vorschlagen, dass Du einen Vector (Java, C++) her nimmst, der pro Zeile weitere Vectoren enthält. Darin muss dann auch b enthalten sein, so dass Du eine Matrix mit n+1 = m Elementen hast.
    Dann kannst Du die Zeilen nach und nach von 1 bis m mit dem Gauss Algorithmus berechnen und danach in umgekehrter Richtung die Unbekannten berechnen.
    Vorher kann man vielleicht noch abfangen, ob es sich um ein inhomogenes oder homogenes lineares Gleichungssystem handelt.

    Welche Programmiersprache willst Du verwenden?
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.02.2006
    Beiträge
    17
    Ich verwende PellesC für die schule
    Kann man irgendwo einen fertigen kode anseheh oder herunterladen

  4. #4
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Ich kenne PellesC überhaupt nicht. Kann man damit auch C++ programmieren?

    Einen fertigen Code hab ich nicht gefunden, aber unter
    http://de.wikipedia.org/wiki/Gau%C3%...tionsverfahren
    ist ein Verweis auf
    http://people.freenet.de/julianvargh...eit/Gauss.html
    wo man sehen kann wie es als Java-Applet funktionieren kann.
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.02.2006
    Beiträge
    17
    ja man kann damit c++ programieren, und er hat max. 10 MB

  6. #6
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Gut, dann kannst Du also Vector benutzen.
    Die Funktionen hierzu sind ganz gut hier beschriben:
    http://www.cppreference.com/cppvector/index.html

    Hier mal kurz ein Beispiel für das Befüllen mit zwei Gleichungen.
    Code:
    #include <vector>
    vector<double> matrix;
    vector<double> tmp;
    
    tmp.push_back(1);
    tmp.push_back(2);
    tmp.push_back(2);
    
    matrix.push_back(tmp);
    
    tmp.clear();
    tmp.push_back(3);
    tmp.push_back(4);
    tmp.push_back(1);
    
    matrix.push_back(tmp);
    Ob es so wirklich funktioniert, kann ich nicht genau sagen. Es könnte sein, dass mit der Zeile "matrix.push_back(tmp);" nur eine Referenz und keine Kopie erstellt wird, was dann beim erneuten Befüllen von tmp auch die Elemente in matrix ändert.

    Zugreifen kannst Du dann auf die Elemente in der folgenden Weise:
    Code:
    tmp = matrix.at(1);
    tmp.at(1);
    Gleiches Problem wie oben, ich weiß nicht sicher, ob hier jedes Mal eine harte Kopie erzeugt wird.
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  7. #7
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Ort
    Darmstadt
    Beiträge
    59
    Zitat Zitat von helvin
    Meine Aufgabe ist das ich eine funktion schreibe die es erlaubt n lineare Gleichungen mit n unbekannten zu lösen A*x = b.
    Eingabe ist eine Matrix A und der Vektor b, und ausgegebn soll der Vektor x.

    Hat jemand eine gute Ide wie man das lösen kann.

    Danke in Voraus
    hm, mal weg vom kleinen gauss. warum berechnest du die lösung des gleichungssystems nicht einfach über determinanten? ich habe mich jetzt noch nicht weiter mit der implementierung auseinandergesetzt, aber das müßte rekursiv eigentlich richtig elegant lösbar sein
    +++ this message is printed on 100% recycled electrons +++

  8. #8
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Der Punkt ist wohl dass das Determinantenzeugs viel aufwändiger ist vom Rechenaufwand her. O(n!) oder so was grausames afair. Bei Gauss bleibst du mit O(n^3) ganz bescheiden im Vergleich.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  9. #9
    Registrierter Benutzer
    Registriert seit
    23.02.2006
    Beiträge
    17
    wie kann man das ueber die Determinanten Loesen?

  10. #10
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Rekursiv - aber solange du nicht weisst, wie ne Determinante berechnen - ist der Gauss-Algo wohl leichter zu implementieren.

    Aufwand mit Determinanten dürfte wohl wirklich O(n!) sein.

    Mit Gauss die erwähnten O(n^3)

    Zum Vergleich: Nimmst du eine 10 mal 10 Matrix und rechnest die mit Gauss aus. Nehmen wir an, du hast damit 1 Sekunde lang zu tun. Mittels Determinanten hast du schon eine Stunde lang zu rechnen!

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  11. #11
    Registrierter Benutzer
    Registriert seit
    23.02.2006
    Beiträge
    17
    ich habe einen Code fuer den Gauss gefunden an folgender Seite (4-5 Seite) :
    http://people.fh-landshut.de/%7Ehmn/...esungen3_8.pdf

    aber ich habe den :
    #include <iostream>
    Code nicht an meinem Computer, weiss jemand wo ich den Code finden kann ?

  12. #12
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    iostream ist C++. Also mit g++ kompilieren (und falls du das noch nicht hast die passende libstdc++xyz-dev installieren)

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  13. #13
    Registrierter Benutzer
    Registriert seit
    23.02.2006
    Beiträge
    17
    wo kann ich den code #include <iostream>
    finden, ich programiere jetzt in windows und zwar mit den PellesC programm, und ich konnte ihm nicht finden auf meinem Computer und in Internet auch nicht.

  14. #14
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Das bringt dir nichts - "den code". Wenn du C++ verwendest ist das auch dabei. Und sonst nicht.

    Ich weiss ja nicht was PellesC ist - da musst du halt wohl die entsprechenden Aufrufe im Code die C++-Standard Library Sachen verwenden würden durch anderes Zeugs ersetzen.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  15. #15
    Registrierter Benutzer
    Registriert seit
    14.12.2005
    Ort
    Braunschweig
    Beiträge
    219
    Wenn du ne Matrix A x b = C hast und du suchst b - dann erstell dir die Inverse der Matrix A und berechne b= A^(-1) x C
    dann biste fertig und brauchst den Gaus nicht

    vielleicht hilft dir das ja....

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •