Menu1 Menu2 Menu3 Menu4 Menu5 Menu6

Comme les rationnels, les complexes n'existent pas dans Caml. On va donc les représenter comme couples de flottants : la partie réelle et la partie imaginaire. Ainsi, 1 est représenté par (1.,0.) et i par (0.,1.). On n'oubliera pas de mettre un point pour les nombres flottants et les opérateurs usuels.

1) Commencez par écrire les fonctions plus et moins qui additionnent et soustraient deux complexes.
let plus (a,b) (c,d) = (a +. c, b +. d);;
let moins (a,b) (c,d) = (a -. c, b -. d);;

2) Ensuite, définissez la fonction mult qui multiplie deux complexes.
Commençons par faire des maths : (a + ib) x (c + id) = ac + iad + ibc + i2bd = (ac - bd) + i(ad + bc). D'où :
let mult (a,b) (c,d) = (a*.c -. b*.d,a*.d +. b*.c);;

3) Pour la division, commencez par définir l'inverse d'un complexe (pour faire simple, rappelez-vous de ce que fait le produit d'un complexe par son conjugué). Une fois cette fonction inverse écrite, déduisez-en la division de deux complexes.
Rappelez-vous : le produit de z par z vaut le module de z au carré. L'inverse d'un complexe est donc simple à définir :
let inverse (a,b) = let modulecarre = a*.a +. b*.b in (a /. modulecarre, -.b/. modulecarre);;
let divise x y = mult x (inverse y);;

4) Une dernière fonction : écrivez la fonction racine qui cherche la racine carrée d'un complexe. Là encore, il faut trouver une astuce pour faire simple. En effet, on pourrait passer par le module et l'argument, mais ce serait compliqué. Pour simplifier, intéressez-vous à la partie réelle de z2 (si z est la racine cherchée) et au module de z.
Solution

> Haut de la page