![]() |
Re: Kompilierender Matheparser
Zitat:
Code:
; also unter uns gesagt ist i die Wurzel aus minus 1; ist nicht korrekt so, aber so lässt sich's leicht verstehen. Wenn du mehr dazu wissen willst, such einfach mal bei Google:
i^2 = -1
[google]Gauss'sche Zahlenebene[/google] [google]Imaginäre Einheit[/google] [google]Resonanz+Schwingkreis+Formel[/google] Dust Signs |
Re: Kompilierender Matheparser
Zitat:
Delphi-Quellcode:
Schreibt man es statt dessen in Klammern: (1*2) dann klappt es.
Parser:=TExCQParser.Create;
Parser.SolveMode:=smVM; Parser.PreSolve:=false; Parser.RegisterVariable('Range'); Parser.SetVariable('Range',[10]); Parser.Parse('1*2'); ShowMessage(FloatToStr(Parser.Solve.X)); Parser.Free; Hier scheint es also ein generelles Problem zu geben, wenn PreSolve false ist. Da ich den Variablen erst später einen Wert zuweise, aber die Formeln schon bei Programmstart kompiliere, bin ich auf PreSolve false angewiesen :( |
Re: Kompilierender Matheparser
Zitat:
Ich denke mal Dax hat das so eingebaut :) \\edit: Er macht also im Grunde aus "(x*2)+(sin(pi/2)*2)" --> "x*2+2" |
Re: Kompilierender Matheparser
Ich kam zwar noch nicht zum Testen. Aber der Code gefällt mir, wirklich hübsch geschrieben. :)
Das wollte ich nur mal loswerden... btw: Nach all dem Zitat:
Zitat:
|
Re: Kompilierender Matheparser
Zitat:
PS: Zitat:
read you, Dax |
Re: Kompilierender Matheparser
Zitat:
Dust Signs |
Re: Kompilierender Matheparser
Huhu :)
Also, hab den Fehler gefunden und korrigiert, danke ;) :arrow:
Delphi-Quellcode:
ThisThread.NewVersion; :mrgreen:
procedure ThisThread.NewVersion;
begin WriteLn('Korrigierte Version ist oben ;-)'); end; Zitat:
read you, Dax |
Re: Kompilierender Matheparser
weisst du, was genial wäre? wenn der parser gleichungen (bzw. eine seite einer gleichung) lösen (bzw. vereinfachen) könnte.
nur als kleine anregung :) |
Re: Kompilierender Matheparser
Sag mal ein konkretes Beispiel, dann überleg ichs mir :)
read you, Dax |
Re: Kompilierender Matheparser
(aus der heutigen mathe-hausafgabe, was aber REIN GAR NICHTS zur sache tut :mrgreen: )
(lg(x))² - lg(4x-4) = 0 jetzt eben entweder komplett nach x auflösen, so dass zum schluss L={x;y} dasteht oder die linke seite so weit wie möglich vereinfachen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 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