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 :

fonction et matrice?


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut fonction et matrice?
    Bonjour je veux declarer une matrice (2x2) qui depend d'une variable xi,
    j'ai ecrit le code suivant, apres compilation le compilateur me dit qu'on ne peut pas redimentionner la fonction, pouvez vous m'aider svp?
    merci
    Voila mon code
    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
     
          function A(xi)
          double precision xi, A(2,2)
          double precision u,u0,l,ky,lb,delta,del,e
          del=5.0d0
    	  U0=50.0d0
          L=200.0d0
          ky=0.03d0
          lb=4.5d-4
    	  e=6.8d-2
    	  delta=0.0d0
          U=(U0/2.0d0)*(tanh(((-xi*L)-(L/2.0d0)/del)+tanh(((xi*L)-(L/2.0d0))/del)+2.0d0)
          A(1,1)=-L*(ky-(1.0d0/(lb**2))*L*xi)
    	  A(1,2)=L*(e-U+delta)
    	  A(2,1)=-L*(e-U-delta)
    	  A(2,2)=L*(ky-(1.0d0/(lb**2))*L*xi)
          return
          end

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour,

    Une fonction ne renvoie qu'une seule valeur.
    Pour en récupérer plus, il faut passer par une subroutine.

    Bonne continuation.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    Sous réserve d'une erreur de parenthèse à la ligne commençant par "U=(U0/2.0d0)*", ton code fonctionne de mon côté.

    La seule chose que j'ai fait est d'insérer la fonction dans une section "contains" dans le programme appelant. Ton problème est donc un problème d'interface. Tes pistes de solution sont donc :
    • Section contains comme j'ai fait
    • Bloc interface
    • Module


    Voici mon code fonctionnel :
    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
    program test
       implicit none
       real (8)  Xi
     
       Xi = 1.0
       write (*,*) A(Xi)
    contains
          function A(xi)
          double precision xi, A(2,2)
          double precision u,u0,l,ky,lb,delta,del,e
          del=5.0d0
    	  U0=50.0d0
          L=200.0d0
          ky=0.03d0
          lb=4.5d-4
    	  e=6.8d-2
    	  delta=0.0d0
          U=(U0/2.0d0)*tanh(((-xi*L)-(L/2.0d0)/del)+tanh(((xi*L)-(L/2.0d0))/del)+2.0d0)
          A(1,1)=-L*(ky-(1.0d0/(lb**2))*L*xi)
    	  A(1,2)=L*(e-U+delta)
    	  A(2,1)=-L*(e-U-delta)
    	  A(2,2)=L*(ky-(1.0d0/(lb**2))*L*xi)
          return
          end function
    end program
    Commentaire éditorial pour terminer : Ta fonction ne contient pas de « implicit none », ce qui est une mauvaise habitude de travail ...

Discussions similaires

  1. Fonction séparation matrice
    Par ben1015 dans le forum MATLAB
    Réponses: 4
    Dernier message: 29/11/2010, 13h05
  2. Application de fonction à une matrice.
    Par Ambrym dans le forum MATLAB
    Réponses: 1
    Dernier message: 13/10/2010, 11h10
  3. Réponses: 28
    Dernier message: 10/08/2010, 08h14
  4. Fonction et matrice
    Par feynman dans le forum Fortran
    Réponses: 5
    Dernier message: 23/04/2008, 13h47
  5. [Débutant] Fonction sur matrices
    Par scraven dans le forum MATLAB
    Réponses: 4
    Dernier message: 27/04/2007, 09h03

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