![]() |
Differenzieren??
Hallo ich bin's mal wieder!
Wir sollen uns nun für die Schule die Woche über mit Differnzieren von Gleichungen beschäftigen. Leider habe ich im Moment überhaupt keinen Ansatz. Wir sollen das in etwa so machen: Der Nutzer soll z.B. eine f(x)=mx²+c Funktion eingeben und daraus vom Programm in y:=m*x*x+c; umgewandelt werden. |
Re: Differenzieren??
Zitat:
f(x)=mx^2+c -> f'(x)=2mx Wenn mich meine Mathekenntnis nicht ganz verlassen haben. Grüße Klaus |
Re: Differenzieren??
Ich glaube, er meint nicht "differenzieren" (was ja ableiten heißen würde), sondern parsen.
|
Re: Differenzieren??
Wie kommt man von "parsen" bzw. "Gleichung auseinanderziehen" zu "differenzieren"? ôO
|
Re: Differenzieren??
Ich glaube er meint, er muss eine Funktion parsen, um sie differenzieren zu können.
Ich weiß nicht wie weit ihr seid, aber wenn ihr am Anfang seid würde ich ein paar Edits hinklatschen. m*x^n+c Ein Edit für m, ein Edit für n und ein Edit für c. Oder aber nur ein Edit und du parst es. Musst aber bei bedenken, dass es passieren kann, dass jemand Vorzeichen verwendet, Mal-Zeichen weglässt. Das wird sicher lustig und ein Haufen Arbeit. :D |
Re: Differenzieren??
Danke ersteinmal! Ja ich hatte mich wohl ein bisschen falsch ausgedrückt.
So ist's richtig: 1. nur ein Editfeld (z.B. f(x) = x^2 soll rein) 2. dann parsen, damit mit eingesetzten x-Werten rechnen kann 3. dann Ableitungsfunktion (in dem Fall f'(x) = 2x) Hierbei ist mir eigentlich nur ein Denkanstoß wichtig, um aus 'f(x) = x^2' im Programm etwas rechenbares zu machen. Schritt 3 kann ich dann alleine. |
Re: Differenzieren??
Zitat:
Auf Kleinschreibung umstellen LowerCase und Leerzeichen entfernen (Trim?). Dann hast du es erstmal einfacher. *-Zeichen könntest du auch entfernen, wenn nicht jemand eingibt f(x) = 2x + (3 * 2). Dann suchst du mittels Pos X. Wenn X Pos1 ist, ist m (mx+n) = 1, wenn X An Position 2 ist, dann prüfst du, ob die 1. Position - ist (das wäre dann -x + ...). In dem Falle wäre m - 1. Wenn das alles nicht zutrifft ist m der Wert, der vor dem X steht. Ganz einfach und umständlich. :D |
Re: Differenzieren??
Mögliche Denkanstöße:
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Bäume sind berechenbar Rekursiver Formel-Parser mit Baumstruktur Harald Lipke Know-how, Binärbaum c't 12/89, S. 250 (it) Suchwörter für Yahoo/Google: Formelparser, Formelauswerter, (mathematical expression parser, Matheparser, Formelparser Hoffe geholfen zu haben. Tom |
Re: Differenzieren??
Ich habe auch schon mal irgendwann sowas geschrieben. Vorgegangen bin ich damals in etwa so:
- Operatorenreihenfolge feslgegen - Operator mit der höchsten Priorität in dem String suchen - Als Wurzel in einen Baum einfügen - Reststrings (je nach parameteranzahl des Operators/der Funktion) als Child-Knoten eingefügt - das ganze für die Kinder und alle anderen Operatoren wiederholen - Nachdem alles aufgeteilt wurde in der untersten Ebene anfangen zu berechnen Wesentlich einfacher wird das ganze, wenn du nur wenige Operatoren und möglichst mit gleicher Parameteranzahl nimmst. Noch einfacher ist es, wenn du PostFix-Schreibweise für Funktionen/Operatoren vorgibst :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz