Ein Praktikum an der Universität Leipzig.
|
|
---|---|
Praktikant | Hannes Schulz |
Aufsicht und Anleitung | M. Meiler und A. Zerbst |
Zeitraum | 19. bis 25. 2. 2001
|
Inhaltsverzeichnis | |
> Aufgabenstellung
> Programmiersprache > Vorüberlegungen > Lösung der Aufgabe > Erweiterungen > Bemerkungen zum Praktikum |
Aufgabenstellung | |
---|---|
Es war ein Programm zu erstellen, welches einen gegebenen vollständig geklammerten Term-String in seine Bestandteile zerlegt, nach den bekannten Regeln differenziert und ausgibt.
|
|
Programmiersprache | |
Es wurde in C programmiert.
| |
Vorüberlegungen | |
Beschreibung der Syntax
Die Beschriebung von "Term" anhand des Anfangszeichens:
f(x) = (x^3) f'(x) = (3*(x^2)) -- wohl aber hier: f(x) = (x^sin x) f'(x) = [Programm ausprobieren!!!] |
|
Lösen der Aufgabe | |
Der vollständig geklammerte Term wird aufgegliedert, indem man sein Ende bestimmt. Stimmt dieses mit '\0' überein ist die Bearbeitung abgeschlossen. Sonst werden die äußeren Klammern entfernt und es wird nach den oben aufgeführten Regeln mit der Bearbeitung fortgefahren, bis entweder alle Klammern aufgelöst sind, oder sich ein neues Hauptverknüpfungszeichen findet. f(x) = ((3+x)*(x^2)) Hauptverknuepfungszeichen = '*' Term u = 3+x ; u' = 1 Term v = x^2 ; v' = 2*x Regel: wenn f = u * v dann ist f' = u' v + u v' f'(x) = ((x^2) + ((3+x)*(2*x)))
Mit den evtl. vorhandenen Teiltermen wird durch rekursiven Aufruf genauso verfahren. Ersetzen wir z. B. a = (3+x) mit a = ((3+x)^2), so wird die Ableitung a' durch einen erneuten Aufruf der Funktion gebildet, die wiederum das Hauptverknüpfungszeichen (hier '^') sucht und geeignete Operationen anwendet (Da das Auflösen nach dem Pascalschen Dreieck noch nicht implementiert wurde käme hier die Kettenregel zum Einsatz.).
|
|
Erweiterungen | |
Es stellte sich heraus, daß eine Funktion zum Vereinfachen der Gleichungen günstig ist, da die differenzierte Funktion sonst in einem Chaos von Klammern untergeht, welche zwar richtig sein mögen, aber unnötig sind. Die Abgeleitete Funktion wird dadurch übersichtlicher.
Wichtige Vereinfachungen:
|
Das Programm war ursprünglich als Übungsaufgabe für Studenten angedacht. Ich durfte mich sozusagen schon im Voraus damit beschäftigen. Es wurde in der Auswertung beschlossen, dass die Aufgabe zu schwer für Studenten in den ersten Semestern sei.
Um meine eigenen Leistungen zu relativieren möchte ich hinzufügen, dass Herr Zerbst mit programmiererischem (Über-) Eifer meist schon einen Schritt weiter als ich war. Mein ursprüngliches Programm ist nur noch in wenigen Fragmenten enthalten, einige Ideen wurden übernommen.
Der Hauptteil meiner Arbeit bestand nun darin, das sich ständig weiterentwickelnde Programm zu verstehen und zu ergänzen.
Was lernen wir daraus: Eine klare Aufgabenteilung ist bei solchen Projekten wichtig.
Den kurzen Zeitraum habe ich voll ausgenutzt um meine mathematischen Grundkenntnisse und mein Wissen über Stringverwaltung in C zu erweitern.
Ich bezeichne das Praktikum daher als Erfolg und rate jedem, der in dieser Richtung Ambitionen hat sich an der Universität Leipzig nach einem Praktikumsplatz zu erkundigen.
< Zurück nach oben