Definitie van functies

Het definieren van eigen functies in Maple is erg eenvoudig, de syntax leunt dicht aan bij de gebruikelijke wiskundige notatie.

> f := x -> x^2;

[Maple Math]

In woorden: de functie f beeldt x af op x^2, de notatie is dus erg intuitief..

Functies in meerdere veranderlijken kunnen analoog geprogrammeerd worden:

> g := (x,y) -> sqrt(x^2 + y^2);

[Maple Math]

Het koppel (x,y) wordt afgebeeld op sqrt(x^2 + y^2).

Stel dat men berekeningen gedaan heeft met Maple en als resultaat een bepaalde uitdrukking bekomen heeft. Men wil hiermee nu een functie definieren,

> Expr := a*x^2 + b*x + c;

[Maple Math]

> f1 := x -> Expr;

[Maple Math]

> f1(2);

[Maple Math]

Dit is niet wat men op het eerste zicht zou verwachten. Indien men echter de definitie van f1 grondig bekijkt dan ziet men dat het resultaat van f1 altijd de waarde van Expr zal zijn, ongeacht de waarde van de veranderlijke x.

De meest elegante manier om dit probleem (waarmee men geregeld en meestal onverwacht mee geconfronteerd wordt) op te lossen is het gebruik van de 'unapply' functie:

> f2 := unapply(Expr,x);

[Maple Math]

> f2(2);

[Maple Math]

f2 gedraagt zich zoals de gebruiker wil. De 'unapply' functie komt bijvoorbeeld van pas bij het plotten van uitdrukkingen. 'unapply' kan ook gebruikt worden voor functies in meerdere veranderlijken:

> f3 := unapply(sqrt(x^2 + y^2),x,y);

[Maple Math]

Voor meer gecompliceerde toepassingen kan men gebruik maken van procedures, dit is onder andere nodig indien men lokale variabele nodig heeft of wanneer de berekening uit meerdere stappen bestaat.

> h := proc(x,y)
local s;
s := x^2 + y^2;
sqrt(s)
end;

[Maple Math]

> h(3,4);

[Maple Math]

Uiteraard is dit laatste voorbeeld artificieel aangezien het evengoed via een functie geïmplementeerd kan worden. Bij het programmeren in Maple komen procedures wel zeer goed van pas. Op procedures in Maple wordt in meer detail ingegaan in de 'Maple programming primer' van dezelfde auteur.

Let ook op de indentatie van de procedure: deze verhoogt de leesbaarheid van de code aanzienlijk.

> f := 'f': g := 'g': Expr := 'Expr': f1 := 'f1': f2 := 'f2': f3 := 'f3':
h := 'h':