| | | | |
| | |
| Neuer Benutzer Registriert seit: 30.10.2011
Beiträge: 17
PHP-Kenntnisse: Anfänger ![]() | Hallo miteinander, ich habe zwei PHP-Skripte (einen Gleichungslöser und einen Funktionsplotter) geschrieben, die die vom Benutzer eingegebenen Terme auflösen/zeichnen. Nun möchte ich das Rechnen mit Potenzen ermöglichen (also z.B. die Eingabe x^5) und im Skript aus x^5 pow(x,5) machen. Ich hab auch schon einiges in diese Richtung recherchiert und allerdings noch nichts wirklich brauchbares/leicht zu verstehendes gefunden. Hat jemand eine Idee, wie das ganze auch funktioniert wenn der String länger ist als x^5. Mein Ansatz wäre gewesen mit explode auftrennen, allerdings funktioniert das bei längeren Strings nicht, da pow() dann den gesamten Ausdruck umschließen würde. BSP: 5+x^5*3 würde dann zu pow(5+x,5*3) werden anstatt zu 5+pow(x,5)*3. PHP-Code: http://simon-kysela.at/index.php?id=21 http://simon-kysela.at/index.php?id=25 mfg Geändert von tobi.u (28.01.2012 um 22:25 Uhr). |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() | Für so etwas braucht es einen Formelparser. z.B.: http://www.bestcode.com/html/math_parser_for_php.html (ungetestet, kurz gegoogelt)
__________________ Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot. |
| | |
| | ||
| Neuer Benutzer Registriert seit: 30.10.2011
Beiträge: 17
PHP-Kenntnisse: Anfänger ![]() | Zitat:
mfg | |
| | |
| | |
| Neuer Benutzer Registriert seit: 30.10.2011
Beiträge: 17
PHP-Kenntnisse: Anfänger ![]() | Klar ist das kein Profiskript, das solltest du aber auch nicht von mir erwarten. Das mit dem Quatsch solltest du aber nochmal überdenken, denn sehr viele professionellen Geräte arbeiten nach einem ähnlichen System. Ich nehme jetzt mal den TI-Voyage Taschenrechner (250€ Hochleistungsrechner mit CAS und allem drum und dran), da mir dieser vertraut ist, welcher unter anderem auch teilweise nach diesem System arbeitet. Vergleicht man die Ergebnisse meines Solvers mit den Ergebnissen des Voyages (im n-Solve-Verfahren) so kommt man immer auf das selbe, identische Ergebnis. (Natürlich ist die normaleingestellte Funktion des Voayage ein CAS und kein n-Solve-Verfahren). Das Skript hat nunmal hier und da Probleme mit endlosen Zahlen, x^x und ähnlichem und auch wenige, aber wie gesagte, da lässt sich kaum was dran ändern (-> Voyage) und damit kann ich auch leben Dass man von eval die Finger lassen soll, liest man ja doch öfters, ich habe aber selbst keine bessere Lösung gefunden und denke wenn man ordentlich die Benutzereingaben filtert ist es in Ordnung (zudem ist das ganze ja sowieso eine private Seite auf der es nicht sonderlich viel anzurichten gibt und ja ich kenne die Sprüche man solle sich nicht darauf verlassen, dass die eigene Seite zu unbekannt sei, als dass sie kein Interesse für Hacker weckt). EDIT: Btw der Solver kann sehr wohl mit rationalen und auch irrationalen Zahlen rechnen, ich habe ihn selbst hinreichend mit mathematischen Aufgaben bombadiert. Als Vergleich zum CAS löst der Solver z.B. die Gleichung x^x-x^4=x^(0.5) in weniger als einer Sekunde und der Voyage im CAS-Modus braucht für diese Gleichung über einer Minute. Dass das Skript bei dir nicht funktioniert, kann natürlich auch daran liegen, dass du eine falsche Eingabe machst, beispielsweise funktioniert die Schreibweise 5x nicht sondern muss krrekt mit 5*x geschrieben werden. (Die obige Gleichung muss derzeit so angeschrieben werden: pow(x,x)-pow(x,4)=pow(x,0.5), da wie gesagt das ^ nicht funktioniert.) Geändert von tobi.u (24.01.2012 um 00:16 Uhr). |
| | |
| | ||
| Neuer Benutzer Registriert seit: 30.10.2011
Beiträge: 17
PHP-Kenntnisse: Anfänger ![]() | Zitat:
Und das mag ja alles schön und gut sein, allerdings wäre mir ein Tipp in Richtung meines Problems hilfreicher. Ich habe in meinem ersten Post bereits einen Ansatz gepostet, auf dem man vielleicht aufbauen kann. ![]() | |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Funktionsgraphen zeichnen, Term einlesen | tobi.u | PHP Einsteiger | 1 | 30.10.2011 21:13 |
| [Erledigt] Variable in Funktion "header" einsetzen | ePole | PHP Tipps 2010 | 5 | 14.04.2010 14:52 |
| preg_replace() Reference in Pattern einsetzen? | hondatuner | PHP Tipps 2010 | 3 | 01.04.2010 01:21 |
| String parsen und Variablen/Array einsetzen? (\$ --> $) | dawn2k | PHP Tipps 2010 | 2 | 04.03.2010 21:59 |
| Prepared Statements immer einsetzen? | Sangreal | PHP-Fortgeschrittene | 10 | 19.10.2009 09:28 |
| Exceltabelle nun im Web einsetzen | phlyer | Datenbanken | 1 | 15.03.2009 19:04 |
| [Erledigt] bildquelle ermitteln und als variabel speichern und einsetzen | ld_forester | PHP Tipps 2008 | 8 | 27.08.2008 12:11 |
| [Erledigt] Smilies mittels str_replace einsetzen? | jackoff | PHP Tipps 2008 | 31 | 13.05.2008 21:48 |
| Zufallsgenerator sinvoll einsetzen | jesus666 | PHP Tipps 2006 | 8 | 24.06.2006 13:47 |
| Wann persistente MySQL Connections einsetzen? | HStev | PHP-Fortgeschrittene | 2 | 02.02.2006 13:14 |
| Array: Daten nur eimalig einsetzen | SvenLittkowski | PHP Tipps 2007 | 5 | 20.11.2005 23:44 |
| [PHP«Image] Bild in ein anderes Bild einsetzen | PHP Tipps 2005-2 | 4 | 07.08.2005 19:39 | |
| TPL System - Funktionen - Einsetzen - Rechte Problem | PHP Tipps 2005 | 4 | 26.03.2005 15:17 | |
| Problem beim Einsetzen von array_unique | PHP Tipps 2004-2 | 1 | 06.12.2004 09:07 | |
| Intro einsetzen ? | PHP Tipps 2004 | 2 | 05.08.2004 17:45 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| simon-kysela.at, simon kysela, php preg_match schräge striche, php script das gleichungen auflöst, www.simon-kysela-at |