IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Exponentielle d'une matrice complexe


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut Exponentielle d'une matrice complexe
    Bonjour !

    je cherche à calculer l'exponentielle d'une matrice complexe (8x8). pour l'instant, j'ai simplement utilisé la somme de 1/(k!)*A^k, en variant k de 0 à la valeur maximale supportée...

    cependant, mon programme de simulation "part aux fraises" pour certaines valeurs.

    j'en conclus que la somme que j'utilise n'est pas précise. il ne m'est pas possible d'augmenter la précision en prenant des k plus grands.

    que faire pour m'en sortir ?

    quelqu'un connaitrait un algorithme fiable pour calculer l'exponentielle d'une matrice ? Merci d'avance pour votre aide

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    calculer l'exponentielle d'une matrice
    Que veux-tu faire avec?
    Jean-Marc Blanc

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    j'ai besoin de l'exponentielle d'une matrice afin de calculer l'évolution de la matrice densité (rho) d'un système de spin :

    rho(t+tau_1) = exp(-i*H*tau_1)*rho(t)*exp(i*H*tau_1)

    où H est l'Hamiltonien qui comprend les interactions qui régissent mon système. les dimensions de l'Hamiltonien sont (2^N)x(2^N), où N est le nombre de spins qui forment mon système. mon programme actuel utilise 3 spins, et il me faut donc effectuer les calculs sur des matrices 8x8 (mais j'ai dans l'espoir de l'étendre à un nombre de spins supérieur).

    une fois que j'obtiens le propagateur (P = exp(-i*H*tau_1)), j'effectue une boucle de n cycles, et j'ai l'impression que je propage une erreur, qui donne des résultats aberrants avec un nombre de cycle élevé.

    j'espère que mon explication n'est pas trop "fouilli"

    merci d'avance pour votre aide !

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    rho(t+tau_1) = exp(-i*H*tau_1)*rho(t)*exp(i*H*tau_1)
    Ceci ressemble à s'y méprendre à une formule de récurrence. Est-ce que par hasard tu ne serais pas en train d'essayer d'intégrer un système différentiel par la méthode d'Euler?
    Jean-Marc Blanc

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Est-ce que par hasard tu ne serais pas en train d'essayer d'intégrer un système différentiel par la méthode d'Euler?
    Jean-Marc Blanc
    euh... ça dépasse mes compétences...
    l'équation de départ (Liouville - von Neumann) est la suivante :

    d(rho(t))/dt=-i*[H(t), rho(t)]
    dans tous les textbooks de résonance magnétique nucléaire, on nous dit "simplement" que la solution est :

    rho(t)=U(t)*rho(0)*U(t)^-1 où U est le propagateur...

    j'ai écrit un programme en matlab qui fonctionne parfaitement (la fonction expm étant déjà implémentée), mais lorsque je l'écris en Fortran, j'ai dû créer la fonction et j'ai utilisé la somme décrite plus haut dans ce fil.


  6. #6
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Si ça peut t'aider, tu peux chercher dans les méthodes de propagations de paquets d'ondes.

    C'est une problématique classique pour les gens qui calculent la dynamique quantique de molécules. Dans leurs cas ils ont des choses très précises avec des matrices énormes vu qu'ils prennent en compte beaucoup de niveau de vibrations. Et le propagateur est quasiment le même donc ton problème doit déjà avoir une subroutine quelque part

    Bon courage

Discussions similaires

  1. vecteur propre d'une matrice complexe
    Par takout dans le forum Mathématiques
    Réponses: 2
    Dernier message: 02/01/2013, 15h58
  2. exponentielle d'une matrice
    Par hibouchka dans le forum MATLAB
    Réponses: 7
    Dernier message: 11/03/2011, 14h27
  3. triangulation d'une matrice complexe
    Par lili81 dans le forum Mathématiques
    Réponses: 9
    Dernier message: 14/06/2008, 15h12
  4. Réponses: 1
    Dernier message: 14/05/2007, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo