Bonjour, j'ai eu un problème dans les résulats de la formule qui calcul le cosinus entre deux vecteurs :
j'ai vérfier le programme et il es jsute mais qu'and je teste pour deux vecteurs de dimension 24 , le resulat est supprieur à 1 ( hors il foudrais être entre [-1, 1] ) .
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cos ( X,Y) = ( somme( xi*yi) / Racine [somme(xi²)*somme(yi²) ]
voici le programme que j'ai fait :
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 private double calcCos(int ha[] , int hb[]){ int l=ha.length; double x=0; double y=0; double d=0; for (int i=0;i<l;i++) { //System.out.println(ha[i]+" * "+hb[i]); d+=(ha[i]*hb[i]); x=x+(ha[i]*ha[i]); y=y+(hb[i]*hb[i]); } System.out.println("d="+d); x=Math.sqrt(x); y=Math.sqrt(y); System.out.println("x="+x); System.out.println("y="+y); double s=x*y; System.out.println("s="+s); d=d/(s); System.out.println("d="+d); return d; }
et les deux vecteurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ha[]={ 23952 ,22776, 14528, 4961 ,4176 ,3547 ,1680, 1180, 28971 ,26939, 7407 4344 ,4597 ,2653 ,1076, 813, 40018, 19433, 5566 ,4615 ,4479 ,1645, 396 648}; hb[]={ 38285, 19960, 29100, 21662 ,8784 ,3111 ,1444 ,874 ,35708, 5900, 24121 32617 ,18394 ,5882 ,562 ,36 ,50777, 29165, 17759 ,11567 ,6849 ,5855 ,1125 123};
j'aimerai bien qu'elle qu'un qui m'aide ou de m'expliquer pour quoi .
merci d'avance .
Partager