Autor Beitrag
tvyx
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 29.05.05 15:43 
Hi!

Ich würd gern ein Programm schreiben, das Formeln umstellen kann, also z.B. x+5=0 nach x auflöst. Wie könnte ich das machen? Hab bis jetzt keinen blassen Schimmer wie ich da vorgehen kann.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 29.05.05 15:53 
* Irgendwelche spezielle Formeln, oder ganz allgemeine?
* Brauchst du einfach das Resultat oder brauchst du den symbolischen Ausdruck?
tvyx Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 29.05.05 18:44 
Ja, also ...
Der formelle Ausdruck wäre schon von Vorteil. Man kann ein und dieselbe Formel ja auf verschiedene Weisen darstellen, z.B.: x*y=z <=> x=z/y <=> (x*y)/z=1 (1=eins) usw.
Wenn man nun diese vielen verschiedenen Darstellungsweisen hat, würde ich sie gerne alle in die gleiche Form umstellen. Dabei müsste man wohl, denk ich mir, nach einem bestimmten System vorgehen, um letztlich immer wieder zum gleichen Ergebnis zu gelangen.
Dieses System ist noch nicht mein eigentliches Problem (das kommt später), sondern es geht mir erstmal um das Umformen im Allgemeinen. Die Formeln werden wohl auch etwas länger werden, wobei jede Variable maximal quadratisch vorkommt.
Wäre schön, wenn mir jemand erzählen könnte wie das geht.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 29.05.05 20:17 
Erzählen wie das geht? So einfach ist das nicht und es gibt auch nicht eine eindeutige Lösung zu deinem Problem!

Ich denke, wenn du das nicht über eine Library tun willst musst du dir das meiste selbst zusammendenken. Du musst dir jedenfalls mal eine Datenstruktur ausdenken, z.B. eine Baumstruktur, um deinen Ausdruck irgendwie sinnvoll zu speichern.
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Di 31.05.05 14:50 
Am besten überlest Du, was Du selber machen würdest.

1) Zuerst möglichst alle Terme mit der Variablen nach der Du auflösen möchtest auf eine Seite und Terme in denen diese Variable vorkommt auf die andere Seite.

2) Nun musst du möglichst ausklammern oder kürzen damit der Term einfacher wird eventuelle auch noch Potenzgesetze logharitmen etc. beachten

3) jetzt sollte der Term soweit fertig sein, dass du über bestimmte Kontrollvariablen eine Einordnung starten kannst (z.B höchste x-Potenz gemischte Terme mit Sinus,Cosinus etc.? (Diese lassen sich analytisch sowieso nicht immer auflösen)) und anschließend entsprechend des Ergebnisses entsprechende Fromeln anwenden (p,q)

Mein Tipp: probier sowas numerisch zu nähern, da du dann auch beziehungen wie x²+arcsin x =6 lösen kannst.
tvyx Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Fr 03.06.05 14:04 
Das System, wie ich eine Gleichung umstelle, ist nicht das Problem. Meine Frage ist allgemein, wie ich eine Gleichung mit Hilfe von Delphi umstellen kann. Wie kann man zum Beispiel aus x-1=0 ---> x=1 machen? Wie sieht der Quelltext dazu aus?
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Fr 03.06.05 17:01 
Das Problem lässt sich nicht vereinfacht mit Delphi lösen. Delphi ist kein TI-89 Taschenrechner.
Wenn du sowas tun willst, wirst du dir alles selbst ausdenken müssen (ausser du verwendest eine Library o.ä.). Das heisst, du überlegst dir selbst, wie du den String "1+x=" analysierst (parst), die Informationen in eine spezielle Datenstruktur (z.B. Baum) bringst; und wie du Operationen darauf definierst. Der Source ist dann vielleicht ein Tausend Zeilen lang. Und es gibt sicherlich zig Möglichkeiten, sowas zu realisieren.
blocade
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Mi 08.06.05 17:32 
k.a. ob du in der gleichung auch sinus oder cosinus ausrücke drinne haben willst, aber mal angenommen, du willst es nicht, dann kannst du ja einfach die allgemeine formel:

ax² + bx + c = 0 nehmen.

und dann kann der benutzer einfach die werte für a; b und c eingeben!?
dann kannst du ja noch fallunterscheidung machen. wenn a = 0 ist, rechnest du in deinem programm dann einfache:
x = -c / b

wenn a <> 0 ist, musst du es einfach allgemein lösen ...