Gaußsches Eliminationsverfahren



  • Hey,

    Vorweg: Ich weiss nicht ob das vllt. in den Mathebereich gehört aber da ich es ja letztendlich in C umsetzten will lieber hier hin!

    Also wie der Themenname schon sagt, würde ich gerne das Gaußsches Eliminationsverfahren programmieren! Ich hab mir zwar schon einen selber gebastelt (irgendwie) aber es geraten doch schneller als mir lieb ist Rundungsfehler in die Rechnungen, was nicht akzeptabel ist! Daher wüsste ich gerne, wie ich das am besten abarbeite!

    Auf einem Blatt Papier kein Problem aber einen Algorithmus zu haben der bei allen Aufgaben klappt will nicht so wirklich gelingen!

    Hoffe mir kann jemand weiterhelfen! 🙂

    MfG
    McMathe



  • McMathe schrieb:

    Hoffe mir kann jemand weiterhelfen! 🙂

    Ja. Deutsche Sätze werden mit einem Punkt beendet. Ausrufezeichen sind die Ausnahme.

    Ansonsten suchst Du mal nach absoluter und relativer Spaltenmaximumstrategie für das Verfahren. Das mildert die numerischen Probleme ("Rundungsfehler").



  • Nimm double statt float.

    Ansonsten ist ohne Code nicht viel zu sagen.



  • Warum möchtest du dir ein Gaußsches Verfahren schreiben?

    Geht es dir darum, ein wenig Programmiererfahrung zu sammeln?
    Wenn das so ist, dann kannst du auch erstmal ganz zufrieden sein, wenn dein Programm läuft.

    Rundungsfehler stören dich?
    Das wichtigste wäre es erstmal sicherzugehen, ob es wirklich Rundungsfehler und keine Rechenfehler sind. Spätestens an dieser Stelle wäre ein wenig Code nötig.

    Du willst bessere Ergebnisse?
    Dein Text klingt so als ob er von einem Schüler stammt, der gerade das Gauß-Verfahren kennengelernt hat und es mal programmieren möchte. Wenn das so ist, kannst du erstmal stolz auf dich sein, wenn du das Verfahren erfolgreich implementiert hast. Ansonsten: Pivotsuche, LR-Zerlegung oder ähnliche Verfahren sind besser geeignet um Gleichungssysteme zu lösen.

    DU willst professionelle Ergbenisse?
    Es gibt genug numerische Bibliotheken, die Gleichungssysteme lösen können. Oder auch einige Programme (Maple/Mathematica) die auch exakte Lösungen errechnen können.



  • Mein nicht gerade prof. Text von vorhin tut mir leid. Ich gebe zu etwas in eile gewesen zu sein, wodurch auch die Informationen sowie die Qualität an sich schlecht waren.

    Ich konnte das Problem nun jedenfalls mit einem besseren Code lösen (die ganze Sache nochmal sachlich am Whiteboard durchrechnen brachte da gute Ideen).

    Aus Sicht der Programmierung hab ich keine Probleme - zumindest habe ich an der Uni Strukturiere Prog. und OOP jeweils mit 1,0 sowie 1,3 abgeschlossen. Paar Grundlagen sind da also schon vorhanden 👍

    Ich beschäftige mich jetzt schon eine weile mit der Grafikprogrammierung (OpenGL) und da hatte ich zuletzt eher mit Mathe als mit der Programmierung zu tun, wodurch die einfachsten Sachen manchmal kompliziert erscheinen. Letztendlich habe ich eine gute Lösung gefunden und es läuft.
    Bin auch leider kein großer Fan von anderen Lib's, allein schon weil ich es einfach hasse große Bibliotheken in meinem Projekt zu haben, auch wenn ich letztendlich nur 1 Funktion nutze. Da code ich mir das lieber selber - Übung schadet ja außerdem auch nie.

    Aber danke für die Hilfe 😉



  • Uni Strukturiere Prog. und OOP jeweils mit 1,0 sowie 1,3 abgeschlossen

    Klingt gut, sagt aber wenig aus.^^

    Bin auch leider kein großer Fan von anderen Lib's, allein schon weil ich es einfach hasse große Bibliotheken in meinem Projekt zu haben, auch wenn ich letztendlich nur 1 Funktion nutze. Da code ich mir das lieber selber - Übung schadet ja außerdem auch nie.

    👍 Programmieren wird viel zu abstrakt. Irgendwann weiß keiner mehr, wie seine Programme eigentlich funktionieren...



  • Nunja, so wenig sagt es nun auch nicht aus! Das ich schon weiter als "Hello World" bin sollte dadurch klar sein ^^



  • Ich beschäftige mich jetzt schon eine weile mit der Grafikprogrammierung (OpenGL) und da hatte ich zuletzt eher mit Mathe als mit der Programmierung zu tun, wodurch die einfachsten Sachen manchmal kompliziert erscheinen. Letztendlich habe ich eine gute Lösung gefunden und es läuft.
    Bin auch leider kein großer Fan von anderen Lib's, allein schon weil ich es einfach hasse große Bibliotheken in meinem Projekt zu haben, auch wenn ich letztendlich nur 1 Funktion nutze. Da code ich mir das lieber selber - Übung schadet ja außerdem auch nie.

    Hört sich so an als ob du OpenGL 3.x+ Core verwenden möchtest und nun die ganzen
    Matrizenoperationen selbst realisieren möchtest.

    Es gibt eine recht kleine Lib GLM, wenn ich mich recht erinnere. Diese sollte ausreichend sein.

    Die mathematischen Grundlagen der Berechnungen sollten aber vorhanden sein.

    PS: Was verwendest du um OpenGL zu lernen? Ich habe nach einiger Zeit aufgegeben. SuperBible 5 hat mir vom Aufbau nicht zugesagt und gute Tutorials finde ich kaum



  • shisha schrieb:

    PS: Was verwendest du um OpenGL zu lernen? Ich habe nach einiger Zeit aufgegeben. SuperBible 5 hat mir vom Aufbau nicht zugesagt und gute Tutorials finde ich kaum

    Auch auf das Risiko hin gleich verprügelt zu werden, bin ich der Meinung, dass man mit klassischem OpenGL anfangen und sich vorerst nicht mit Shadern belasten sollte. Die SuperBible 5 ist imho völlig ungeeignet für Anfänger. Schau die mal die 4 an. Die hat einen umfangreichen ersten Teil zu klassischem OpenGL (nicht total veraltet mit glBegin/glEnd sondern auch performant mit VBOs u.s.w.). Im zweiten Teil geht es sehr gemächlich Richtung Shader. Danach kannst Du immer noch mit der 5 das Shader-Gedöns vertiefen.

    Findet man schnell als eBook über google. Nur so als unmoralischer Tipp. 😃



  • Ich würde da Forentroll vollsten zustimmen.
    Die Fixed Function Pipeline ist für den Einstieg eig. optimal, da es Shader nur komplizierter machen. Wenn man dann erstmal in die Materie eingestiegen ist, kann man definitiv leichter auf die neuen OpenGL Versionen umsteigen und auch Shader nutzen.


Log in to reply