Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Programm zur Ableitung (https://www.delphipraxis.net/168354-programm-zur-ableitung.html)

diavy 16. Mai 2012 21:30

Programm zur Ableitung
 
Hallo zusammen.

Da ich zZ etwas Praxis sammeln und üben möchte, und mein Repertoire in Sachen Delphi noch recht gering ist, bin ich allgemein auf der Suche nach Aufgaben.

Da hab' ich die Idee bekommen, ein Programm zur Ableitung einer Funktion zu schreiben, da das ja doch etwas ist was mehrere Gedankengänge erfordert und mich als Anfänger etwas fordern könnte.

Ich gehe mal davon aus, dass die Funktion als string eingelesen wird (bei einer Fraktion wollte ich die Funktion in 2 strings einteilen). Mein Problem ist es hierbei jedoch die Variabeln mit ihrem Exponenten und Faktoren zu "isolieren" (=die einzelnen Summanden).

Sprich wenn der Benutzer "5x^4 + 3x^2 - x^3 + 16" eingibt möchte/brauche ich 4 Strings:
1. 5x^4
2. 3x^2
3. -x^3
4. 16

Wie also kann ich den String in jene einzelne Summanden unterteilen?

Liebe Grüße

Aphton 16. Mai 2012 21:38

AW: Programm zur Ableitung
 
Hihihi, du hast da wohl noch gar nicht weiter gedacht :D

Wie willst du solche Funktionen lösen:
f(x) = (3x^4-2x+10)/(x-5)^2
?

(Nenner muss aufgelöst werden; weiters muss beim Ableiten die Quotientenregel (oder evt Andere) beachtet werden (darauf musst du auch noch erst algorithmisch kommen); im Nenner könnte wieder so ne Funktion stecken, was machste da? Rekursiv versuchen zu lösen?!)

Da reicht das einzelne Unterteilen nicht wirklich!

Aber du kannst dich ja für den Anfang mit Pos(), Copy() und Length() beschäftigen ;)

[Edit]
Ein Tipp: Als Anfänger würde ich mich erst mal an einfachere Dinge wagen. Du müsstest dazu nämlich nen ordentlichen Parser schreiben und soetwas ist nichts für Anfänger :P
Wag dich vlt zuerst einmal an das Auswerten einfacher Terme, damit du so auf den Geschmack kommst:

2^6 + 64^0.5 + 3*4 + 5 - 2! - log(5) + PI

Delphi-Laie 16. Mai 2012 22:34

AW: Programm zur Ableitung
 
Also, nur für Polynome halte ich das durchaus für machbar.

Zitat:

Zitat von diavy (Beitrag 1166857)
Wie also kann ich den String in jene einzelne Summanden unterteilen?

Indem die Additions-/Pluszeichen - die ja mathematisch die Summanden verknüfen und damit in gewisser Weise auch voneinander trennen - im String gesucht werden und die davor- / dazwischen- /dahinterliegenden Teile des Strings ausgewertet (evtl. vorher extrahiert bzw. separiert) werden. Die dafür nötigen Standardfunktionen für den Datentyp "String" sind in (je-?)der Delphihilfe leicht zu finden.

Ableitungen für alle möglichen Funktionen sind hingegen recht komplexe Probleme für Programme, die als Computeralgebrasysteme bezeichnet werden (obwohl solche Probleme genaugenommen nicht der Algebra, sondern der Analysis angehört).


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz