Methode um Gleichungen zu vereinfachen (Automatisiert)

Neue Frage »

David992 Auf diesen Beitrag antworten »
Methode um Gleichungen zu vereinfachen (Automatisiert)
Meine Frage:
Hallo Matheboard Community,

ich habe eine wichtige Frage bezüglich der automatisierten Vereinfachung von Gleichungen. Und zwar lassen sich viele Systeme in den Ingenieurswissenschaften (Elektrotechnik) durch gewöhnliche Differentialgleichungen mit konstanten Koeffizienten beschreiben. Mithilfe von Matlab lassen sich auch leicht Lösungen bestimmen, welche jedoch so lang sein können, dass sie von Menschen nicht interpretierbar sind.

Gibt es eine Möglichkeit diese Gleichungen automatisiert zu vereinfachen, unter Annahmen die für dieses System gelten. Also die Relation einiger Parameter ist in Gewissen Bereichen bekannt, als auch Wertebereiche können angegeben werden.

Über eine Antwort würde ich mich sehr freuen.

Viele Grüße,
David

Meine Ideen:
Meine einzige Idee die ich habe, ist mithilfe von Matlab einzelne Summanden über einen Algorithmus zu vereinfachen. Das wäre aber sehr viel Arbeit und ich glaube kaum, dass ich der erste bin, der auf dieses Problem gestoßen ist. Dazu müsste ich Regeln für die einzelnen Summanden implementieren, um diese gut zu nähern. Einige Summanden könnten auch vernachlässigt werden, möglicherweise.
Finn_ Auf diesen Beitrag antworten »

Computeralgebrasysteme sind eigentlich dazu fähig, sofern die Problemstellung nicht allzu kompliziert ist. Sollten ihre Fähigkeiten nicht ausreichen, kann man eigene Algorithmen auf ihren Fähigkeiten aufbauen.

Ein elementares Beispiel in Maxima. Betrachten wir das Anfangswertproblem



Zunächst lässt man von ode2 (ordinary differential equation up to order 2) die Differentialgleichung lösen:

code:
1:
2:
3:
4:
5:
6:
(%i1) e0: 'diff(x,t,2) = -omega^2*x;
(%i2) s0: ode2(e0,x,t);
Is omega zero or nonzero?
n;
(%o2)               x = %k1 sin(omega t) + %k2 cos(omega t)

Nun setzt man die Anfangsbedingungen mit ic2 (initial condition, second order) ein, woraufhin die Lösung automatisch vereinfacht wird:

code:
1:
2:
3:
(%i3) ic2(s0,t=0,x=0,'diff(x,t)=a*omega);
(%o3)                         x = a sin(omega t)
David992 Auf diesen Beitrag antworten »

Hallo Finn_,

vielen Dank für die Antwort (sorry für die verspätete Rückmeldung, die Benachrichtigung ist im Spam gelandet). Im Anhang habe ich Ihnen ein Beispielskript in Matlab (Toolbox "Symbolic Math Toolbox" notwendig) angehangt. Die Vereinfach geht hierbei per simplify.
Die vereinfachte Lösung ist jedoch trotzdem zu komplex. Ich würde diese Lösung jedoch gerne nähern. Gibt es denn hierfür eine Methodik, außer eine simple Taylorreihennäherung. Es kommt eben auf die Lösung an, durch welche Funktion sie sich am besten nähern lässt.
David992 Auf diesen Beitrag antworten »

Edit mY+: Unnötiges Vollzitat wurde entfernt.

Tut mir Leid, mein Fehler. Ich bin bei der Erstellung des Titels und in der Problembeschreibung auch nicht besonders präzise gewesen.

Es geht also um ein automatisiertes nähern der Lösung. Im Idealfall lässt sich auch eine maximale Abweichung angeben.
Finn_ Auf diesen Beitrag antworten »

Matlab hab ich nicht, nur Octave, SciPy, SymPy und Maxima. Aus dem Quelltext (.mlx ist eine Zip-Datei eines Ordners mit XML-Dateien) kann man aber die Problemstellung herauslesen. Das Beispiel ist das System





mit Quellspannung Die Anfangsbedingungen sind





Angenommen, es gäbe ein perfektes CAS, was wäre da jetzt das Ziel? Eine möglichst elegante Formulierung der allgemeinen symbolischen Lösung? Bestehen weitere Relationen, muss man sie zum Gleichungssystem hinzufügen und daraufhin erneut nach der Lösung fragen.

Oder soll das CAS ein möglichst kleines und schnelles Computerprogramm erzeugen, das den Wert einer bestimmten Größe zu einer gegebenen Parameterbelegung berechnet?
David992 Auf diesen Beitrag antworten »

Hallo Finn_,

also das Ziel ist tatsächlich eine möglichst elegante, genäherte Formulierung der allgemeinen Lösung (also eben nicht numerisch). Sie soll möglichst kurz sein, aber einen möglichst großen Wertebereich abdecken. Das Ziel ist nämlich, Designregeln abzuleiten.

Du hast geschrieben:
Zitat:
Bestehen weitere Relationen, muss man sie zum Gleichungssystem hinzufügen und daraufhin erneut nach der Lösung fragen.
Das würde an der allgemeinen Lösung jedoch nichts ändern, es sei den, es ließen sich doch noch weitere Äquivalenzumformungen tätigen. Das kann ich natürlich noch versuchen, aber ich habe schon Angaben gemacht, dass jeder Parameter größer 0 ist, weshalb ich keine weiteren Vereinfachungen erwarte.

Manuell würde ich so vorgehen: Ich würde mir die Lösung plotten in Abhängigkeit der Parameter und mir überlegen, durch welche Funktion die Abhängigkeit von diesem Parameter am besten beschrieben wird.
Bei mehrdimensionalen Funktionen gestaltet sich das allerdings immer schwieriger, weshalb ich hoffe, dass mir diese Arbeit ein CAS übernehmen kann. Die Problemstellung ist denke ich auch nichts neues, weshalb ich kaum glauben kann, dass es hierfür noch keine Lösungen gibt.

Vielen Dank noch mal für Ihre Zeit.
 
 
David992 Auf diesen Beitrag antworten »

Noch eine weitere Idee von mir:
Wenn die genäherte Funktion als "Zusammengesetzte Funktion" (Englisch: Composite Function) darstellbar wäre, wäre das Ziel auch erreicht.
David992 Auf diesen Beitrag antworten »

Ich habe schon etwas mehr recherchiert und herausgefunden, dass das Ziel auf englisch "function approximation" heißt. Es gibt für Mathematica auch ein sogenanntes "Function Approximations Package". Hat jemand damit Erfahrungen gemacht? Was ist mit mehrdimensionalen Funktionen?
Finn_ Auf diesen Beitrag antworten »

Für CAS ist Vereinfachung ein wesentliches Problem. Die Antwort auf die Frage wäre also, es ist schwierig.

Wenn immer wieder derselbe Teilterm auftaucht, kann man ihn in Maxima mit substitute(Teilterm=Variable, Term) gegen eine Variable ersetzen lassen. Sind dafür allerdings vorherige Umformungen notwendig, muss man diese Substitution händisch erledigen. In Maxima sind darüber hinaus weitere spezialisierte Vereinfacher enthalten, unter anderem ratsimp, trigsimp, trigreduce und radcan. In manchen Fällen könnte auch assume eine Rolle spielen. Bei anderen CAS mag es analoge Funktionalitäten geben, wenn auch die algorithmische Umsetzung, die Schnittstellen und ihre Befehle sehr unterschiedlich ausfallen können.

Die Theorie der Systeme linearer Dgl. mit konstanten Koeffizienten ist mehr oder weniger vollständig verstanden. Ich will erklären, warum es nicht immer symbolische Ausdrücke geben kann. Das inhomogene System



kann man durch einen Trick homogen machen, sofern konstant sind, nicht zeitabhängig wie etwa Schwingungen. Dazu führt man die zusätzliche Dgl. mit Anfangswert ein und bringt das System damit in die Form



kurz mit Anfangswert Die Lösung ist dann



Das Matrixexponential ist wie bei der gewöhnlichen Exponentialfunktion numerisch berechenbar durch



für hinreichend große wobei man Rechenaufwand durch Horner-Schema und wiederholtes Quadrieren einsparen kann. Das ist zwar nett, in der Praxis aber durch die extrem allgemeinen Verfahren wie Euler, Runge-Kutta etc. aufs Abstellgleis geschoben.

Nun gibt es bei Bestimmung der Eigenwerte von bzw. zur Bestimmung des Matrixexponentials Verfahren mit weniger Rechenaufwand und symbolischen Ergebnissen. Dazu muss man diagonalisieren oder die sylvestersche Formel benutzen. Alternativ ginge auch Putzers Algorithmus, siehe im Wikipedia-Artikel Matrix differential equation. Problem ist neben der Vereinfachung der Ausdrücke der Grad des charakteristischen Polynoms. Spätestens bei einem System von fünf Dgln. kann man aufgrund von Abel-Ruffini mit der Symbolik in Schwierigkeiten kommen.

Mit der Approximation der Lösungen durch Taylorpolynome und Padé-Approximanten mag es sich ebenfalls schwierig verhalten, weil diese Näherungen immer nur in einem gewissen Bereich hinreichend genau sind, was der Automatisierung zuwiderläuft. Einen Versuch ist es aber wert, zumindest um besseres Verständnis der Problematik zu erlangen.

Aus diesen Gründen, und weil nichtlineare Bauteile wie Dioden zu nichtlinearen Gleichungen und Dgln. führen, würde ich in Erwägung ziehen, ebenfalls numerische Argumentationen auszuarbeiten, die wesentlich allgemeiner anwendbar sind. So arbeiten, soweit ich sagen kann, auch automatisierte Systeme wie SPICE.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »