![]() |
[Java] Gleichung lösen
kennt wer eine klasse um eine gleichung zu lösen.
nicht jetzt aus zb x^2+3x-4=0 das x rausrechnen, sondern man gibt einen wert fürs x vor, welcher dann für x eingesetzt wird, woraus dann ein wert erechnet wird. in einem string wird als zb "x^3-(4x+3x^4)^2" geschrieben, dann einen wert, zb 5, für x einsetzen, und man bekommt das ergebnis. es wär um einen graphen einer funktion zu zeichnen. |
Ich würde das ganze selber schreiben:
Code:
privat static float calculateEquation(float x, int a, int b, int c, int d){ Wenn du unbedingt einen String als Eingabe willst wird es mühsamer. Jak <edit> P.S.: Vielleicht hilft dir auch der Quelltext des Applets auf dieser Seite weiter:http://home.arcor.de/rolf.mossbach/J...n.Applet1.html </edit> |
hab schon versucht das selber zu schreiben.
es handelt sich um ein programm, bei dem man in ein textfeld funktionen beliebiger ordnung eingeben kann. die funktionen kann man dann in einer liste verwalten, und den graphen dazu in einem bestimmten intervall zeichnen lassen. aber eine funktion in einem string durchzuparsen, mit allen möglichkeiten einbezogen, das is ned grad einfach. die funkton könnte ja "x^3+4-((x^4+3)^3-x^2)/6" heißen. wurzeln müsste man auch miteinbeziehen. |
In einer eigenen Klasse könntest du auch gleich die Parsfunktion verpacken ;).
|
jo, hab schon eine eigene klasse geschrieben, sozusagen eine utility-klasse, ganz banal mal "Equation" genannt. aber das parsen so einer funktion ist echt nicht einfach.
gibts vielleicht ein paar tipps, wie man sowas lösen könnte? man muss ja der klasse quasi das rechnen beibringen, mit allen punkt-vor-strich und klammer-regeln. ziel wäre es, alle operationen bis auf addition und subtraktion zu lösen, so dass dann ein string der form "9.87-234.5+123-0.815" überbleibt. um die dann auszurechnen, müsste man die zahlen inklusive vorzeichen aufteilen, und addieren. aber wie kommt man von einer komplexen funktion beliebiger ordnung, mit klammern, wurzeln usw. auf eine form wie obige? |
Wurzeln kann man auf jeden Fall als Bruch-Hochzahlen schreiben.
(ich glaube das das Math.pow auch kapiert). Das parsen des Strings ist aber auf jeden Fall kompliziert. Ich würde das ganze zuerst einmal nach fallenden Potenzen von x sortieren, danach wird der String bei jedem Plus (minus wird dafor in +- umgewandelt) aufgeteilt (da ist dann aber das Problem mit den Klammern. Vielleicht kann man die ja vorher auflösen???). Jak |
ähm... vielleicht seh ich das jetzt viel zu einfach... vielleicht denkt ihr aber auch zu kompliziert...
wenn ich zb eine glchg hab: PHP-Code:
das würde oben zb rauskommen: PHP-Code:
edit: mir fällt gerade ein, wenn ich verschachtelte klammern hab, ist das doch nicht so einfach... naja vielleicht hilfts ja trotzdem irgendwie weiter :lol: :rolleyes: man müsste das vielleicht so machen, dass man die ausdrücke immer in der form (x)^(y) schreibt und die klammern zählt, also wenn es (((x)))^(y) ist, dass er das nicht als (x)))^(y) nimmt... oh gott... ich hoffe das ist jetzt nicht zu wirr geschrieben, aber ich hab leider wichtigeres zu tun - MATHE *heul* |
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag