TD6
Calcul numérique (avec Maple)
Licence 1 SMS Math Info, Math Physique 2006-2007
Question 1 :
a) Construisez une liste ordonnée des 100 premiers nombres premier
b) Divisez tous les éléments de la liste par 23 et appliquez la fonction frac(…) pour obtenir
une nouvelle liste. (Remarque : frac(x) = x - trunc(x)).
c) Multipliez tous les éléments de cette liste par 23 pour obtenir une troisième liste.
d) Convertissez cette dernière liste en ensemble et donnez son nombre d’éléments.
Question 2 :
a) Créer une liste l2 qui sera constituée des nombres entiers dont les carrés sont compris
entre 1000 et 10000.
b) Créer une liste l3 qui sera constituée des nombres entiers dont les cubes sont compris entre
1000 et 10000.
c) A partir de ces deux listes, créer une seule liste. Grâce à Maple, déterminer combien il y a
d’éléments qui sont à la fois dans l2 et dans l3.
Question 3 :
Soient u = [8, 2, 9] ; v = [2, 3, -5] et w = [15,-3, 7].
a) Donner les instructions en Maple permettant de calculer le produit vectoriel de u et v puis
le produit scalaire du résultat par w.
b) Donner les instructions en Maple permettant de calculer l’angle entre u et v ainsi que la
distance entre les deux points u et v.
Question 4 :
Donner deux façons de résoudre le système linéaire suivant :
3x + 2y –z =1
2x – 3y +4z = 3
x + y –3z = 2
Question 5 :
a) Ecrire une procédure qui calcule les a² premiers carrés. Ces a² premiers carrés seront
insérés dans une liste de listes où chaque liste est composée de a carrés. La procédure prend
donc en paramètre le nombre a et retourne une liste de listes contenant les a² premiers carrés.
b) Créer une matrice à partir de la liste de listes retournée par la procédure précédente puis
calculer son déterminant et sa matrice inverse en prenant a=3.
c) Multiplier la matrice inverse par le vecteur B = [2, 3, 4]. Donner le système linéaire que
l’on vient de résoudre.
Question 6 :
Expliquer ce que fait la procédure suivante :
f := proc(a::posint, b::posint)
local x::interger, y::integer;
x := a;
y := 0;
while (x >= b)
do
x := x-b;
y := y+1;
od:
return(y);
end;