Université Cadi Ayyad جامعـة القاضـي عيـاض
Ecole Nationale des Sciences Appliquées Safi المدرسـة الوطنيـة للعلـوم التطبيقيـة
آسفــي
TD/TP N°2 AU 2018-2019
Exercice 1 :
1. Ecrivez une fonction binome(a, b, c) qui renvoie les racines de l’équation (a≠0):
aX2 + bX +c =0
2- Ecrivez une fonction somme_carres(n) qui renvoie le plus grand entier k
vérifiant
∑ 𝑖2 ≤ 𝑛
𝑖=1
Exercice 2 :
Comme π est la somme de la série
∞
4 2 1 1
π = ∑ 16−n ( − − − )
8n + 1 8n + 4 8n + 5 8n + 6
n=0
On peut calculer une approximation de π en sommant les n premiers termes, pour
n assez grand. Ecrire une fonction MATLAB pour calculer les sommes partielles de
cette série. Pour quelles valeurs de n obtient-on une approximation de π aussi précise
que celle fournie par la variable π ?
Exercice 3
La suite de Fibonacci est définie comme suit :
0 𝑠𝑖 𝑘 = 1
𝐹𝑖𝑏(𝑘) = { 1 𝑠𝑖 𝑘 = 2
𝐹𝑖𝑏 (𝑘 − 1) + 𝐹𝑖𝑏(𝑘 − 2) 𝑠𝑖𝑛𝑜𝑛.
La limite du quotient de deux termes consécutifs de la suite de Fibonacci
(Fib(k)/Fib(k-1)) pour k→∞ tend vers le nombre d’or α=1.6180339887.....
Ecrire une fonction qui renvoie la valeur approchée du nombre d’or pour une
différence entre deux quotients consécutifs soit inférieure à 10−4. On donne la valeur
maximale d’itérations est Kmax=100.
Exercice 4
On rappelle que la fonction exponentielle peut être calculée par la série :
∞
𝑥
𝑥𝑘
𝑒 =∑
𝑘!
k=0
1- En utilisant la boucle while, écrire une fonction qui calcule la factorielle de n
2- En utilisant la fonction de la question 1, écrire une fonction qui permet de
déterminer le degré du polynôme minimale pour obtenir une approximation de
l’exponentiel de x avec une erreur de 10−4
Exercice 5 :
Ecrire un programme qui organise l’agenda de la semaine en affichant les messages
suivants :
Soit X est une variable d’entrée.
Si X=Lundi
Message affiché :’Il reste 5 jours avant le weekend ‘
Si X=mardi
Message affiché :’Il reste 4 jours avant le weekend ‘
………….
…………..
X=samedi ou dimanche
Message affiché :’Reposez-vous, c’est le weekend ‘
Correction
Exercice 1
1.
function [r1,r2]=binome(a,b,c)
delta=b*b-4*a*c;
if delta >= 0
r1=[(-b+sqrt(delta))/(2*a),(-b-sqrt(delta))/(2*a)];
else
r2=[(-b+i*sqrt(-delta))/(2*a),(-b-i*sqrt(-delta))/(2*a)];
end
2.
function r = somme_carre( n )
s=0;
k=0;
while s<=n
s=s+k*k;
k=k+1;
end
r=k-2;
end
Exercice 2 :
function [pig,K]= bbpalgorithm()
pig = 0;
m=0;
format long
while pig ~=pi
m8 = 8*m;
pig = pig + (1/16)^m*(4/(m8+1)-(2/(m8+4)+ ...
1/(m8+5)+1/( m8+6)));
m=m+1;
K=m-1;
end
end
or
function pig= bbpalgorithm(n)
pig = 0;
for m=0:n
m8 = 8*m;
pig = pig + (1/16)^m*(4/(m8+1)-(2/(m8+4)+ ...
1/(m8+5)+1/( m8+6)));
end
Exercice 3
function [golden ,k]=fibonacci0
f(1) = 0; f(2) = 1; goldenold = 0;
kmax = 100; tol = 1.e-04;
for k = 3:kmax
f(k) = f(k-1) + f(k-2); golden = f(k)/f(k-1);
if abs(golden - goldenold) < tol
return
end
goldenold = golden;
end
return
Exercice 4
1.
function [ res ] = nfac( n )
k = 1; nfac = 1;
while k <= n
nfac = nfac*k;
k = k+1;
end
res=nfac;
end
2.
function [res,res2] = expo( x )
y=exp(x);
sum=0;
i=0;
while abs((y-sum)/y)> 0.000001
yy=nfac(i);
sum=sum+(x^i)/yy;
i=i+1;
end
res=sum;
res2=i;
end
Exercice 5
jour = input('Quel jour sommes nous ? ', 's' );
switch jour
case 'lundi'
jr = 5;
disp ([ 'Encore ' num2str(jr) 'jours avant le weekend' ]);
case 'mardi'
jr = 4;
disp ([ 'Encore ' num2str(jr) 'jours avant le weekend' ]);
case 'mercredi'
jr = 3;
disp ([ 'Encore ' num2str(jr) 'jours avant le weekend' ]);
case 'jeudi'
jr = 2;
disp ([ 'Encore ' num2str(jr) 'jours avant le weekend' ]);
case 'vendredi'
jr = 1;
disp ([ 'Encore ' num2str(jr) 'jours avant le weekend' ]);
%otherwise
% jr = 0;
% disp('cest lewekend') ;
%case 'samedi|dimanche'
case 'samedi'
disp('cest lewekend');
case 'dimanche'
disp('cest lewekend');
otherwise
disp('ce jour ne correspond pas aux jours de la semaine');
end
%disp ([ 'Encore ' num2str(jr) 'jours avant le weekend' ])