0% ont trouvé ce document utile (0 vote)
120 vues3 pages

Sol TP 03

Ce document contient des exercices de programmation et de mathématiques. Il présente notamment des algorithmes pour calculer la suite de Collatz, des factorielles, des sommes et pour déterminer si un nombre est premier. Il montre également comment tracer des courbes de fonctions avec Matlab.

Transféré par

Reda Sellahi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
120 vues3 pages

Sol TP 03

Ce document contient des exercices de programmation et de mathématiques. Il présente notamment des algorithmes pour calculer la suite de Collatz, des factorielles, des sommes et pour déterminer si un nombre est premier. Il montre également comment tracer des courbes de fonctions avec Matlab.

Transféré par

Reda Sellahi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Alger 1 - Faculté des Sciences/ Déprt Math & Info /S2/ OPM/Solution TP 03

Exercice 01 :
>> C = (A>B) | ~(A==B) , D = A == B
C =
A B (A>B) (A==B) ~(A==B) C
1
10 12 0 0 1 1
D =
0 A==B D
0 0
>> ~((A-B > A) & (A+B == 22)) , ans & B, ans | 0 ; ans & 0
ans =
1 (A-B > A) (A+B == 22) ((A-B > A) & (A+B == 22)) ~((A-B > A) & (A+B == 22))
ans = 0 1 0 1
1
ans =
ans B ans & B ans ans | 0 ans ans & 0
0 1 12 1 1 1 1 0

>> [4,2,-[Link] ~= 2*[2,1,-1,0,1]


[4, 2, -2 :2 :3] = [4,2,-2,0,2]
ans = 2*[2 , 1, -1,0,1] = [4,2,-2,0,2]
0 0 0 0 0

Exercice 02 :
1) Trouver la suite de Collatz pour les nombres : 5 et 3.
Pour N = 5
U0=N=5 U1=3*5+1 U2=16/2 U3=8/2 U4=4/2 U5=2/2 Convergence de la suite vers
5 16 8 4 2 1 la séquence 4,2,1, donc on
s’arrête ici après 6 itérations
Pour N=3
U0=N=3 U1=3*3+1 U2=10/2 U3=3*5+1 U4=16/2 U5=8/2 U6=4/2 U7=2/2
3 10 5 16 8 4 2 1

2) Ecrire un programme qui génère la suite de Collatz pour un nombre donnée N :

% Conjecture de Collatz
n = input('Entrer un nombre entier positif : ');
while n ~= 1
if ceil(n/2) == n/2 % tester si n est pair
n = n/2;
else
n = 3*n+1;
end
disp(n)
end

3) Transformation du programme en une fonction :


Cette fonction reçoit un nombre N en entrée et renvoie un vecteur V contenant la suite de
Collatz comme sortie.
Université Alger 1 - Faculté des Sciences/ Déprt Math & Info /S2/ OPM/Solution TP 03

% Fonction qui calcule la conjecture de Collatz


function V = collatz(N)
V = [N]; % vecteur initial
while N ~= 1
if ceil(N/2) == N/2 % tester si n est pair
N = N/2;
else
N = 3*N+1;
end
V = [V , N]; % ajouter un élément à V
end

Exercice 03 :
1) Le programme qui calcule le factoriel de n :

n = input('Entrez un nombre entier positif : ');


fact = 1 ;
for i = 1:n
fact = fact*i ;
end
fact % écrire la valeur de fact

1
2) Le programme qui calcule la somme ∑𝑛𝑘=1 :
𝑘

n = input('Entrez un nombre entier positif : ');


H = 0 ;
for k = 1:n
On aura pu écrire
H = H+1/k ;
end sum(1./[1:n]) ;
disp(H)

(−1)𝑘
2) Le programme qui calcule la somme ∑𝑛𝑘=1 :
𝑘2

n = input('Entrez un nombre entier positif : ');


H = 0 ;
for k = 1:n
H = H+(-1)^k/k^2 ;
end
disp(H)

3) Le programme qui indique si un nombre est premier ou pas :

function P = estPremier(a)
P = 1;
i=2;
while i<=sqrt(a) & P L’expression : (while i<=sqrt(a) & P)
if mod(a,i) == 0 Peut être remplacée par : (while i < a & P)
P = 0; Elle devient plus lisible mais moins performante
end
i=i+1;
end
Université Alger 1 - Faculté des Sciences/ Déprt Math & Info /S2/ OPM/Solution TP 03

Le programme consiste à diviser le nombre a par tous les nombres inferieurs à lui (ou à sa racine
carrée pour être plus efficace), s’il trouve un seul diviseur (le reste de la division = 0) alors ce
nombre n’est pas premier et on arrête la boucle. Sinon s’il n’existe aucun diviseur de a alors il sera
considéré comme premier.

Exercice 04 :
1) Tracer la courbe de la fonction f(x) :
>> x = 0:pi/12:2*pi;
>> f = sin(x-2)+4;
>> plot(x,f)
2) Tracer la courbe de la fonction g(x) :
>> x = -5:0.2:5;
>> g = -2*x.^3+x.^2-3;
>> plot(x,g)

3) Pour dessiner la courbe de f(x) en pointillé vert avec des points en forme de losanges on écrit :
>> x = 0:pi/12:2*pi;
>> f = sin(x-2)+4;
>> plot(x, f, ':gd')
3) Pour dessiner la courbe de g(x) en tirets bleus avec des points en forme de carrés on écrit :
>> x = -5:0.2:5;
>> g = -2*x.^3+x.^2-3;
>> plot(x, g, 'b--s')

Vous aimerez peut-être aussi