DMUG-Archiv 2003

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Funktionsauswertung & Funktionsdefinition

Andreas Trondl wrote:
> 
Hallo,

> Im Kontext meines mathematischen Problems stellt sich folgende, rein auf
> die Konfiguration und Funktionsdefinition von Mathematica bezogene
> Frage. Aus diesem Grunde erlaube ich mir den mathematisch physikalischen
> Zusammenhang hier nicht näher zu erläutern.
> In Mathematica besteht die Möglichkeit Funktionsdefinitionen
> durchzuführen welche sich auf bereits identische Funktionsaufrufe
> "erinnert" (speichert, "Functions That Remember Values They Have
> Found"), und so wiederholte gleiche komplexe Funktionsauswertungen zu
> verhindern. Dies hat jedoch den Nachteil das der Speicherverbrauch mit
> jeden neuen Aufruf stetig ansteigt. 

Speicher gibt's im Laden, Zeit nicht ..

> Für meine Anwendung würde es jedoch
> reichen wenn die letzten n Funktionswerte resultierend aus den letzten n
> Funktionsaufrufen gespeichert blieben, und die älteren Werte gelöscht
> werden könnten. Ich versuche dies zur Zeit mit den Befehlen "UpValues"
> und "DownValues" umzusetzen.
> Meine Frage wäre nun ob die Möglichkeit besteht den Kernel so zu
> konfigurieren, dass er für das Feature "Functions That Remember Values
> They Have Found" nur einen bestimmten kleineren Speicherbereich zur
> Verfügung stellt und dadurch Funktionsaufrufe die schon mehr als n
> Schritte zurückliegen einfach ?vergisst?.

Das ist etwas brutal, weil es alles nach 
10 Aufrufen vergisst, benutzt aber wenigstens
die System-Funtion dazu ...

$countNo=0;

myFunction[n_Integer]:=myFunction[n]=If[$countNo++>10,
                                        $countNo=0;
                                        Developer`ClearCache["Numeric"],
                                        n!
                                       ]
> Oder aber, gibt es noch andere
> mögliche Ansätze dieses Problem zu lösen?

$valueList = {};
$maxValues = 10;

myFactorial[n_Integer] /; MemberQ[First /@ $valueList, n] := 
  Last[First[Select[$valueList, First[#] === n &]]]
myFactorial[n_Integer] := Block[{fac},
    fac = n!;
    If[Length[$valueList] >= $maxValues,
      RotateLeft[$valueList];
      $valueList[[$maxValues]] = {n, fac},
      AppendTo[$valueList, {n, fac}]
      ];
    fac
    ]


> Ich hoffe das meine Frage nicht all zu dilettantisch ist, da ich noch
> nicht sehr lange mit Mathematica arbeite. Außerdem löse ich oft meine
> Probleme mit unterschiedlicher Mathematiksoftware, weshalb ich leider
> nie so detailliert mit einem Softwarepaket vertraut bin.

Weshalb es auch besser ist, sich f"ur das beste System zu entscheiden
und
dann bloss noch Mathematica zu machen ...

> Abschließend würde mich noch interessieren ob es ?objektive? Aufsätze
> über symbolisch/numerische Mathematiksoftware gibt, welche die
> wesentlichsten Unterschiede bzw. Vor- und Nachteile und auch technische
> Details von diversen Softwarepaketen (bspw. Maple, Mathematica, usw.)
> wiederspiegeln (bitte keine Angabe von Propagandaschriften oder
> Ähnlichem).

Keine aktuellen. Auserdem ist es ja wie gesagt relativ einfach weil
man bloss Mathematica nehmen braucht. Wie soll der Vergleich denn
"uberhaupt aussehen -- Mathematica gegen MS-Word als Textverarbeitung
oder Mathematica gegen Corel Draw als Graphik-Software ?

Jeder hat da seine pers"onlichen Vorlieben, Leute die FORTRAN k"onnen
lieben eher REDUCE, die jenigen, die es noch geschafft haben Pascal
zu lernen bevor das Hirn aufh"orte zu arbeiten, sind f"ur Maple
und wer eine sch"one konsitente funktionale Programmiersprache 
liebt nimmt eben Mathematica.

Es kommt auch darauf an, *was* man macht. Wenn man vornehmlich
nummerisch rechnet, weil man kein C/C++ gelernt hat dann ist MatLab
etwas schneller und wunderbar chaotisch. 
Wer aber eine Interpreter f"ur sowas nimmt *will* garnicht schnell
rechnen sondern hat eh zuviel Zeit.

Will man symbolisches/numerisches
Rechnen kombinieren, dann ist nat"urlich 
Mathematica besser, weil es
im numerischen Bereich schneller ist als 
die anderen CAS.

Aber das Mathematica besser ist hatte wir ja schon.

Gruss
  Jens


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html