[Nombres complexes]

Forum d'archive d'entraide mathématique
Anonyme

[Nombres complexes]

par Anonyme » 30 Avr 2005, 16:44

Bonjour,

Je suis en train d'implémenter un outil de conversion
de coordonnées géographiques au format WGS84
(données issues d'un GPS Garmin) vers le format
UTM.

J'ai trouvé sur le site de l'IGN tous les outils et autres
algorithmes de conversion.

Cependant, j'arrive à la dernière étape et je sèche
car je dois, à priori, résoudre une équation avec des
nombres complexes !

Voici l'algorithme utilisé :

C = c(e) e est une constante, c(e) est une fonction
que j'ai réussi à implémenter. On obtient un tableau
de C1 à C5

L = L(Phi, e) : Phi est la latitude (en radians), L(a,b)
est une fonction que j'ai réussi à implémenter.

Teta = arcsin(sin(Lambda - LambdaC)/(ch(L)) : LambdaC
est une constante, Lambda est la longitude (radians)

Ls = L(Teta, 0) : on utilise à nouveau la fonction L(a,b)

Delta = arctan (sh(L) / (cos(Lambda - LambdaC))



Et maintenant, c'est là que je coince :

PetitZ = Delta + i * Ls (i^2 = -1)




GrandZ = n*C1*PetitZ + n*C2*sin(2 * k * PetitZ) +
n*C3*sin(2 * k * PetitZ) + n*C4*sin(2 * k * PetitZ) +
n*C5*sin(2 * k * PetitZ)



X = Im(GrandZ)
Y = Re(GrandZ)




Voilà, je ne sais pas comment calculer PetitZ, ni Im(GrandZ) ni
Re(Z).

J'ai besoin de programmer cet algorithme en Visual Basic !!!

Quelqu'un peut-il m'aider ?

Merci d'avance,

Vincent BENNER
Contact : 03 80 66 29 04



Anonyme

Re: [Nombres complexes]

par Anonyme » 30 Avr 2005, 16:44

"Vincent BENNER - PAGE UP" wrote:

>Bonjour,
>
>Je suis en train d'implémenter un outil de conversion
>de coordonnées géographiques au format WGS84
>(données issues d'un GPS Garmin) vers le format
>UTM.
>
>J'ai trouvé sur le site de l'IGN tous les outils et autres
>algorithmes de conversion.
>
>Cependant, j'arrive à la dernière étape et je sèche
>car je dois, à priori, résoudre une équation avec des
>nombres complexes !
>
>Voici l'algorithme utilisé :
>
>C = c(e) e est une constante, c(e) est une fonction
>que j'ai réussi à implémenter. On obtient un tableau
>de C1 à C5
>
>L = L(Phi, e) : Phi est la latitude (en radians), L(a,b)
>est une fonction que j'ai réussi à implémenter.
>
>Teta = arcsin(sin(Lambda - LambdaC)/(ch(L)) : LambdaC
>est une constante, Lambda est la longitude (radians)
>
>Ls = L(Teta, 0) : on utilise à nouveau la fonction L(a,b)
>
>Delta = arctan (sh(L) / (cos(Lambda - LambdaC))
>
>
>
>Et maintenant, c'est là que je coince :
>
> PetitZ = Delta + i * Ls (i^2 = -1)
>
>
>
>
>GrandZ = n*C1*PetitZ + n*C2*sin(2 * k * PetitZ) +
> n*C3*sin(2 * k * PetitZ) + n*C4*sin(2 * k * PetitZ) +
> n*C5*sin(2 * k * PetitZ)
>
>
>
>X = Im(GrandZ)
>Y = Re(GrandZ)
>
>
>
>
>Voilà, je ne sais pas comment calculer PetitZ, ni Im(GrandZ) ni
>Re(Z).
>
>J'ai besoin de programmer cet algorithme en Visual Basic !!!
>
>Quelqu'un peut-il m'aider ?
>
>Merci d'avance,
>
>Vincent BENNER
>Contact : 03 80 66 29 04
>

Un nombre complexe a une partie réelle et une partie imaginaire, qu'on
écrit a+i*b. Par example, pour le complexe PetitZ, la partie réelle
est Delta, et Ls est la partie imaginaire. Le '+' est là juste comme
notation, ce n'est pas vraiment une addition.

Alors pour calculer GrandZ, il faut les opérations +, * et la fonction
sinus complexe, ceci devrait etre suffisant (contactez moi par email
si vous avez besoin de plus d'explications):

'--------------------
Option Explicit

Type Complexe

re As Double
im As Double

End Type

' Cosinus hyperbolique avec argument réel
Public Function Cosh(a As Double)

Cosh = (Exp(a) + Exp(-a)) / 2

End Function

' Sinus hyperbolique avec argument réel
Public Function Sinh(a As Double)

Sinh = (Exp(a) - Exp(-a)) / 2

End Function

' Additionner 2 complexes
Public Function AddComplexe(a As Complexe, b As Complexe) As Complexe

AddComplexe.re = a.re + b.re
AddComplexe.im = a.im + b.im

End Function

' Multipler 2 complexes
Public Function Mult2Complexe(a As Complexe, b As Complexe) As
Complexe

Mult2Complexe.re = a.re * b.re - a.im * b.im
Mult2Complexe.im = a.re * b.im + a.im * b.re

End Function

' Multiplier un complexe et un double
Public Function MultComplexeDouble(a As Complexe, b As Double) As
Complexe

MultComplexeDouble.re = a.re * b
MultComplexeDouble.im = a.im * b

End Function

' Sinus avec argument complexe
Public Function SinComplexe(a As Complexe) As Complexe

SinComplexe.re = Sin(a.re) * Cosh(a.im)
SinComplexe.im = Cos(a.re) * Sinh(a.im)

End Function

Anonyme

Re: [Nombres complexes]

par Anonyme » 30 Avr 2005, 16:44

Merci beaucoup pour cette aide
précieuse !

Vincent BENNER

 

Retourner vers ♲ Grenier mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite