Les fonctions mathématiques dans le domaine des complexes ? ... Une unité à réutiliser. Les fonctions gérées sont listées ci-dessous. Tous mes tests révèlent l'entière fonctionnalité de cette unité. Mais lisez bien les commentaires (histoire de ne pas être trompé).
Remarquons que la fonction ArgCosHypCpx est délicieuse :-))
AddCpx, SubsCpx, MultCpx, DivCpx
ScalCpx, DetCpx, PositiveCpx, NegativeCpx, SymCpx
Cpx, CpxToStr, StrToCpx, ExpToRealCpx
ReCpx, ImCpx, AbsCpx, ArgumentCpx, ConjCpx, SqrCpx, SqrtCpx, IntPuissCpx, PowerCpx
ExpCpx, LnCpx, LogCpx
CosCpx, SinCpx, TanCpx, SecCpx, CscCpx, CoTanCpx
ArcCosCpx, ArcSinCpx, ArcTanCpx
CosHCpx, SinHCpx, TanHCpx
ArgCosHCpx, ArgSinHCpx, ArgTanHCpx
Conclusion :
Vous pouvez toujours aller voir
http://altert.family.free.fr/
1) cos(pi) = -1 et pas zéro
2) Si on résoud algébriquement pour trouver la racine carrée d'un nombre complexe, on tombe d'abord sur 4 réponses. Si on n'oublie pas la condition sur les signes, alors il ne reste plus que 2 solutions. Correction: sqrt(a+ib) donne 2 réponses et non 4. En réalité, c'est facile: tout nombre complexe admet N racines lorsqu'on lui applique la fonction "racine Nième". En l'occurence, racine carrée est telle que N=2, soit 2 racines par la fonction SqrtCpx.
C'était juste une précision...
Mais surtout, je voulais préciser 3 choses:
1)
Avec le code ShowMessage(CpxToStr(ExpToRealCpx(1,Pi))); le résultat n'est pas vraiment -1+i, car l'application de cos(pi) ne fait pas exactement 0 avec les processeurs. Tout dépendant duquel bien sûr, mais le décalage n'est pas lié à mon unité. J'avoue que c'est ennuyeux pour quelqu'un qui recherche un formalisme absolu, qui n'est pas ici offert. Tout est géré numériquement avec les approximations qui en découlent. La racine carré de 2, ou Pi ne peuvent pas être stockés avec exactitude dans un EXTENDED, car ces nombres sont irrationnels. Ils sont donc approchés et c'est pour cela que le cos du Pi approché ne fait pas -1.
2)
La fonction (a+ib)^(c+id) [soit l'utilisation de la fonction PowerCpx] n'est valable que pour a, b, c et d positifs. Les nombres négatifs sont presque du n'importe quoi mathématique. La fonction se permet donc de modifier les paramètres (d'où le VAR). Essayez le code suivant pour voir les conséquences au niveau du C1.
procedure TForm1.Button1Click(Sender: TObject);
var C1, C2 : TCpx;
begin
C1:=Cpx(1,-3);
C2:=Cpx(2,2);
PowerCpx(C1,C2); //on ne stocke pas le résultat
ShowMessage(CpxToStr(C1));
ShowMessage(CpxToStr(C2));
end;
3)
Dernier point. De par la propriété fondamentale des complexes (càd i²=-1), le résultat des fonctions ne sont pas uniques comme cela l'est pourtant avec les fonctions à valeurs réelles. Par exemple, sqrt(2) renvoit une solution unique dans R, mais sqrt(2+i) renvoit formellement 4 réponses dans C. La fonction n'en renvoit qu'une seule, mais les 3 autres découlent de ce résultat. Il fallait bien choisir !
Eh oui! C'est des maths ... Ne soyez donc pas étonnés!
Mes fonctions sont toutes bêtes et indépendantes les unes des autres. Enfin, pas avec la fonction ArcTan2 écrite en assembleur.
Ne cherchant pas à savoir, je crée (même à concurrence). De toute façon, si j'ai à choisir, j'utiliserai mon unité dans laquelle j'ai toute confiance.
J'ai vite fait regardé DMath. Je trouve un lien (rien ne dit que c'est le bon):
http://www.unilim.fr/pages_perso/jean.debord/tpmath/dmath.zip
Rien qu'à voir la tête des unités, c'est déjà pas la même chose.
Qu'y-a-t-il de plus que dans "DMath pour Delphi"
Salutations
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.