• Aucun résultat trouvé

On va maintenant utiliser le traitement de texte de Matlab Dans le menu

N/A
N/A
Protected

Academic year: 2022

Partager "On va maintenant utiliser le traitement de texte de Matlab Dans le menu"

Copied!
3
0
0

Texte intégral

(1)

Cnam-Paris-2007-2008 CSC012 F .Guiraud

1 Lundi 8 Octobre 2007

Exemples d’algorithmes On va maintenant utiliser le traitement de texte de Matlab Dans le menu fichier , tapez new puis M-file

exemple 2 : calcul de factorielle n : n ! F = n ! = 1 × 2 × …. × n

ALGORITHME Entrer le nombre n Initialiser F à 1

Pour i =2 jusqu’à n faire : F ← F × i

Fin Afficher F

On utilise l’instruction input pour entrer la donnée n et on initialise F à 1 ; on utilise la boucle for :

F=1 ; n=input (‘nombre de termes’) ; for i = 2 :n

F = F * i ; end ;

F

On peut aussi décrémenter : n=input (‘nombre de termes’) ; F=n ;

for i = n :-1 :1 F = F * i ; end ; F

exemple 3 : calcul de la somme d’une série Soit S la série S = 1

4 + 1

4

2

+ ……+ 1

4

n

+ …. , série géométrique de raison 1

4 ; on veut calculer la somme de n premiers termes de cette série :

1

ère

étape : S = 0 ; x = 1 4

2

ème

étape S = S+x ( S = 1

4 ; x = 1 4 ) 3

ème

étape : x = x

4 ( x = 1 16 ) 4

ème

étape : S + x ( S = 1

4 + 1 16 )

5

ème

étape : x × 1

4 (x = 1 64 )

6

ème

étape : S + x ( S = 1 4 + 1

16 + 1

64 )

Etc

(2)

Cnam-Paris-2007-2008 CSC012 F .Guiraud

2

On a une suite dont les termes sont les sommes partielles ; on passe de S

k

à S

k+1

en ajoutant 1

4

k+1

à S

k

Programme :

S=0 ; x = 0.25;n=input (‘nombre de termes’) ;for x = 1 :n S = S + x : x = x

4 ; end

S

Vérification : calcul théorique : la somme d’une suite de n termes d’une suite géométrique de raison q est

S

n

= x

1

1 -q

n

1 - q

On ajoute en fin de programme : S – ( 1 – 0.25^n)/(1-0 .25) On doit obtenir 0.

Calcul de Pi par la méthode de Monte Carlo

On considère un quart de disque de rayon dont l’aire est égale à π

4 . On tire au sort, grâce à la fonction Random (unifrnd), les coordonnées d’un point dans le carré de coté 1. Sur un très grand nombre de points, on teste pour savoir si le point appartient ou non au quart de cercle.

Probabilité qu’un point soit dans le quart de cercle = nbre cas favorables nombre cas possibles Soit

n

lim

nbre points ds quart de cercle

n = π

4

Programme

n= input (‘nombre de points’)

m = 0; % initialisation de m, nombre de points dans le quart de cercle for i = 1 :n

x=rand; % x est un nombre compris entre 0 et 1 y=: rand; % y est un nombre compris entre 0 et 1

if x

2

+ y

2

< = 1 % on teste si le point appartient au quart de cercle

m=m+1; % on incrémente de 1 le nombre de points dans le quart de cercle end

end

PI = 4*m/n

Variante utilisant la boucle while

: dans ce cas on effectue la boucle jusqu’à avoir une erreur donnée et à chaque exécution dela boucle le nombre n est doublé :

n=50 ; m=0 ; % initialisation de n et m

PI= 4 ; % initialisation de PI à un nombre très supérieur à 3.14 while abs( PI -pi) > 0.001 % erreur voulue 0.001

m=0 ; for i = 1 :n

x=rand; y= rand;

if x^2 + y^2 <= 1

(3)

Cnam-Paris-2007-2008 CSC012 F .Guiraud

3 m=m+1;

end % fin du test end % fin de la boucle for PI = 4*m/n

n = n*2; % on double n

end % fin de la boucle while

On peut aussi créer un deuxième fichier function qui introduit une nouvelle commande, dépendant du paramètre n, et qui sera appelée dans le programme principal.

function PI = montecarlo(n) % programme principal

m=0 ; n= input (‘nombre de points’) for i = 1 :n k= input (‘nombre de boucles’)

x=rand; for i =1:k

y= rand; PI = montecarlo(n) if x^2 + y^2 <= 1 n=n*2;

m=m+1: end end

end

PI = 4*m/n;

Algorithme d’Euclide

On veut calculer le pgcd de deux nombres a et b On fait la division euclidienne de a par b : a = bq

0

+ r

0

avec r

0

< b Le pgcd de a et b divise aussi b et r

0

donc on recommence ; on fait la division de b par r

0

: b=r

0

q

1

+ r

1

avec r

1

< r

0

On continue jusqu’à avoir un reste égal à 0, le pgcd est le dernier reste non nul

%algorithme d'euclide

a=input('+grd nbre') b=input('+petit nbre')

i=1;r= mod(a,b); % mod(a,b) retourne le reste de la division de a par b while r > 0

a=b;

b=r;

r=mod(a,b);

end pgcd=b

Références

Documents relatifs

[r]

[r]

Il représente un déplacement de 5 unités de longueur vers la droite, parallèlement à l’axe des abscisses.. Il représente un déplacement de 2 unités de longueur vers le haut,

L'utilisation des styles est INDISPENSABLE dès qu’on utilise régulièrement un traitement de texte : c’est probablement la notion la plus productive. Il devient aisé

Pour montrer que est dérivable en , il faut montrer que ∈ à l’ensemble de

[r]

On va montrer que l'ensemble des points vériant l'équation est le cercle de centre le point d'axe 4i 3 et de rayon 2 3.. Notons x la partie réelle de m et y sa

Non : comme toutes les ondes, les ondes sismiques se propagent sans transport de matière mais avec transport d’énergie.. 2.3 Une onde est longitudinale si la direction de