Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Andere Softwarepakete » Generierung von effizientem Code mit (x)maxima
Druckversion
Druckversion
Antworten
Antworten
Autor
Kein bestimmter Bereich Generierung von effizientem Code mit (x)maxima
k-mte
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 18.02.2014
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2019-10-18


Hallo,
in (x)maxima gibt es eine Funktion zur Generierung von effizientem Code, die so funktioniert, dass bei der Berechnung von komplizierten Ausdrucken (in einem "block"?) in einem externen Programm (Fortran?) zunächst im Ausdruck mehrmals wiederkehrende Teilausdrucke berechnet werden und anhand dieser Basis dann der der gesamte Ausdruck.
Ich komme einfach nicht mehr darauf, wie der dieser Befehl heißt und bitte um Hilfe.
k-mte



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 1267
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2019-10-18


Die Funktion, die in einem komplizierten Ausdruck nach wiederkehrenden Teilausdrücken sucht, ist optimize:
-- Function: optimize (<expr>)
 
   Returns an expression that produces the same value and side effects
   as <expr> but does so more efficiently by avoiding the
   recomputation of common subexpressions.  'optimize' also has the
   side effect of "collapsing" its argument so that all common
   subexpressions are shared.  Do 'example (optimize)' for examples.

Die hat aber nichts mit der Ausgabe im Fortran-Format zu tun.

--zippy



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
k-mte
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 18.02.2014
Mitteilungen: 15
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2019-10-19


Hallo zippy,

vielen Dank!

Info:

optimize () berechnet z. B. den Ausdruck y = (a + b)^2 + (a + b)^3, indem es erst den Ausdruck a + b berechnet und einer lokalen Variablen zuweist und anschließend die Exponierung und Summenbildung anhand der bereits berechneten lokalen Variablen durchführt. Die Ausgabe erfolgt leider nur in maxima-Code, der zur (numerischen) Berechnung des Ausdrucks mit einem externen Programm zunächst noch in die gewünschte Programmiersprache übersetzt werden muß. (Wobei sich bei der Portierung nach C die Portierung von basis^exponent nach pow (basis, exponent) manschmal als etwas sperrig erweist)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Folgende Antworten hat der Fragesteller vermutlich noch nicht gesehen.
Er/sie war noch nicht wieder auf dem Matheplaneten
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 1267
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2019-10-19


2019-10-19 13:17 - k-mte in Beitrag No. 2 schreibt:
Wobei sich bei der Portierung nach C die Portierung von basis^exponent nach pow (basis, exponent) manschmal als etwas sperrig erweist

Das kannst du auch maxima machen lassen:
maxima
(%i1) ((a + b)^2 + (a + b)^3 + 1)^4;
 
                                  3          2     4
(%o1)                    ((b + a)  + (b + a)  + 1)
 
(%i2) subst (pow, "^", %);
 
(%o2)             pow(pow(b + a, 3) + pow(b + a, 2) + 1, 4)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2020 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]