ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
820
820
EMPFEHLEN
-
30.11.09 19:18 #1
- Registriert seit
- Feb 2008
- Beiträge
- 522
Hi
ich weiß nicht wer von euch den Taschenrechner TI89 kennt (großes teures Gerät). Unter den bestimmt 1000 Funktionen die er besitzt, interessiert mich "solve()", eine Funktion um Gleichungen zu lösen. Ich würde die Funktion gerne nachbauen.
Die Syntax von solve sieht so aus:
Code :1 2 3 4
solve(gleichung, variable/n) //Beispiele solve(x^2+4*x = 2,x) solve(t^3+^t2 = 5*t,t)
Ich könnte jetzt ja auf 2 herangehensweisen versuchen, diese Gleichung zu lösen.
a) Alle Variablen auf eine Seite stellen
b) Einfach einsetzten und gucken wann es stimmt.
Zu a)
Das Problem bei a) wäre meiner Meinung der Funktion die Rechenregeln mitzuteilen, sowie diese bei der Gleichungsumstellung zu programmieren:
In diesem Beispiel müsste ich jetzt den rechten Teil nach "x"en absuche, und dann den Rechenoperator davor(wenn es den nicht gibt, den danach) abchecken, und dann den komplenmentären für die linke Seite nutzen. Ich denke dass dies vom Programmieraufwand sehr aufwändig wäre (man denke an Sinus/Kosinus/e/potenzen,Wurzeln...), auch wenn es am Ende die "schönere" Variante wäre.Code :1
solve(5=7+x,x) // Alle "x" auf die linke Seite bringen
Zu b)
Mein Ansatz bei b) wäre alle Variablen (x) durch Zahlen zu ersetzen und dann zu überprüfen, ob die Variable erhöht oder erniedrigt werden muss. Zwar unschöner, und vielleicht rechenintensiver, aber ich denke vom Programmieraufwand auf jeden Fall einfacher.
Code :1 2 3 4 5 6 7 8 9 10
solve(2+x=9,x) //Berechnung i = 1; if( 2+i == 9 ) return i; ... //i = 7 if( 2+i == 9 ) return i; if( 2+i > 9 ) // -> i - 0.5
Was meint ihr dazu? Habt ihr Ideen? Welche Programmiersprache wäre am besten geeignet?Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
Die Naz!s trugen braune Hosen ...
-
30.11.09 21:53 #2Thinker Tutorials.de Gastzugang
zu b) würde ich nicht blind einsetzen, sondern zum Beispiel das Newton-Verfahren (http://de.wikipedia.org/wiki/Newton-Verfahren) verwenden, damit kommst du relativ schnell zu einer Lösung. Du mußt vorher nur die Gleichung auf die Form ... = 0 bringen und das ist ja relativ einfach, solange es sich um ein Polynom handelt. Dafür mußt du allerdings Ableitungen bestimmen, etc.
-
30.11.09 22:24 #3
- Registriert seit
- Feb 2008
- Beiträge
- 522
Hi
das mit den Ableitungen ist eine gute Idee, da bin ich gar nicht drauf gekommen. Ich müsste also den zu berechnenden String nach x^n durchsuchen, und durch n*x^n-1 ersetzen. Bliebe nur noch das Problem wenn ich auf beiden Seiten der Gleichung ein x habe. Aber echt super Idee!Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
Die Naz!s trugen braune Hosen ...
-
01.12.09 00:13 #4Thinker Tutorials.de Gastzugang
Naja, du wirst die Gleichung irgendwie normalisieren müssen, da hast du recht. Auf beiden Seiten x mit der Form "x +4 = 2x - 8" ist ja noch einfach, man kann ja durch Vorzeichen umdrehen das auf die andere Seite ziehen. "x+4 -2x +8 = 0" ist für den Computer genauso lösbar.
Aber im Ernst, wenn das mehr als ein Gedankenspiel ist, zum Beispiel Teil eines größeren Programms, dann würde ich nach einer passenden Bibliothek Ausschau halten, das hat _sicher_ schonmal jemand implementiert.
-
Um die Gleichung analysieren zu können, musst du erst einmal einen Syntaxbaum erstellen, mitt dessen Hilfe du dann auch bestimmen kannst, ob und wie du die Gleichung umformen kannst; es bleibt dir überlassen, ob du dich auf Polynome beschränkst oder zusätzliche Funktionen, eventuell nur für konstante Ausdrücke, mit berücksichtigen willst.
Jedenfalls wünsche ich dir viel Erfolg bei dieser Fleißarbeit.
Ähnliche Themen
-
[C] Gleichungen lösen - Equation Solver
Von killerkirsche im Forum C/C++Antworten: 32Letzter Beitrag: 03.05.10, 21:59 -
effektiver algorithmus zum lösen von gleichungen
Von thomy800 im Forum JavaAntworten: 4Letzter Beitrag: 04.02.08, 00:26 -
Gleichungen in Variablen speichern !
Von GartenUmgraben im Forum .NET CaféAntworten: 5Letzter Beitrag: 04.05.06, 18:56 -
Mathe: Lösen von lin. Gleichungen in C#? Gauß?
Von xaitech im Forum .NET CaféAntworten: 4Letzter Beitrag: 06.02.06, 14:02 -
Quadratische Gleichungen zeichen?
Von Schatti im Forum JavaAntworten: 5Letzter Beitrag: 14.12.03, 22:34





Zitieren
Login





