Gleichungssystemlöser, gibt's sowas?

Moin,

ich bin jetzt schon öfter über Probleme gestolpert, bei denen ich ein System recht gut und einfach über ein paar Gleichungen (auch Differentialgleichungen) beschreiben kann. Wenn ich mir aber das Verhalten des Systems veranschaulichen will, z.B. via Gnuplot, muss ich eine geradlinig berechenbare Lösungsformel haben. Diese zu gewinnen ist nicht immer einfach, nicht selten unmöglich (nur numerisch ist die Lösung zu finden).

Was ich mir da wünschen würde, wäre ein Programm, das mir in dem Fall komfortabel weiterhilft. Ich würde eine Eingabedatei erzeugen, die beinhaltet die das System beschreibenden Gleichungen, z.B. so:

I1 + I2 = I3 * I4; U1 = I1*10; log(U3) = I4; ......

Die Reihenfolge sollte egal sein dürfen, auch braucht es keinen Unterschied zwischen rechten und linken Seiten einer Gleichung: Alle Gleichungen müssen einfach nur erfüllt sein. Man gibt einfach nur alle Gleichungen ein, die man kennt und das Programm rechnet einem die Werte der Variablen aus, so dass allen Gleichungen genüge getan ist. Wenn's keine Lösung gibt, gibt's Fehlermeldung.

Erweiterung: Ableitungen gibt's auch:

U5 = 23 * I'5; // I'5 meint Ableitung dI5/dt .....

Am Ende dann ein OUTPUT t(0 TO 10 STEP 0.01) U1, I1, U5

was mit die Zeit in 0.01-Schritten tabellarisch mit den genannten Größen ausgibt.

Es ist klar, dass es einige Programme zum Lösen von Gleichungssystemen gibt, auch Programme zum Lösen von nichtlinearen Gleichungssystemen, wohl auch Programme zum numerischen Lösen von Differentialgleichungen. Aber alle diese Programme sind erstens in ihrer Handhabung so schwierig, dann man für das Erlernen der Bedienung mehr Zeit investiert, als viele Menschen jemals von Hand brauchen würden, um die Probleme die sich im Laufe der Jahre stellen zu lösen*).

Und allermeistens sind solche Numerikprogramme immer so aufgebaut, dass man den Lösungsweg schon bei der Eingabe/Beschreibung des Problems kennen muss.

Kennt jemand die Sprache von METAFONT, dem Anhängsel von TeX zur Erzeugung von Zeichensätzen? Da konnte man auch die Lage von Punkten (Stützstellen für Splines und so) durch eine willkührliche Aufzählung von Bestimmungsgleichungen beschreiben. Bedingung war nur, dass alle eingegebenen Gleichungen zusammen ein lösbares lineares Gleichungssystem ergaben. Das fand ich faszinierend.

*) Was bei vielen Programmen oft für Selten-Benutzer unpraktisch ist, dass man gewisse Funktionen zwar braucht, aber so selten, dass man sich jedesmal wenn man sie braucht wieder neu einarbeiten muss. Toll, wenn das Programm mein Problem in 5 Minuten löst, aber ich neige persönlich dazu, die 5 Stunden Einarbeitungszeit auf die 5 Minuten draufzuschlagen und komme zu dem Ergebnis, dass das Programm 5,05'' für meine Lösung gebraucht hat. Da wird ein sehr primitiv arbeitendes Programm mit robusten Näherungsverfahren schnell konkurenzfähig.

Ich bin am Überlegen, wie man das programmiert, hab etwas Bedenken wegen dem Formelparser, der Rest ist mir ansatzweise klar...

CU Rollo

Reply to
Roland Damm
Loading thread data ...

Hallo Roland,

Da fallen mir spontan Maple und Mathematika ein. Ob die das aber können kann ich so jetzt nicht versprechen, dafür arbeite ich zu selten damit. Maple find ich aber schon recht intuitiv bedienbar.

Marte

Reply to
Marte Schwarz

Am Thu, 21 Sep 2006 01:56:13 +0200 schrieb Marte Schwarz:

Nö! Viel zu Teuer! Man nimmt Mupad ( = Mathe Universität Paderborn) das kann solche simplen Sachen schon in der Demoversion und die Vollversion die mit irgendwas zwischen 50-100 Euronen zu Buche schlägt, kann auch mit Mathematika mithalten.

Reply to
Peter Niessen

Am Wed, 20 Sep 2006 23:37:13 +0200 schrieb Roland Damm:

Das Rad nicht neu erfinden. Es gibt eine Freeware, die so ziemlich alles löst, was man für "normale" Anwendungen braucht. IMO kann es auch Gleichungssysteme lösen:

formatting link
Der Vorteil ist, dass man einfach lostippen kann. Es sind jedoch auch umfangreiche Programme inklusive 2D/3D Darstellung möglich.

Ciao CHRiSTiAN.

Reply to
Christian Küken

Moin,

Christian Küken schrub:

Soll X(PLORE) auch könne, aber was es so kann - vorallem wie es sich bedient - ist aus der Webseite nicht abzulesen und ich habe auf die Schnelle keinen Win-Rechner zur Hand um's auszuprobieren. Linux wäre schon sehr wünschenswert.

CU Rollo

Reply to
Roland Damm

Moin,

Marte Schwarz schrub:

Klingt nach teuer, deswegen eher uninteressant.

CU Rollo

Reply to
Roland Damm

Moin,

Peter Niessen schrub:

Demoversion geht aber nur 30 Tage, oder habe ich da was falsch verstanden?

Übrigens ist die Idee mit dem selber machen in greifbare Nähe gerückt, nachdem ich vorhin den Source (GPL) für einen Funktionsparser gefunden habe, der genau das kann, was ich für meine Idee bräuchte. Jetzt brauche ich nur noch die Zeit und den Anlass, mich mal ranzusetzen.

CU Rollo

Reply to
Roland Damm

Einen rudimentären findet man auch im Stroustrup. Wie Parser aufgebaut werden steht extrem kompakt und verblüffend einfach in Niklaus Wirth Compilerbau. Letzeres gibt es wohl als Reprint, ansonsten im ZVAB.

Gruß, Nick

Reply to
Nick Müller

Hi,

es gibt Computeralgebra-Systeme als OpenSource. Da wäre z.B. Maxima

formatting link
) und noch eins, auf dessen Namen ich gerade nicht komme. Ich habe sie mir nie genau angeschaut, weil ich eine Maple-Lizenz besitze, aber vielleicht können die ja das, was du brauchst.

Gruß, Christian

Reply to
Christian Waluga

Moin,

Christian Waluga schrub:

Genau darauf bin ich auch wieder gestoßen, nachdem ich es früher mal kurz auf dem Rechner hatte und gleich wieder deinstalliert habe. Das war doch das Programm, was außer 'Syntax Error' keine Ausgabe produzieren kann...

Ich hab noch ein paar andere flüchtig gesehn, aber irgendwie kommen mir diese Programme immer nur vor, wie ein Ersatz für die mühevolle Kleinarbeit. Man kann ein Gleichungssystem eingeben, aber man kann damit nicht rechnen. Ja, man kann mit Hilfe des Programms das Gleichungssystem auflösen, nur mal allgemein gesagt: wozu muss man das?

Wenn ich weiß, dass

x/y=t

und

x+y=5

gilt, dann definiert dieses Gleichungssystem eine eindeutige Kurve x über t. Alls ist gesagt, fertig definiert. Warum muss ich es dann erst ausrechnen/die Gleichungen umstellen (wenn auch mit Hilfe des Computers) und zig mal 'solve', 'replace' oder was sonst noch eintippen, bis ich diese Kurve auf dem Bildschirm dargestellt haben kann?

Außerdem ist mir klar geworden, dass mein Ansatz - falls ich mal dazu komme, ihn in ein Programm umzusetzen, auch keinerlei Probleme damit hat, Gleichungen mit Bedingungen zu verarbeiten. Sowas wie (C-Syntax) a=(b>5 ? x, x-2) wäre mit dem Ansatz kein Problem. Ich denke damit tut sich ein Algebraprogramm mächtig schwer. Nachteil meines Ansatzes wäre zweifellos, dass der Benutzer nie die Gewissheit hat, dass die gefundene Lösung die einzig mögliche ist. Ebenso hat er nicht die Gewissheit, dass wenn keine Lösung gefunden wird, es auch keine Lösung gibt. Das ist das Problem, wenn man die Sache stumpf numerisch angeht.

Aber die DGL eines hüpfenden Balls berechnen und dazu exakt nur eingeben müssen (Fantasiesyntax, C-ähnlich):

x''=-9.81 -(x')^2 * Luftwiderstand + (x

Reply to
Roland Damm

Am Thu, 21 Sep 2006 22:59:36 +0200 schrieb Roland Damm:

Ansonsten hier:

formatting link
Da gibt es ein Mathe Programm Cammpus, allerdings auch für Windows. Der verwendete Mathe Parser liegt allerdings als C++ Library zum DOwnload bereit. Die könntest Du auch unter Linux nutzen.

Ciao CHRiSTiAN.

Reply to
Christian Küken

Am Thu, 21 Sep 2006 23:18:26 +0200 schrieb Roland Damm:

Ich denke schon. Es gibt eine Version mit eingeschränktem Interface für umsonst. Die Demoversion ist die Vollverversion die je nach deinem Status (Schüler oder Privat) mit ca. 50-100 Euronen zu Buche schlägt. Mupad gibt es auch noch als Plug-In für Fremdprogramme wie zb. Sientific-Workplace.

Reply to
Peter Niessen

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.