staging.inyokaproject.org

Beratung zum ersten, kleinen Projekt: Gaußscher Algorithmus für lineare Gleichungssysteme

Status: Ungelöst | Ubuntu-Version: Kubuntu 10.04 (Lucid Lynx)
Antworten |

EmoJoe

Anmeldungsdatum:
28. Dezember 2008

Beiträge: 125

Hallo,

Ich besuche derzeit die 12. Klasse und hab mich bei der Vergabe der Facharbeiten im Mathe-LK für ein (für mich) etwas ehrgeizigeres Projekt entschieden: Und zwar lautet mein Thema jetzt Der Gaußsche Algorithmus für lineare Gleichungssysteme mit mehreren Unbekannten und seine praktische Realisierung (in Form eines Programmes). Tja, jetzt steh ich da und hab mir das eingebrockt 😊... Mein Hintergedanke war der, dass da ich eigentlich eh schon seit Jahren mal richtig in das Programmieren einsteigen möchte und durch die Facharbeit dann ein gewisser Druck da ist und dass dieses kleine Projekt vielleicht genau den Ansporn bietet könnte, der nötig ist um am Ball zu bleiben. Was Vorkenntnisse angeht, kann ich ein wenig PHP aufweisen.

Ich hab mich jetzt schon etwas umgeschaut und stehe jetzt erstmal vor der Frage mit welcher Programmiersprache ich das Problem am besten angehen sollte. Zuerst dachte ich an C oder C++ aber ein Freund von mir, der sich ein wenig auskennt hat mir dann später geraten auch mal Java anzuschauen, weil es relativ leicht zu lernen sein solle und auch den Vorteil der Plattformunabhängigkeit besitzt. Das Programm soll dann später hauptsächlich unter Windows laufen aber wenn ich wirklich Java verwenden sollte, würde das ja eh kein Problem darstellen (...okay eine Java-VM ist dann natürlich Voraussetzung).

Wie ist das mit einer graphischen Oberfläche? Wäre die unter Java leichter zu realisieren oder macht das keinen großen Unterschied? Auf mich hat Java aus dem Bauch heraus auf Anhieb einen ganz guten Eindruck gemacht, aber ich bin ja dann auch kein Experte. Was meint ihr?

Wenn dann mal diese Entscheidung gefallen wäre, hab ich vor mir ein gutes Buch zu kaufen und es dann hoffentlich gebacken zu griegen das Programm (, das sich ja eigentlich relativ simpel gestalten sollte) bis Dezember (bis dahin habe ich Zeit) auf die Beine stellen zu können.

Folgende Bücher sind mir bisher positiv aufgefallen: Java #1, Java #2 , C

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Persönlich würde ich eher zu einer Sprache wie Perl oder Ruby tendieren. Könnte jedoch schwierig mit einer grafischen Ausgabe werden. Aber die Grafik wird sowieso überbewertet.

Meist du im übrigen sowas:

http://www.arndt-bruenner.de/mathe/scripts/gleichungssysteme.htm

inwiwide

Anmeldungsdatum:
22. August 2008

Beiträge: Zähle...

Hallo EmoJoe,

welche Frage zu nehmen ist eine nicht ganz so einfache Entscheidung meiner Meinung nach. Aber bevor du dir irgendwelche Bücher kaufen willst, schau doch zuerst einmal auf http://www.galileocomputing.de/katalog/openbook nach - hier gibt es kostenlose HTML-Versionen von verlegten Büchern mit Beispiel-Code. Ist sicher einen (oder mehrere) Blick wert bevor du dir irgendwelche Büch mehr oder weniger Geld kaufst.

Bevor du dich festlegst, solltest du dir klar werden, was das Programm alles können soll - beispielsweise GUI oder nicht? Das schränkt, wie uname schon erwähnt, die Auswahl etwas ein.

EmoJoe

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2008

Beiträge: 125

uname schrieb:

Persönlich würde ich eher zu einer Sprache wie Perl oder Ruby tendieren. Könnte jedoch schwierig mit einer grafischen Ausgabe werden. Aber die Grafik wird sowieso überbewertet.

Hm... Also eine grafische Oberfläche ist natürlich nicht zwingend notwendig aber ich denke es wäre schon komfortabler und würde etwas mehr hermachen.

uname schrieb:

http://www.arndt-bruenner.de/mathe/scripts/gleichungssysteme.htm

Ja genau, so in der Art stell ich mir das auch vor. Über das bin ich auch schon mal vor einer Weile gestoßen.

inwiwide schrieb:

welche Frage zu nehmen ist eine nicht ganz so einfache Entscheidung meiner Meinung nach. Aber bevor du dir irgendwelche Bücher kaufen willst, schau doch zuerst einmal auf http://www.galileocomputing.de/katalog/openbook nach - hier gibt es kostenlose HTML-Versionen von verlegten Büchern mit Beispiel-Code. Ist sicher einen (oder mehrere) Blick wert bevor du dir irgendwelche Büch mehr oder weniger Geld kaufst.

Das schau ich mir auf jeden Fall auch mal an!

Danke für die bisherigen Beiträge!

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Hm... Also eine grafische Oberfläche ist natürlich nicht zwingend notwendig aber ich denke es wäre schon komfortabler und würde etwas mehr hermachen.

Wenn sie nicht gefordert wird würde ich sie auf jeden Fall weglassen. So kannst du dich auf das eigentliche Problem konzentrieren. Außerdem kannst du dann leicht Extremfälle berechnen lassen. Z.B. könntest du Zufallswerte generieren und die Anzahl der Zeilen linear erhöhen. Alle Gleichungen und Lösungen kommen dann in entsprechende Logfiles, evtl. CSV-getrennt zur Excel-Aufbereitung. Dann lässt du das mal eine Nacht oder eine Woche durchlaufen und findest dann raus, ab wie viel Hundert oder Tausend Gleichungen dein System abstürzt. Evtl. musst du noch "ulimit" oder sonst was ändern, um dein Linux-System zu optimieren. Vielleicht leiht dir auch jemand einen Großrechner.

Onkel_Judith

Avatar von Onkel_Judith

Anmeldungsdatum:
12. April 2008

Beiträge: 422

Huhu,

mit einer Sprache wie Java solltest du recht schnell zu Ergebnissen kommen, sofern du die grafische Ausgabe weglässt. Eine einfache alternative wäre es, externe Programme wie Gnuplot dafür zu verwenden. Die kannst du in deinem Programm direkt mit den entsprechenden Parametern aufrufen und schon hast du eine prima Ausgabe.

LG

EmoJoe

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2008

Beiträge: 125

Öhm also Graphen plotten möchte ich eigentlich gar nicht, ich glaube da werd ich grad falsch verstanden. Mit der graphischen Oberfläche meine ich eigentlich nur, zunächst ein Eingabefeld für die Gleichungen und dann als Ausgabe einfach die Lösungen der Variablen. Ist das arg kompliziert zu realisieren?

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Ist das arg kompliziert zu realisieren?

Bestimmt nicht. Nur wenn Du als Ein- und Ausgabe CSV-Dateien nutzt, so bist du viel flexibler. Wie gesagt vor allem kannst du dich mit dem eigentlich Problem beschäftigen, was aber wahrscheinlich relativ zur grafischen Ausgabe trivial ist und am wenigsten Rechenzeit benötigt 😉

Onkel_Judith

Avatar von Onkel_Judith

Anmeldungsdatum:
12. April 2008

Beiträge: 422

OK, dann habe ich das falsch verstanden, sry ☺

Bei Java müsstest du AWT oder Swing benutzen, um eine grafische Oberfläche zu programmieren. Die Einarbeitung darein ist schon recht umfangreich und dürfte bei deinem Projekt in keinem Verhältnis zum Nutzen stehen. Daher solltest du dich bei den Eingaben an uname orientieren oder über die Konsole abfragen.

LG

EmoJoe

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2008

Beiträge: 125

Okay dann verabschiede ich mich erstmal von einer graphischen Oberfläche 😀. Ihr habt schon recht: Erstmal sollte ich mich auf das eigentliche Problem konzentrieren und so eine GUI ist wirklich oftmals überbewertet.

Dann werd ich die nächste Zeit mal versuchen mich in die Thematik einzuarbeiten und mich ans Werk machen.

Nochmals danke für die Ratschläge ☺!

MisterIgo

Anmeldungsdatum:
23. April 2009

Beiträge: 947

Mit den anderen Sprachen kenne ich mich nicht so aus, aber zumindest bei Java kannst du auch erstmal die Funktionalität implementieren (also das wirkliche Berechnen), dass du dann über die Konsole testen kannst oder sogar noch rudimentärer, indem du bestimmte Variablen direkt im Quelltext mit Testwerten befüllst und erst danach dich um vollständige Eingabe, Ausgabe oder sogar GUI kümmern.

mfG igo

8

Avatar von 8

Anmeldungsdatum:
9. Mai 2010

Beiträge: 6

auch auf die gefahr hind as da andere ganz anderer meinung sind... ich habe bisher grundlegende java, c und pascal/dephi/lazarus kentnisse... meiner ansicht nach wäre es für dich am einfachstem mit lazarus zu bewerkstelligen... zwar ist es mit c oder delphi sicher ein übersichtlicher quellcode, aber pascal mit lazarus ist irgendwie echt am anfang viel einfacher zu verstehen... habe eine abc-analyse auf pascal geschrieben und war nach 10 stunden fertig, obwohl ich so gut wie keien vorkenntnisse hatte (hab ziemlich lange gebrauch tum das bubblesort richtig hin zu bekommen) möglich ist das projekt sicher mti fast jeder programmiersprache aber c z.b. ist vermutlich ungeeignet, da der große vorteil bei c, meiner ansicht nach, eigentlich eher in der performance, der großen möglichkeiten und der kurzen schreibweise liegt...

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Ich denke in Perl oder Ruby kannst du das ganze Problem in ein paar DIN-A4-Seiten Code lösen.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@8: Alleine das Du Bubblesort selbst implementieren musstest ist eigentlich schon der Gegenbeweis für Deine Aussage Delphi/Lazarus sei einfach. Von einer modernen Programmiersprache würde ich erwarten das sie bereits einen (effizienteren!) Sortieralgorithmus bereitstellt. Selbst C hat Quicksort in der Standardbibliothek.

Wenn man sich auf das Problem konzentrieren möchte, sollte man keine Programmiersprache verwenden, bei der man sich um Speicherverwaltung selbst kümmern muss, oder grundlegende Datenstrukturen und Algorithmen nicht mit der Standardbibliothek geliefert werden.

@EmoJoe: Java ist sicher nicht ungeeignet. Ich persönlich würde eher zu einer dynamischen Sprachen wie Python oder Ruby greifen.

Was die GUI angeht: Teil Dein Projekt in "Milestones" ein wo am Ende auch eine GUI vorgesehen ist, gehe aber davon aus, dass der Teil nur dann implementiert wird, wenn noch genug Zeit übrig bleibt – also wahrscheinlich gar nicht. 😉 Wenn Du schön darauf achtest, dass die Programmlogik und die Benutzerinteraktion sauber getrennt sind, kann man die Schnittstelle zum Benutzer einfach austauschen.

8

Avatar von 8

Anmeldungsdatum:
9. Mai 2010

Beiträge: 6

Marc 'BlackJack' Rintsch schrieb:

@8: Alleine das Du Bubblesort selbst implementieren musstest ist eigentlich schon der Gegenbeweis für Deine Aussage Delphi/Lazarus sei einfach. Von einer modernen Programmiersprache würde ich erwarten das sie bereits einen (effizienteren!) Sortieralgorithmus bereitstellt. Selbst C hat Quicksort in der Standardbibliothek.

Wenn man sich auf das Problem konzentrieren möchte, sollte man keine Programmiersprache verwenden, bei der man sich um Speicherverwaltung selbst kümmern muss, oder grundlegende Datenstrukturen und Algorithmen nicht mit der Standardbibliothek geliefert werden.

@EmoJoe: Java ist sicher nicht ungeeignet. Ich persönlich würde eher zu einer dynamischen Sprachen wie Python oder Ruby greifen.

Was die GUI angeht: Teil Dein Projekt in "Milestones" ein wo am Ende auch eine GUI vorgesehen ist, gehe aber davon aus, dass der Teil nur dann implementiert wird, wenn noch genug Zeit übrig bleibt – also wahrscheinlich gar nicht. 😉 Wenn Du schön darauf achtest, dass die Programmlogik und die Benutzerinteraktion sauber getrennt sind, kann man die Schnittstelle zum Benutzer einfach austauschen.

ich habe nicht gesagt das ich bubblesort selbst implementieren musste... ich wollte "alles" selbst machen da ich das programm geschrieben habe um programmieren zu lernen... wenn ich den threadersteller richtig verstanden habe will er programmieren lernen und ich glaube das geht mit lazarus einfahc sehr gut... außerdem bin ich der ansicht das wenn man in die prgrammierung einsteigt sich auch ruihg mit speicherverwaltung außeinander setzen sollte... das das ganze projekt mit python schnell und einfach zu machen ist mag ja sein... aber er will sich mit dem projekt ja warscheinlich aufs studium oder ähnliches vorbereiten... dann würde ich eben empfehlen das ganze mit lazarus zu machen...

Antworten |