0% ont trouvé ce document utile (0 vote)
18 vues5 pages

TD - TP 2

Le document présente une série d'exercices de programmation MATLAB, incluant des fonctions pour résoudre des équations quadratiques, calculer des sommes de carrés, approximations de π, la suite de Fibonacci, et l'exponentielle. Chaque exercice est accompagné d'une correction détaillée avec le code MATLAB correspondant. L'objectif est de renforcer les compétences en programmation et en mathématiques appliquées.

Transféré par

xussser
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)
18 vues5 pages

TD - TP 2

Le document présente une série d'exercices de programmation MATLAB, incluant des fonctions pour résoudre des équations quadratiques, calculer des sommes de carrés, approximations de π, la suite de Fibonacci, et l'exponentielle. Chaque exercice est accompagné d'une correction détaillée avec le code MATLAB correspondant. L'objectif est de renforcer les compétences en programmation et en mathématiques appliquées.

Transféré par

xussser
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é 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' ])

Vous aimerez peut-être aussi