Für die Lösung einiger Probleme, haben wir Rekursive Formeln erarbeitet,
welche i.A. von Parametern isolierte Insellösungen finden. Die Lösungen
sind deshalb in Inseln, weil die beschreibenden Funktionen lokale Minima
aufweisen. Obendrein haben sie Knicke.
Ich möchte gerne einen Lösungssatz erzeugen, welcher es ermöglicht, bei
gegebenen Parametern in eine Tabelle zu schauen und einen Ansatz zu
haben, wie man die Lösungsparameter einstellen kann, um zu einer
Endlösung zu kommen.
Dafür muss jede Rechnung mit unterschiedlichen Parametern durchgespielt
werden. Leider haben einige Formeln sehr viele Parameter und es sind
auch nicht wenige Formeln. Ich habe begonnen, einiges in MATLAB zu
entwerfen, aber das dauert irgendwie ewig, bis ich die Rekursion
einprogrammiert und mit Schleifen zur Ansteuerung mit den Parametern
umgeben habe.
In einem Forum bekam ich den Tipp, es mit Python zu versuchen. Lässt
sich das irgendwie automatisieren? Ich hätte gern ein script, dass die
Formel liest und in ein Pythonprogramm übersetzt, das dann seinerseits
Unterprogramme/-scripte auf die Platte schreibt, die dann die richtige
Codierung für die einzelnen Fälle enthalten und die mit MATLBA (oder
eben Python) ausführbar sind.
Denkt ihr, dass das geht?
Tobias N. schrieb:
...
>> In einem Forum bekam ich den Tipp, es mit Python zu versuchen. Lässt> sich das irgendwie automatisieren? Ich hätte gern ein script, dass die> Formel liest und in ein Pythonprogramm übersetzt, das dann seinerseits> Unterprogramme/-scripte auf die Platte schreibt, die dann die richtige> Codierung für die einzelnen Fälle enthalten und die mit MATLBA (oder> eben Python) ausführbar sind.>> Denkt ihr, dass das geht?
Ja, schau dir mal das 'generator'-Konzept an. Du kannst dir da deine
kleine Fabrik aus Funclets erzeugen, mit denen du allenfalls zum Ziel
kommst.
Aber: Schreib die Formel doch gleich in Python hin, die
Wiederverwertbarkeit ist besser, und du brauchst die Translation nicht
extern erledigen, das geht alles prima "inline".
Besser, du schreibst dir dann deine passenden Konverter (auch via
Generatorklassen), die in Matlab/LaTeX oder was auch immer ausgeben.
So als Beispiel könntest du dir MyHDL anschauen. Das ist eine
Bibliothek, die Python-Ausdrücke in Hardware-Beschreibung übersetzt.
Darauf aufbauend gibt es einige Module, die z.B. aus einer Formel die
entsprechende Hardware-Pipeline generieren und die korrekte Funktion
überprüfen (simulieren), dem ist vom Python-Funktionsumfang her kaum
Grenzen gesetzt. Nur das Selbst-Parsen per AST ist etwas schwerfällig.
Es gibt auch Leute die sagen: "Numpy/sciplot ist das bessere Matlab".
Wenn du nicht zwingend auf matlab-Kompatibilität angewiesen bist.
Jürgen S. schrieb:> Könnte man die Formeln nicht direkt mit dem Matheprogramm umformulieren> / ausformulieren lassen?
Das schwebt mir ja vor :-)
Jörg W. schrieb:> Vielleicht machst du ja ein Beispiel?
Schwierig. Dann müsste ich konkretes Wissen der Firma darstellen.
Auf Anhieb würde ich sagen: Wenn Du Funktionen durch andere Funktionen
programmieren willst, machst Du etwas falsch. Meistens gibt es einen
Ansatz, die gewünschte Funktion systematisch zusammenzusetzen.
Wenn Dich das nicht stört: In Matlab kannst Du natürlich auch Quelltext,
der in Matlab erzeugt wird, ausführen. eval()/feval()
Walter T. schrieb:> Auf Anhieb würde ich sagen: Wenn Du Funktionen durch andere Funktionen> programmieren willst, machst Du etwas falsch.
Ich möchte die Struktur abtrahier analysieren und mit einem Parser oder
Übersetzer oder Compiler erstellen lassen.
Eine einfache Formel kriegt MATLAB auch ins C übersetzt, aber es erkennt
nicht, wie man die Rekursion so aufsetzen kann, dass es optimal ist,
welche Variationen es gibt. Das müsste per Hand ausprobiert und
simuliert werden. Man kann MATLAB aber diese Randbedingungen nicht
mitteilen.
Ich kann sie nur verbal fomulieren.
Die Struktur der Formeln ist so ähnlich, dass ich denke, dass es sich
lohnen müsste, ein Script dafür zu machen. MATLAB reicht aber mit seiner
Mächtigkeit nicht dafür aus.
Daher kam ich auf Python und sogleich auf die Idee, es komplett in
Python zu machen.
Eine eigene Frage?
Dieser Thread ist über 7 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.