Erreur de Calcul d'un cosinus (sous Delphi 7 personnel)

Fushi Messages postés 2 Date d'inscription mercredi 2 mai 2007 Statut Membre Dernière intervention 18 décembre 2009 - 17 déc. 2009 à 10:14
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 18 déc. 2009 à 08:56
Bonjour
J'ai un petit problème avec Delphi 7.
Avec la partie de programme si dessous la valeur des résulats est érroné. En exécutant le programme pas à pas, et surveillant les valeurs les cosinus ne corresponde pas.
Les valeurs LatDep,LongDep,Latfin,LongFin sont en radians.
Même pour l'arccos(E15) en forcant la valeur E15 à 0,006507 le programme me trouve une valeur à 6.XXX e-304 alors que si je mets dans les points suivi arccos(0.006507) il me donne 1,5642..... la bonne valeur.
Seriez vous d'ou peut venir mon problème ?

Merci d'avance

Christophe.


Function Az(LatDep,LongDep,LatFin,LongFin:real):Real;
Var U2,U1,g,tt,tt1,C1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c15,E15,rest : extended;
Begin
C1:=LatDep; // en Radians 0,84150080
C2:=LongDep; // en Radians 0,04670210
C3:=LatFin; // en Radians 0,84150080
C4:=longFin; // en Radians 0,02924881
C7:=Cos(radtodeg((1.5707)-C3));
C9:=Sin((Pi/2)-C1);
C10:=Cos((Pi/2)-C1);
C11:=arccos(Sin(C1)*Sin(C3)+Cos(C1)*Cos(C3)*Cos(C2-C4));
C12:=Sin(C11);
C13:=Cos(C11);
If (C9*C12)<>0 then
E15:=(C7-(C10*C13))/(C9*C12);
rest:=arccos(E15);

3 réponses

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
17 déc. 2009 à 11:31
Salut,
mais ... le résultat de ta fonction il est où ?
Essaye comme ceci :

function Az(LatDep,LongDep,LatFin,LongFin:real):Extended; 
 Var U2,U1,g,tt,tt1,C1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c15,E15 : Extended; 
begin 
 C1 := LatDep; // en Radians 0,84150080 
 C2 := LongDep; // en Radians 0,04670210 
 C3 := LatFin; // en Radians 0,84150080 
 C4 := longFin; // en Radians 0,02924881 
 C7 := Cos(radtodeg((1.5707) - C3)); 
 C9 := Sin((Pi / 2) - C1); 
 C10 := Cos((Pi / 2) - C1); 
 C11 := ArcCos(Sin(C1) * Sin(C3) + Cos(C1) * Cos(C3) * Cos(C2 - C4)); 
 C12 := Sin(C11); 
 C13 := Cos(C11); 
 if (C9 * C12) <> 0 then E15 := (C7 - (C10 * C13)) / (C9 * C12); 
 Result := ArcCos(E15);
end;


Si tu ne fournis pas le résultat de ta fonction, elle sera indéfinie, d'où le 6.XXX, à moins que j'aie mal compris la question.

Cordialement, Bacterius !
0
Fushi Messages postés 2 Date d'inscription mercredi 2 mai 2007 Statut Membre Dernière intervention 18 décembre 2009
18 déc. 2009 à 08:45
Elle des définis après mais la valeur des C7 est déja érroné.
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
18 déc. 2009 à 08:56
Ben je sais pas, tu convertis en degrés dans C7, c'est voulu ? Les fonctions mathématiques ne prennent que des radians.

Cordialement, Bacterius !
0