WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 02.11.2003, 12:29   #1
moorhahn
Veteran
 
Registriert seit: 26.12.2000
Beiträge: 489


moorhahn eine Nachricht über ICQ schicken
Standard [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.
____________________________________
Wenn Null ganz besonders gross ist, ist es schon fast so viel wie ein kleines bisschen Eins... - (Kommentar zum Thema Rundungsfehler bei Fliesskommazahlen).
moorhahn ist offline   Mit Zitat antworten
Alt 02.11.2003, 15:50   #2
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Ich würde das ganze selber schreiben:
Code:
privat static float calculateEquation(float x, int a, int b, int c, int d){
return (a*Math.pow(x,3)+b*Math.pow(x,2)+c*x+d);}
Die Funktion wird für gleichungen höherer Ordnung einfach überladen.

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>
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 02.11.2003, 16:31   #3
moorhahn
Veteran
 
Registriert seit: 26.12.2000
Beiträge: 489


moorhahn eine Nachricht über ICQ schicken
Standard

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.
____________________________________
Wenn Null ganz besonders gross ist, ist es schon fast so viel wie ein kleines bisschen Eins... - (Kommentar zum Thema Rundungsfehler bei Fliesskommazahlen).
moorhahn ist offline   Mit Zitat antworten
Alt 02.11.2003, 19:02   #4
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

In einer eigenen Klasse könntest du auch gleich die Parsfunktion verpacken .
____________________________________
Was ist klein, grün und dreieckig?
Ein kleines grünes Dreieck!


Bahnübergänge sind die härtesten Drogen der Welt! Ein Zug und du bist weg!
Tarjan ist offline   Mit Zitat antworten
Alt 02.11.2003, 22:49   #5
moorhahn
Veteran
 
Registriert seit: 26.12.2000
Beiträge: 489


moorhahn eine Nachricht über ICQ schicken
Standard

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?
____________________________________
Wenn Null ganz besonders gross ist, ist es schon fast so viel wie ein kleines bisschen Eins... - (Kommentar zum Thema Rundungsfehler bei Fliesskommazahlen).
moorhahn ist offline   Mit Zitat antworten
Alt 03.11.2003, 16:16   #6
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

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
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 03.11.2003, 18:40   #7
heli2sky
Master
 
Registriert seit: 02.10.2001
Alter: 38
Beiträge: 523


heli2sky eine Nachricht über ICQ schicken
Standard

ähm... vielleicht seh ich das jetzt viel zu einfach... vielleicht denkt ihr aber auch zu kompliziert...

wenn ich zb eine glchg hab:
PHP-Code:
(x^(5-2)-7)/6^(1/2)+2^
da kann ich doch einfach die zeichen ^ usw ersetzen lassen, sonst aber alles gleich lassen, dann hab ich keine probleme mit den rechenregeln . vor - usw, weil die ja eh gleich bleiben...

das würde oben zb rauskommen:
PHP-Code:
(math.pow(x,(5-2))-7)/math.pow(6,(1/2))+math.pow(2,4
ob ich jetzt alles genau richtig hab weiß ich nicht, aber vom denkansatz müsste das doch stimmen, oder nicht??

edit: mir fällt gerade ein, wenn ich verschachtelte klammern hab, ist das doch nicht so einfach... naja vielleicht hilfts ja trotzdem irgendwie weiter
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*
____________________________________
Lang ist der Weg durch Lehren, kurz und wirksam durch Beispiele.
Lucius Annaeus Seneca


...:::www.modellbaulexikon.org:::...

www.acrobat-se.org | www.ams-8c.de.vu
heli2sky ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:40 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag