gauss.c
|
Programm, welches die Ablaufgeschwindigkeit eines sequentiellen Algorithmus und des Gauß-Verfahrens
zur Berechnung der Summe einer Reihe mit n Elementen misst und miteinander vergleicht.
Weiterführende Erklärungen zur Konstruktion und zur Analyse beider Algorithmen gibt es auf
meiner Programmieren-Seite genau hier.
|
euklid.c
|
Das Programm soll ein Ablaufbeispiel der verschiedenen Versionen des Euklidischen Algorithmus
darstellen. Dabei werden Schleifendurchläufe und Rekursionsaufrufe gezählt und bei Angabe der
Compileroption -DTEST (gcc) auch die Zwischenschritte ausgegeben. Die zugehörige
Beschreibung ist auf der Programmieren-Seite zu finden:
Euklidischer Algorithmus.
|
horner.c
|
Vielfache Aufgabe in der Mathematik ist die Berechnung der Summe eines reellen Polynoms. Anstatt mit
der Brechstange vorzugehen, verdeutlicht das Horner-Schema, wie man es auch effizienter lösen kann -
nämlich mithilfe rekurrenter Beziehungen und in unserem Fall mit rekursiven Funktionsaufrufen.
Die zugehörige Beschreibung ist wieder auf der Programmieren-Seite zu finden:
Das Horner-Schema.
|
elem_sort.c
mess_sort.c
|
Um die elementaren Sortierverfahren nicht ganz außer Acht zu lassen und als Übung für mich habe
ich dem interessierten Leser diese zwei Programme gecodet. Da die 4 Sortierverfahren insertion und selection sort,
bubblesort und shellsort allerdings durch Kommentare gut beschrieben sind, kann man sie auch wunderbar
für das Selbststudium benutzen.
elem_sort.c gibt einem die Möglichkeit, eines der Sortierverfahren
auszuwählen, um eine zufällige Permutation zu sortieren. mess_sort.c
hingegen misst die Zeit, die jeder Sortieralgorithmus für sich benötigt, um eine große Anzahl
von Elementen zu sortieren (Anzahl der Elemente muss mit MAX_N möglicherweise angepasst werden).
|
quicksort.c
|
quicksort.c ist ein Programm, welches den klassischen Quicksort-Algorithmus
sowie diverse Variationen dazu implementiert und die Zeiten misst, die jeweils zur Abarbeitung benötigt werden.
Einen entsprechenden ausführlichen Text zu den Modifikationen kann man auf der
Coding-Seite einsehen, ich wünsche viel Spaß!
|
nikohaus.c
|
nikohaus.c stellt eine programmiertechnische Umsetzung des altbekannten "Haus vom Nikolaus"
dar. Dabei werden alle Möglichkeiten und Sackgassen ausgegeben, die es zur Konstruktion des Nikohauses gibt. Weitere Informationen
erhaltet ihr durch den zugehörigen Artikel: Nikohaus.
|
simpleNet.zip (v0.5)
simpleNet_prog.zip (v0.5)
simpleNet_prog_ausw.zip (v0.7)
simpleNet_prog_opt.zip (v0.7)
simpleNet_v0.6.zip (v0.6)
simpleNet_v0.7.zip (v0.7)
|
Bei der C++-Klasse simpleNet handelt es sich um die Implementierung eines einfachen vorwärtsgerichteten
Backpropagations-Netzes (siehe auch hier) und kann von anderen
Programmierern für ihre Software-Projekte benutzt werden (eine Dokumentation liegt bei).
simpletNet_prog ist eine praktische Anwendungsmöglichkeit der Klasse. Das Netz lernt dabei x Epochen
lang die 10 Dezimalnummern, als digitale Ziffern dargestellt. Im Anschluss daran erkennt es Ziffern,
bei denen selbst 2 oder mehr Pixel verfälscht sind, korrekt - ordnet die digitale Darstellung also
richtig der entsprechenden Dezimalziffer zu.
simpleNet_prog_ausw lernt wie simpleNet_prog die 10 digitalen Ziffern, gibt
aber den quadratischen Fehler des Netzes bei x Iterationen für versch. Lernraten und Impulsfaktoren zurück.
simpleNet_prog_opt liefert die optimale Lernrate bei Impulswerten von 0 bis 0.9 zurück.
|