ALGO 1.1 œ Correction TD N°5.
factorielle ← factorielle * indice. // Affichage du résultat. Afficher(« La factorielle } // Fin du bloc contenant l'algorithme de calcul. } // Fin du bloc ...
Écologie factorielle et attributs géographiques
soumise à l'algorithme factoriel puisque ce sont justement les saturations
cours 2:Complexité des algorithmes récursifs
Exemple 1 : La fonction factorielle. (avec T(n) le temps d'exécution nécessaire pour un appel à Facto(n)). Page 6. 6. 11. Algorithmes récursifs. Calcul de
6.5 Valuations dans un anneau factoriel
algorithme d'Euclide : la division euclidienne −1 = + +1 se réécrit 1. −1 + (− ). = +2. On obtient ainsi la description ...
Preuve de la correction de la fonction FACTORIELLE à laide de la
On souhaite étudier la correction du programme FACTORIELLE (Algorithme 1) implémenté selon les Algorithm 1 La fonction FACTORIELLE dans un langage impératif ...
1 Mod`eles de Markov cachés factoriels 2 Mélange danalyses
Calculer les équations d'estimation (E-step et M-step) par l'algorithme EM. 1. Page 2. 3 Implémentation - mélange de Gaussiennes. Le fichier “EMGaussienne.dat
EXERCICES – ALGORITHME SECONDE Exercice 5.1 Ecrire un
Ecrire un algorithme qui demande un nombre de départ et qui calcule sa factorielle. NB : la factorielle de 8
Introduction à lanalyse factorielle typologique
lyses factorielles des correspondances locales à la convergence de l'algorithme améliorée). On peut définir la notion d'axes "forts" et "faibles" et en
Scénario: Classification non supervisée et représentations factorielles
Cet algorithme est appliqué sur un exemple simple comparant des distances entre villes. Les données se présentent donc sous la forme du triangle inférieur d'une.
STT-7620 ANALYSE FACTORIELLE EXPLORATOIRE VARIABLES
pour ajuster un modèle d'analyse factorielle lorsque l'algorithme de calcul pour l'estimateur du maximum de vraisemblance ne converge pas. Page 31. - 31
ALGO 1.1 œ Correction TD N°5.
Calcul de la factorielle d'un entier naturel (avec une structure Calcul du pgcd de deux nombres a et b strictement positifs par l'algorithme d'Euclide.
Écologie factorielle et attributs géographiques
1 RACINE J. B. (1972)
Correction TP de programmation no3 - Fonctions et procédures
La fonction pour calculer la factorielle d'un entier est donnée dans le fichier binome.cpp. 1. Pour tester la fonction factoriel on utilise la fonction
Preuve de la correction de la fonction FACTORIELLE à laide de la
On souhaite étudier la correction du programme FACTORIELLE (Algorithme 1) implémenté selon les principe de la programmation impérative. Théorème. La fonction
cours 2:Complexité des algorithmes récursifs
Algorithmes récursifs. Calcul de complexité. ?. Exemple 1 : La fonction factorielle. Pour calculer la solution générale de cette équation on peut procéder
ALGORITHME SECONDE Exercice 5.1 Ecrire un algorithme qui
Exercice 5.7. Ecrire un algorithme qui demande un nombre de départ et qui calcule sa factorielle. NB : la factorielle de 8
Algorithmique Récursivité
Algorithme Fact. Entrée : un entier positif N. Sortie : factorielle de N si N = 0 retourner 1 sinon retourner N x Fact(N-1)
PGCD ET PPCM ALGORITHMES DE CALCUL. APPLICATIONS.
I. Notion de PGCD et de PPCM sur un anneau factoriel Algorithmes de calcul dans les anneaux euclidiens ... Exemple d'application de l'algorithme.
Cours de mathématiques - Exo7
Vous avez bien sûr reconnus le calcul de 5! Étudions un autre algorithme. Code 25 (recursif.py (2)). def factorielle(n):.
Chapitre 1: Introduction à lalgorithmique
Algorithmes récursifs. Algoritmes récursifs : exemple. Factorielle : algorithme itératif. Algorithm 3 FACTORIEL-ITERATIF (n : entier positif).
Correction TP de programmation n
o3Cours de programmation impérative-Licence MPI L1 S2 - Info 121-Fonctions et procéduresCette séance de travaux pratiques est dédiée à l"écriture et l"utilisation de fonctions simples.
Voici quelques exemples de fonctions et procédures de la bibliothèque standard deC++: prototype de la fonction fichier descriptionint abs(int j) cstdlibvaleur absolue entière float fabs(float x) cmathvaleur absolue réelle float round(float x) cmatharrondi à l"entier le plus proche float trunc(float x) cmatharrondi à l"entier inférieur float pow(float x, float y) cmathpuissance réelle float sqrt(float x) cmathracine carrée réelle float exp(float x) cmathexponentielle réelle float log(float x) cmathlogarithme réel void exit(int e) cstdlibquitte le programme Pour utiliser une fonction, il faut inclure le fichier de déclaration correspondant (par exemple #includeLeC++ne fait pas la différence entre une fonction et une procédure : une procédure est juste
une fonction qui ne retourne rien (c"est-à-direvoid). Voici comment on peut écrire la fonction valeur absolue : float absolue(float x) { if (x >= 0.) return x; else return -x; }xExercice 1. Fonction factorielle et coefficients du binôme de Newton La fonction pour calculer la factorielle d"un entier est donnée dans le fichierbinome.cpp. 1. P ourtester la fonction factoriel, on utilise la fonctiontestFactoriel. Ajouter dans cette fonction quelques tests en dehors de la convention factoriel(0) = 1. 2. On app elleco efficientdu binôme de Ne wton(ou co efficientbinomial) n ple nombre de parties àpéléments dans un ensemble ànéléments. Par exemple : 0 0 = 1;3 2 = 3;4 2 = 6Le coefficient binômial
n ppeut être calculé par : n p =n!p!(np)!En utilisant la fonction factorielle écrite à la question précédente, compléter la fonctionbinome
dans le fichierbinome.cpp, et la tester par la fonctiontestBinome. 11#include
2#include
3 4using namespace std;
56#define ASSERT(test) if (!(test)) cout << "Test failed in file " << __FILE__ \
7<< " line " << __LINE__ << ": " #test << endl
89/** Calculer le factoriel d"un entier
10* @param n un entier
11* @return un entier
12**/13int factoriel(int n) {
14if (n < 0) {
15cerr << "Factoriel argument negatif file " << __FILE__ << " line " << __LINE__ << endl;
16exit(1);
17}18int res = 1, i;
19for (i = 1 ; i <= n ; i ++) {
20res *= i;
21}22return res;
23}24
25/** Tester la fonction factorielle
26**/27void testFactoriel() {
28ASSERT(factoriel(0) == 1);
29ASSERT(factoriel(1) == 1);
30ASSERT(factoriel(4) == 24);
31ASSERT(factoriel(10) == 3628800);
32}33
34/** Calculer le binome de Newton
35* @param n entier, p entier, n >= p
36* @return un entier
37**/38int binome(int n, int p) {
39// Il n"y a pas de soucis à utiliser la division entière ici donc il n"y a pas besoin d"un cast
40// vers un double.
41return factoriel(n)/(factoriel(p) * factoriel(n - p));
42}43
44/** Tester la fonction binome
45**/46void testBinome() {
47// valeur de base
48ASSERT(binome(0, 0) == 1);
49ASSERT(binome(3, 2) == 3);
50ASSERT(binome(4, 2) == 6);
51ASSERT(binome(5, 3) == 10);
52ASSERT(binome(10, 5) == 252);
53}54
2
55/** Fonction principale
56**/57int main() {
58testFactoriel();
59testBinome();
60cout << "OK" << endl;
61}!3 Dans la suite, on demande d"écrire soi-même les fonctions dont on a besoin.
De plus, on commentera et testera, dans la mesure du possible, toutes lesfonctions à l"aide de la macroASSERTci-dessous:
#define ASSERT(test) if (!(test)) cout << "Test failed in file " << __FILE__ \ << " line " << __LINE__ << ": " #test << endl xExercice 2. Ecriture et test d"une fonction simple.Vous allez maintenant faire la démarchecomplète d"ecrire une fonction vous-même puis de l"appeler. Le but est de maîtriser la syntaxe de
base de définition et d"appel d"une fonction. Vous pouvez consulter votre cours ou bien repartir de
l"exemple de la factorielle. 1. Ra joutezdans le même fic hierle co ded"une fonction squarequi prend en paramètre un nombre entier et calcule son carré. 2. Ra joutezaussi le co ded"une fonction testSquarequi teste la fonctionsquareen l"ap- pellant avec différentes valeurs (vous pouvez vous inspirer des fonctionstestFactorielet testBinome). 3. Ra joutezun test a vecdeux app elsim briqués,p ourv érifierque (32)2= 81. 4. Mo difiezv otreprog rammemainpour lancer les tests de cette nouvelle fonction. !1#include2#include
3 4using namespace std;
56#define ASSERT(test) if (!(test)) cout << "Test failed in file " << __FILE__ \
7<< " line " << __LINE__ << ": " #test << endl
89/** Calculer le carré d"un nombre
10* @param n réel
11* @return un réel
12**/13int square(int n) {
14return n * n;
15} 1617/** Tester la fonction binome
18**/19void testSquare() {
20// valeur de base
21ASSERT(square(0) == 0);
22ASSERT(square(1) == 1);
23ASSERT(square(2) == 4);
24ASSERT(square(3) == 9);
25ASSERT(square(10) == 100);
26ASSERT(square(square(3))== 81);
27}28
29/** Fonction principale
30**/4
31int main() {
32testSquare();
33cout << "OK" << endl;
34}!xExercice 3. (Racine carrée etn-ième)Cet exercice est obligatoire, ceux qui ne l"ont pas fini en
TP devront envoyer le corrigé par email au professeur du TP. On reprend l"exercice 2 du TP précédent.
Sur les nombres à virgule (float), l"opérateur==n"est pas très utile à cause des erreurs d"arrondis.
Pour résoudre ce problème, quand on veut comparer deux nombres à virgule, on teste si la valeur
absolue de la différence est négligeable devant les deux nombres : jxyj jxjetjxyj jyj(1) oùest un très petit nombre. 1. Définir une constan teepsilonégale à106(1e-6enC++); 2. Écrire une fonction presqueEgalqui prend deux nombresxetyet qui teste s"ils vérifient lacondition ci-dessus, c"est à dire s"ils sont égaux avec une précision de. Remarque importante :
quand on vous demande d"écrire une fonction qui teste quelque chose, cela signifie qu"on veut une fonction qui renvoie un booléen. 3. Écrire une fonction testpresqueEgalque vérifie par desASSERTquepresqueEgal(1,1+epsilon/2),presqueEgal(1, 1),presqueEgal(1+1, 2),presqueEgal(0, 0)retournent
bien vrai et quepresqueEgal(1, 1+2*epsilon),presqueEgal(0, 1)retournent bien faux. On montre en mathématique que étant donné un réel positifala suite u0:=a; un+1:=un+a=un2
(2) converge vers pa. 4.Écrire une fonction qui prend en argumen tun réel aet calcule sa racine carrée en utilisant la
suite définie ci-dessus. Par définition, la racine carrée est la solution positivexde l"équation
x2=a. On utilisera ce test et la fonctionpresqueEgaldéfinie plus haut pour arrêter le calcul
au bon moment. Si vous en avez besoin, vous pouvez adapter la fonctionsquareprécédente pour qu"elle travaille aussi avec les réels (typefloat). 5. T estercette fonction en v érifianten treautre que p0 = 0,p1 = 1,p4 = 2etp21:4142135 6. Écrire un programme qui de mandeu nnom brep ositifà l"utilisateur et qui affic hesa racine carrée.Pour calculer la racinen-ième d"un nombre, on procède de la même manière que pour la racine carrée
en utilisant la suite u0:=a; uk+1=1n
(n1)uk+au n1 k qui converge vers npasia >0. 7.Écrire une fonction q uicalcule la racine n-ième d"un réela. Par définition, la racinen-ième
est la solution positivexde l"équationxn=a. On utilisera ce test et la fonctionpresqueEgal définie plus haut pour arrêter le calcul au bon moment. On reprendra la fonction puissance duTP précédent.
8.T esterla fonction sac hantque
5p21:1486983.
5 xExercice 4. Exponentielle La fonction exponentielle est définie parexp(a) :=P1 i=0ai=i!: 1. En réutilisan tla fonction presqueEgalécrire une fonctionexponentiellequi calcule l"expo- nentielle d"un nombrea. On utilisera une boucle et un accumulateur pour calculer les sommesPN i=0ai=i!. On stoppe la boucle dès que deux sommes calculées consécutivement sont "presqueégales».
Cette méthode n"est pas très efficace car, en utilisant les fonctionsfactorielleetpuissance, on re-
calcule plusieurs fois les mêmes produits. Pour aller plus vite, on peut, dans la même boucle, accumuler
la factorielle, la puissance et la somme. 2. Écrire une fonction exponentielle2qui fait le calcul plus rapidement en utilisant les trois accumulateurs dans la même boucle. On gardera la même condition d"arrêt de la boucle. !1#include2#include
3 4using namespace std;
56#define ASSERT(test) if (!(test)) cout << "Test failed in file " << __FILE__ \
7<< " line " << __LINE__ << ": " #test << endl
89const float epsilon = 1e-6;
1011/** Calculer le factoriel d"un entier
12* @param n un entier
13* @return un entier
14**/15int factoriel(int n) {
16if (n < 0) {
17cout << "Factoriel argument negatif file " << __FILE__ << " line " << __LINE__ << endl;
18exit(1);
19}20int res = 1, i;
21for (i = 1 ; i <= n ; i ++) {
22res *= i;
23}24return res;
25}26
27/** Puissance d"un nombre réel
28* @param n un entier positif
29* @param a un nombre réel
630* @return a^n
31**/32float puissance(float a, unsigned int n) {
33float res = 1.;
34for (unsigned int i = 0; i 35res = res*a;
36return res;
37}
38
39/** Valeur absolue d"un float
40* @param x un float
41* @return |x|
42**/
43float absolue(float x) {
44if (x < 0) return -x;
45else return x;
46}
47
48/** Égalité des float
49* @param x, y deux float
50* @return si x == y à epsilon près
51**/
52bool presqueEgal(float x, float y) {
53return absolue(x-y) <= epsilon*absolue(x) and absolue(x-y) <= epsilon*absolue(y);
54}
55
56/** Exponentielle d"un float
57* @param a, un float
58* @return exp(a)
59**/
60float exponentielle(float a) {
61int i = 0;
62float res = 0.;
63bool stop = false;
64while (not stop) {
65float tmp = res + (float)puissance(a, i) / (float)factoriel(i);
66if (presqueEgal(res, tmp))
67stop = true;
68else
69res = tmp;
70i = i + 1;
71}
72return res;
73}
74
75void testExponentielle() {
76ASSERT(presqueEgal(exponentielle(0.), 1.));
77ASSERT(presqueEgal(exponentielle(1.), 2.7182818));
78ASSERT(presqueEgal(exponentielle(2.), 7.3890561));
79}
80
81/** Exponentielle d"un float avec la méthode rapide
82* @param a, un float
83* @return exp(a)
84**/
7 85float exponentielle2(float a) {
86int i = 0;
87float acc_puiss = 1;
88float acc_fact = 1;
89float res = 0.;
90bool stop = false;
91while (not stop) {
92float tmp = res + (float)acc_puiss / (float)acc_fact;
93if (presqueEgal(res, tmp))
94stop = true;
95else
96res = tmp;
97i = i + 1;
98acc_puiss = acc_puiss * a;
99acc_fact = acc_fact * i;
100}
101return res;
102}
103
104void testExponentielle2() {
105ASSERT(presqueEgal(exponentielle2(0.), 1.));
106ASSERT(presqueEgal(exponentielle2(1.), 2.7182818));
107ASSERT(presqueEgal(exponentielle2(2.), 7.3890561));
108}
109
110/** Fonction principale
111**/
112int main() {
113testExponentielle();
114cout << "OK" << endl;
115}!
xExercice 5. Logarithme Pour calculer le logarithme d"un nombre positifa, on peut utiliser de la même manière que pour la racine le fait que la suite u 0:=a; un+1:=un+aexp(un)1
converge versln(a). 1. Écrire une fonction logarithmequi calcule le logarithme d"un nombre positif. Par définition, le logarithme deaest la solutionxde l"équationexp(x) =a. On utilisera ce test et la fonction presqueEgaldéfinie plus haut pour vérifier que l"on a bien le résultat. 2. Écrire un pro grammequi v érifieq uep ourun nom brex, on a bienexp(ln(x)) =x. 3. Écrire un pro grammequi calcule pxpar la formule px=x12 = expln(x)2 Vérifier que l"on obtient bien le même résultat qu"avec la fonction de l"exercice précédent.
8 4.Même question p our
npx, avec la formule n px=x1n = expln(x)n !1#include 2#include
3#include
4 5#define ASSERT(test) if (!(test)) cout << "Test failed in file " << __FILE__ \
6<< " line " << __LINE__ << ": " #test << endl
7 8using namespace std;
9 10const float epsilon = 1e-6;
11 12/** Valeur absolue d"un float
13* @param x un float
14* @return |x|
15**/ 16float absolue(float x) {
17if (x < 0) return -x;
18else return x;
19} 20 21/** Égalité des float
22* @param x, y deux float
23* @return si x == y à epsilon près
24**/
25bool presqueEgal(float x, float y) {
26return absolue(x-y) <= epsilon*absolue(x) and absolue(x-y) <= epsilon*absolue(y);
27}
28
29/** Exponentielle d"un float avec la méthode rapide
30* @param a, un float
31* @return exp(a)
32**/
33float exponentielle(float a) {
34int i = 0;
35float acc_puiss = 1;
36float acc_fact = 1;
37float res = 0., res_old;
38do {
39res_old = res;
40res += acc_puiss / acc_fact;
41i = i + 1;
42acc_puiss = acc_puiss * a;
43acc_fact = acc_fact * i;
44} while (not presqueEgal(res, res_old));
45return res;
46}
47
48/** logarithme d"un float
9quotesdbs_dbs7.pdfusesText_13
35res = res*a;
36return res;
37}38
39/** Valeur absolue d"un float
40* @param x un float
41* @return |x|
42**/43float absolue(float x) {
44if (x < 0) return -x;
45else return x;
46}47
48/** Égalité des float
49* @param x, y deux float
50* @return si x == y à epsilon près
51**/52bool presqueEgal(float x, float y) {
53return absolue(x-y) <= epsilon*absolue(x) and absolue(x-y) <= epsilon*absolue(y);
54}55
56/** Exponentielle d"un float
57* @param a, un float
58* @return exp(a)
59**/60float exponentielle(float a) {
61int i = 0;
62float res = 0.;
63bool stop = false;
64while (not stop) {
65float tmp = res + (float)puissance(a, i) / (float)factoriel(i);
66if (presqueEgal(res, tmp))
67stop = true;
68else
69res = tmp;
70i = i + 1;
71}72return res;
73}74
75void testExponentielle() {
76ASSERT(presqueEgal(exponentielle(0.), 1.));
77ASSERT(presqueEgal(exponentielle(1.), 2.7182818));
78ASSERT(presqueEgal(exponentielle(2.), 7.3890561));
79}80
81/** Exponentielle d"un float avec la méthode rapide
82* @param a, un float
83* @return exp(a)
84**/7
85float exponentielle2(float a) {
86int i = 0;
87float acc_puiss = 1;
88float acc_fact = 1;
89float res = 0.;
90bool stop = false;
91while (not stop) {
92float tmp = res + (float)acc_puiss / (float)acc_fact;
93if (presqueEgal(res, tmp))
94stop = true;
95else
96res = tmp;
97i = i + 1;
98acc_puiss = acc_puiss * a;
99acc_fact = acc_fact * i;
100}101return res;
102}103
104void testExponentielle2() {
105ASSERT(presqueEgal(exponentielle2(0.), 1.));
106ASSERT(presqueEgal(exponentielle2(1.), 2.7182818));
107ASSERT(presqueEgal(exponentielle2(2.), 7.3890561));
108}109
110/** Fonction principale
111**/
112int main() {
113testExponentielle();
114cout << "OK" << endl;
115}!xExercice 5. Logarithme Pour calculer le logarithme d"un nombre positifa, on peut utiliser de la même manière que pour la racine le fait que la suite u
0:=a; un+1:=un+aexp(un)1
converge versln(a). 1. Écrire une fonction logarithmequi calcule le logarithme d"un nombre positif. Par définition, le logarithme deaest la solutionxde l"équationexp(x) =a. On utilisera ce test et la fonction presqueEgaldéfinie plus haut pour vérifier que l"on a bien le résultat. 2. Écrire un pro grammequi v érifieq uep ourun nom brex, on a bienexp(ln(x)) =x. 3. Écrire un pro grammequi calcule pxpar la formule px=x12 = expln(x)2Vérifier que l"on obtient bien le même résultat qu"avec la fonction de l"exercice précédent.
84.Même question p our
npx, avec la formule n px=x1n = expln(x)n !1#include2#include
3#include
4 5#define ASSERT(test) if (!(test)) cout << "Test failed in file " << __FILE__ \
6<< " line " << __LINE__ << ": " #test << endl
78using namespace std;
910const float epsilon = 1e-6;
1112/** Valeur absolue d"un float
13* @param x un float
14* @return |x|
15**/16float absolue(float x) {
17if (x < 0) return -x;
18else return x;
19} 2021/** Égalité des float
22* @param x, y deux float
23* @return si x == y à epsilon près
24**/25bool presqueEgal(float x, float y) {
26return absolue(x-y) <= epsilon*absolue(x) and absolue(x-y) <= epsilon*absolue(y);
27}28
29/** Exponentielle d"un float avec la méthode rapide
30* @param a, un float
31* @return exp(a)
32**/33float exponentielle(float a) {
34int i = 0;
35float acc_puiss = 1;
36float acc_fact = 1;
37float res = 0., res_old;
38do {
39res_old = res;
40res += acc_puiss / acc_fact;
41i = i + 1;
42acc_puiss = acc_puiss * a;
43acc_fact = acc_fact * i;
44} while (not presqueEgal(res, res_old));
45return res;
46}47
48/** logarithme d"un float
9quotesdbs_dbs7.pdfusesText_13[PDF] factorielle algorithme recursive
[PDF] factorielle calculatrice casio fx 92
[PDF] factorielle calculatrice casio graph 25+
[PDF] factorielle calculatrice casio graph 35+
[PDF] factorielle calculatrice ti 30xb
[PDF] factorielle calculatrice ti 82
[PDF] factorielle calculatrice ti 83
[PDF] factorielle calculatrice ti 83 premium
[PDF] factorielle cours de maths
[PDF] factorielle cours maths
[PDF] factoring ax2+bx+c worksheet
[PDF] factoring ax^2 + bx + c worksheet
[PDF] factoring difference of squares trinomial
[PDF] factoring the difference of two perfect squares worksheet answers