3457

Mathematica 11.3 - Wie kann ich Compiled Functions schachteln

  • Überarbeitet am 30.7.2018
  • Software: Mathematica 11.3, 8

Erläuterung

Definiere Funktion 1

Wir definieren zuerst eine Funktion F1 die abhängig von t sein soll. Außerdem soll sie als Argument nicht nur skalare, reelle Zahlen verarbeiten, sondern auch Listen von reellen Zahlen:

F1 = Compile[{{t, _Real}}, t + 1, RuntimeAttributes -> {Listable}, Parallelization -> True]

Definiere Funktion 2

Jetzt defnieren wir eine Funktion F2, die nicht nur abhängig von t und i ist, sondern auch die Funktion F1 aufrufen muss. Ebenso soll diese Funktion auch Listen verarbeiten können. Durch Angabe der CompilationOptions ist es möglich, dass F2 auch F1 aufruft:

F2 = Compile[{{t, _Real}, {i, _Real}}, F1[t] + i, RuntimeAttributes -> {Listable},
Parallelization -> True, CompilationOptions -> {"InlineCompiledFunctions" -> True,
"InlineExternalDefinitions" -> True}
]

Verwenden der Funktionen

Jetzt können wir die Funktionen nicht nur schachteln, sondern auch ein Argument als Liste übergeben. Da Listable gesetzt ist, wird die Funktion jetzt so oft aufgerufen, wie die Liste lang ist.

F2[1., {1., 2., 3.}]

Question?

Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein., wenn Sie eine Frage zu diesem Artikel haben.