![]() |
Termumformung
Hallo,
ich habe eine Frage für mein Informatik-Projekt. Ich schreibe einen Funktionsparser mit Graph zeichnen, basierend auf der umgekehrten polnischen Notation. Zurzeit erarbeite ich mir die Theorie dazu. An sich kein Problem, doch jetzt bin ich am überlegen, wie kann man denn einen Term (in der UPN-Form) nach einer Variable umformen? Geht das Überhaupt? Beispielsweise zur Berechnung der Nullstelle einer Funktion? :?: infix: y = 2 * x + 2 0 = 2 * x + 2 x = (0 - 2) / 2 x = -1 postfix: y = 2 x * 2 + 0 = 2 x * 2 + x = :?: x = -1 |
AW: Termumformung
0 2 - 2 /
fällt bestimmt auf, wenn du die anderen Klammern so setzen würdest, wie es die Rechenreihenfolge vorgibt 2 * x + 2 = (2 * x) + 2 |
AW: Termumformung
Prinzipiell müsste das genau so gehen wie bei der Infix-Notation.
Delphi-Quellcode:
ist ja letztlich nur eine andere Schreibweise für
2 x * 2 +
Delphi-Quellcode:
, ergo müsstest du das genau so auflösen können, indem du dich von der äußersten Schicht zur inneren Schicht durcharbeitest und jeweils die Gegenoperationen ausführst.
((2*x) + 2)
Zumindest bei dem Beispiel klappt es. Das automatische Auflösen wird trotzdem nicht gerade eine einfache Aufgabe sein, da es oft mehrere Handlungs-Möglichkeiten gibt. Z.B. hätte man im 2. Schritt genau so gut durch X teilen können, was einen in diesem Fall natürlich nicht weiter gebracht hätte. Das ist natürlich nur dann der Fall, wenn für den jeweiligen Operator das Kommutativgesetz gilt, also hier bei + und *. Bei − und / z.B. macht die Reihenfolge ja durchaus einen Unterschied, da kann man sich nicht einfach aussuchen, welchen Operanden man rüberschiebt. Ich weiß ja nicht genau, wofür du das brauchst, aber eventuell wäre es sinnvoller, die Nullstellen nur über ein numerisches Verfahren wie das ![]() |
AW: Termumformung
Also ich hab früher einfach eine Iteration geschrieben, um die Nullstelle zu ermitteln. Newton und Regula Falsi fallen mir spontan ein.
|
AW: Termumformung
Vielen Dank für eure Hilfe.
Zitat:
|
AW: Termumformung
Mir fallen da gar lustige Probleme ein, wenn die Formel etwas größer ist.
In jedem Fall wäre eine analytische Lösung sehr elegant. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 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 by Thomas Breitkreuz