Exercice 3. ´
Ecrivez la fonction racines qui, ´etant donn´es les param`etres a,bet cde l’´equation
ax2+bx +c= 0 retourne la liste contenant soit deux racines distinctes, soit une racine double,
soit la liste vide.
> (racines 1 2 1) > (racines 1 1 -6)
(-1) (-3 2)
> (racines 1 0 -1) > (racines 1 1 1)
(-1 1) ()
Utilisez une fonction auxiliaire pour calculer la valeur de ∆. Vous pourrez utiliser la fonction list
pour construire la liste des r´esultats. Cette fonction prend un nombre quelconque de param`etres
et renvoie une liste constitu´ee de ses param`etres (dans le mˆeme ordre).
> (list 1 2)
(1 2)
> (list 1)
(1)
> (list)
()
Exercice 4. ´
Ecrire la fonction somme-carr´es qui calcule la somme des npremiers entiers au
carr´e, puis ´ecrire la fonction somme-cubes qui calcule la somme des npremiers entiers au cube:
> (somme-carr´es 2) > (somme-cubes 2)
5 9
> (somme-carr´es 3) > (somme-cubes 3)
14 36
> (somme-carr´es 100) > (somme-cubes 100)
338350 25502500
En partant des deux fonctions pr´ec´edentes, ´ecrire la fonction sigma calculant
n
X
i=0
f(i)
o`u fest une fonction quelconque. Cette fonction prendra deux param`etres: la fonction `a sommer
fet le nombre nde valeurs `a sommer.
Utilisez la fonction sigma pour r´e´ecrire les fonctions somme-carr´es et somme-cubes pr´ec´edentes.
Exercice 5. La d´eriv´ee d’une fonction fest d´efinie comme
lim
dx→0
f(x+dx)−f(x)
dx
´
Ecrire la fonction d´eriv´ee qui renvoie la d´eriv´ee de la fonction qui lui est pass´ee en param`etre.
La fonction r´esultat sera une fonction `a deux param`etres: le point en lequel on veut calculer la
d´eriv´ee et la pr´ecision avec laquelle on veut cette valeur (le dx).
> (define carre (lambda (n) (* n n)))
carre
> (define d-carre (d´eriv´ee carre))
d-carre
> (d-carre 3 0.001)
;; valeur exacte: 6
6.00099999999948
´
Ecrire une seconde version de la fonction d´eriv´ee prenant en compte la pr´ecision dx au moment
de la construction de la fonction d´eriv´ee:
SI4 – 2015-2016 2Programmation Fonctionnelle