BOnjour tous,
Nouvelle journée, nouveau problème: je souhaite mettre en place l'algorithme de calcul d'une fonction trigo, via le fameux algorithme CORDIC (celui implémenté dans les calculatrices).
Celui-ci ne fonctionne que pour une valeur d'angle comprise entre 0 et pi/2
Voici ce que j'ai écrit :
Je souhaiterais étendre l'algorithme à des angles compris en tre 0 et 2*pi. Je commence à traiter le cas (pi, 3pi/2), cf mon code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 function v = cordic(beta,n) %Initialisation v=[1;0]; sigma=1; Kn = prod(1./sqrt(1+2.^(-2*(0:(n-1))))); if (beta>=pi && beta<=3*pi/2) cordic(beta-pi,n); v=-v; return; end %Algorithme Cordic pour beta entre 0 et pi/2 (algorithme non valable sinon) if (beta>=0 && beta<=pi/2) if beta==pi/4 % Bug dans algo Cordic sinon v=[sqrt(2)/2;sqrt(2)/2]; return; end %Itérations au calcul de cos(beta) et sin(beta) for i=0:n-1 R=[1 -sigma*(2^(-i)); sigma*(2^(-i)) 1]; v=R*v; beta = beta-sigma*atan(2^(-i)); sigma = sign(beta); end %Calcul final du vecteur (cos(beta),sin(beta)) v=v*Kn; end
Le problème est que quand je teste un truc du style cordic(5*pi/4), j'obtiens un truc incohérent (juste -v, comme si le rappel de la fonction ne marchait pas).
Une idée SVP ?
Merci d'avance![]()
Partager