[ adnanK @ 25.05.2007. 01:33 ] @
Mozda nije pravo mjesto za ovo pitanje, ali nisam skontao bolje ;) Zna li neko kako da u Mathematici posaljem funkciju kao argument nekoj drugoj funkciji?

Da objasnim:

neka je zadan neki izraz npr.

x2+Cos[2*x]


ja hocu da napisem funkciju:

MojaFunkcija[f_]=Module[{},
Return[ f[2*x] ]
];


kojoj mogu dati prethodni izraz kao parametar:

MojaFunkcija[x2+Cos[2*x]]


ili da je mogu pozvati na ovaj nacin

f[x_]=x2+Cos[2*x];
MojaFunkcija[f];


tj. mora moci i prvi i drugi nacin. Zna li neko kako se ovo moze implementirati?
[ cynique @ 25.05.2007. 09:07 ] @
Mathematica nativno podržava funkcije višeg reda (high-order fje, first-class fje). Nemam Mathematicu instaliranu pri sebi, ali ovako bi nešto trebalo raditi:

Code:

MojaFunkcija[f_] := Module[{
  duplo
 },
  duplo[x_] := f[2*x];
  duplo
]


ili kraće preko lambda izraza:
Code:
MojaFunkcija[f_] := Function[{x}, f[2*x]]


Izraz bi mogao prenijeti kao parametar enkapsulirajući ga u fju koristeći lambda apstrakciju (preko Function[])...
[ adnanK @ 11.06.2007. 00:13 ] @
Prvi nacin ne radi bas dobro uvijek (ako hocu da kao argument dajem i izraz i vec definisanu funkciju), ali uz ideju iz drugog prijedloga sam uspio nesto napraviti: definisao sam funkciju sa razlicitim brojem argumenata i to:

Code:

MojaFukcija[izraz_, argument_]:=MojaFunkcija[Function[argument, izraz]]

MojaFunkcija[funkcija_]:=Module[{},
funkcija[bilo_sta]]


Mislim da je ovo i najbolji nacin.