Section : Pour commencer
Précédent : Variables et paramètres
Suivant : Fichiers

Fonctions

Toutes les fonctions mathématiques classiques sont accessibles dans le noyau. On peut leur appliquer les opérations usuelles (addition,...), y compris la composition, notée ``@''.
f:=exp*sin;
f(PI/2);
f:=asin@sin;
f(x);
En dehors des fonctions du noyau, de nombreuses fonctions sont disponibles dans les modules. On peut les utiliser soit en chargeant au préalable l'ensemble du module par export(module) soit par une commande du type module::fonction(). L'aide en ligne, appelée par help ou plus simplement par ?, permet d'afficher la définition d'une fonction, de lister les fonctions du noyau ou des modules.
?fact*
?factor
help("linalg");
?numlib
?numlib::f*
?*::*
Voici quelques modules fréquemment utilisés en mathématiques appliquées.
Quelques modules
combinat Combinatoire
fp Itérations de fonctions
linalg Algèbre linéaire
linopt Optimisation
network Manipulation de graphes
numeric Analyse numérique
numlib Nombres entiers
orthpoly Polynômes orthogonaux
plotlib Représentations graphiques
stats Statistique paramétrique
transform Transformées (Fourier...)

En règle générale, les fonctions sont formelles en priorité. L'équivalent numérique s'obtient normalement en ajoutant float à la forme non-évaluée obtenue avec hold (float(hold(int)), float(hold(solve)),...). Donner une valeur réelle (contenant un point) force en général une évaluation numérique.

sqrt(4);
sqrt(2);
float(%);
sqrt(2.0);

sin(1/4);
sin(1.0/4);
sin(PI/4);
sin(PI/4.0);
sin(float(PI/4));
float(sin(PI/4));
Quand le résultat d'un calcul semble compliqué, normal peut être utile à réduire au même dénominateur. Voici par exemple le calcul d'un déterminant jacobien.
f := (x,y) -> (x*(1+y)/(1-x*y));
g := (x,y) -> (y*(1+x)/(1-x*y));
map([f(x,y), g(x,y)], proc(t) begin [diff(t,x), diff(t,y)] end_proc);
normal(%);
linalg::det(Dom::Matrix(Dom::ExpressionField(normal))(%2));
Il faut réserver l'usage de simplify à des simplifications sans forme normale a priori, comme par exemple pour les expressions faisant intervenir des nombres complexes. Mais simplify ne choisit pas à votre place entre plusieurs branches inverses d'une fonction non bijective.
simplify(sqrt(x)^2);
simplify(sqrt(x^2));


Section : Pour commencer
Précédent : Variables et paramètres
Suivant : Fichiers