@
''.
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));