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 :

la fonction gaussienne


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 37
    Par défaut la fonction gaussienne
    bonjour

    je veux écrire un programme en utilisant les fichiers pour tracer la fonction gaussienne (c la solution initiale de mon problème ) quand je plote la fonction je trouve pas la bonne allure Nom : gaussienne.png
Affichages : 1461
Taille : 82,8 Kopar contre c quand j'écris la formule de la fonction f(x) = exp((-(x+l)**2)/(2.D0))/sqrt((2.D0)*pi) je trouve la bonne allure Nom : Capture.png
Affichages : 619
Taille : 52,4 Ko je vois pas c quoi le problème.

    Si quelqu'un pourrait m'aider je serai vraiment reconnaissante

    merci d'avance!
    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
    26
    27
    28
     
    program solution
      implicit none
     
      real, dimension(:),allocatable :: x
      integer :: i,n
      real::l,xdeb,xfin,dx,pi
     
      open(unit=10, file='parametre')
      read(10,*) n,xdeb,xfin
      close(10)
     
      allocate(x(n))
     
      l=xfin-xdeb
      dx = l*1.D0/(n+1)
      pi = 4.D0*datan(1.D0)
      do i=1,n
         x(i) = (1.D0/sqrt(2.D0*pi))*exp((-((i*dx)-(l/2.D0))*((i*dx)-(l/2.D0)))/2.D0)
      end do
     
      open(unit=10, file='solution_ini.dat')
      do i = 1,n
         write(10,*) x(i)
      end do
      close(10)
     
    end program solution
    et pour les parametres j'ai pris 100 0.D0 1.D0

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Par défaut
    Salut.
    C'est parce que les abscisses sont différents. Je retrouve la même courbe avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n=100 ; xdeb=-10.d0 ; xfin = 10.d0
    Vérifie si l'argument de l'exponentiel est correct (facteur pi manquant ?)

  3. #3
    Membre actif
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 37
    Par défaut la fonction gaussienne
    salut __dardanos__

    j'ai mis pi = 4.D0*datan(1.D0) (ligne 16 du prog) mais pour quoi ça marche pas avec xdeb = 0 et xfin = 1?!!!

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Par défaut
    On peut réécrire la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        do i = 1, n
            absc = i * dx - l / 2.D0
            x(i) = 1.D0 / sqrt(2.D0*pi) * exp(-.5d0 * absc**2)
        end do
    La forme générale d'une gaussienne étant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     1.D0 / sqrt(2.D0*pi) / sigma * exp(-.5d0 * (absc-mu)**2 / sigma**2)
    Tu as pris une gaussienne avec un écart type sigma de 1. Elle est centrée, mu=0 (elle est maximale en zéro). Rappelle toi que l'écart type est lié à la largeur à mi-hauteur.
    Avec xdeb=0 et xfin=1, x varie de -0,49 à +0,49. Comme sigma=1, on a toujours |x|<sigma/2. D'où la courbe qui varie peu.
    Avec xdeb=-10 et xfin=+10, x varie de -9,80 à +9,80. x prend des valeurs telles que |x|>>sigma. On retrouve la forme en cloche présentée dans les manuels.

  5. #5
    Membre actif
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 37
    Par défaut la fonction gaussienne
    merci __dardanos__

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Coder fonction gaussienne en langage C
    Par bru.antoine dans le forum Bibliothèques, systèmes et outils
    Réponses: 2
    Dernier message: 01/02/2012, 09h44
  2. Détection de fonction gaussienne
    Par prog_ dans le forum C++
    Réponses: 2
    Dernier message: 24/06/2010, 08h16
  3. Appliquer fonction gaussienne
    Par houshafs dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/02/2010, 09h12
  4. Réponses: 1
    Dernier message: 02/11/2009, 13h23
  5. La convolution de deux fonctions gaussiennes
    Par mobi_bil dans le forum Mathématiques
    Réponses: 1
    Dernier message: 26/06/2009, 11h39

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