programmation, langage fortran
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

programmation, langage fortran



  1. #1
    invite9d2516b7

    programmation, langage fortran


    ------

    bonjour j'ai écris un programme pour trouver la valeur de y a chaque instant t
    voila le programme:
    Code:
    programm tp
    real k,z,y(500),x,Dt,Q,v,t
    k=0.0004
    Q=0.023
    v=50
    z=0.0045
    x=0.003
    Dt=0.1
    do
    t=0,45
    y(t)=y(t)+((k*(z-(2*y))*(x-y)*Dt)/(v+(Q*t)))
    enddo
    if (t.le.45)then
    t=t+0.1
    endif
    write(*,*)y(t)
    end
    sauf que il y a une erreur dans la formule de y mais je ne sais pas c'est quoi au juste

    en plus ce programme me donne la dernière valeur c'est tout
    aidez moi svp
    merci

    -----
    Dernière modification par yoda1234 ; 12/01/2010 à 12h37.

  2. #2
    gienas
    Modérateur

    Re : programmation, langage fortran

    Bonjour soline14 et tout le groupe

    Citation Envoyé par soline14 Voir le message
    ... real k,z,y(500),x,Dt,Q,v,t
    ...
    t=0,45
    ...
    Tiens, je crois reconnaître du Pascal.

    t semble être un réel, mais son assignation, avec une virgule, devrait hurler.

    Que se passe-t-il si tu assignes par t=0.45?

  3. #3
    inviteec2f08ae

    Wink Re : programmation, langage fortran

    Citation Envoyé par gienas Voir le message

    t semble être un réel, mais son assignation, avec une virgule, devrait hurler.

    Que se passe-t-il si tu assignes par t=0.45?
    +1

    Cyrille

  4. #4
    invite2d7144a7

    Re : programmation, langage fortran

    Bonjour,
    Citation Envoyé par gienas Voir le message
    Tiens, je crois reconnaître du Pascal.
    Non, en Pascal, on aurait écrit
    Code:
    ... k,z,y(500),x,Dt,Q,v,t : real
    sans oublier que le type real du Pascal, qui vient en fait de Turbo Pascal de Borland est déconseillé en utilisation étant un type spécifique, sur 6 octets, et pour lequel le compilateur n'utilise pas le FPU, mais uniquement le CPU, dommage les temps de calculs.

    Citation Envoyé par gienas Voir le message
    t semble être un réel, mais son assignation, avec une virgule, devrait hurler.
    Sauf si le compilateur est assez intelligent pour utiliser les représentations via la localisation.

  5. A voir en vidéo sur Futura
  6. #5
    invite9d2516b7

    Re : programmation, langage fortran

    merci de votre tentation
    alors si je prend t=0.45, il va considerer que la valeur de t c'est 0,45
    or que t varie de 0 à 45
    merci encore une fois

  7. #6
    Calvert

    Re : programmation, langage fortran

    Salut !

    Plusieurs problèmes, à vue de nez :

    Code:
    do
    t=0,45
    y(t)=y(t)+((k*(z-(2*y))*(x-y)*Dt)/(v+(Q*t)))
    enddo
    Comme je comprends, tu as l'intention de faire une boucle sur t, t allant de 0 à 45. Dans ce cas, il faut écrire sur une seule ligne :

    Code:
    do t=0,45
    et, dans cette éventualité, t doit être déclaré comme un entier.
    Si t est effectivement un réel, tu as une boucle "infinie", de la quelle tu ne sortiras jamais si tu n'ajoute pas une condition "exit" quelque part entre "do" et "enddo".

    De plus, si t est un réel, il doit être initialisé comme :

    Code:
    t=0.45
    et pas avec une virgule, comme signalé avant.

    Autre problème, tu itères sur le tableau y.
    Soit t est un entier, soit c'est un réel. Dans ce dernier cas, l'attribution à t d'une valeur réelle va poser de gros problèmes avec son utilisation comme indice d'un tableau.

    Autre problème : tu utilises y(t) pour définir y(t). Or, y(t) n'est pas initialisé, il peut donc prendre une valeur au mieux nulle, au pire quelconque en fonction du compilateur que tu utilises !

    Par la suite :

    Code:
    if (t.le.45)then
    t=t+0.1
    endif
    De nouveau, dans l'écriture de la condition de "if", on comprend que t est un entier (sinon, tu aurais plutôt quelque chose comme
    Code:
    if (t.le.45.)
    ). Cependant, juste après, tu ajoute 0.1 à t, comme si c'était un réel !

    Finalement :

    Code:
    write(*,*)y(t)
    Il va écrire à l'écran la valeur de y(t), pour la denière valeur de t qu'il connaît ! Comme t est un réel, il ne sauras pas comment en faire un indice de tableau !

    Si tu veux écrire tout le tableau, il te faut passer soit par une boucle "do...enddo", toi écrire simplement

    Code:
    write(*,*) y
    mais il va écrire tout le tableau (500 nombres), qui ne sont visiblement pas tous intéressant.

    Le point le plus délicat, à mon avis, est de lever l'ambiguïté entre t réel et t entier, en utilisant deux variables différentes !

  8. #7
    invite9d2516b7

    Re : programmation, langage fortran

    merci beaucoup

Discussions similaires

  1. langage fortran
    Par invite9d2516b7 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 04/01/2010, 12h07
  2. choix d'un langage de programmation
    Par invite372d0439 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 22/11/2009, 21h45
  3. programmation en fortran
    Par tpscience dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 18/05/2009, 12h53
  4. Programmation langage UNIX
    Par inviteb77375f9 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 01/07/2008, 21h53
  5. Langage de programmation gratuit
    Par SunnySky dans le forum Logiciel - Software - Open Source
    Réponses: 16
    Dernier message: 18/06/2007, 20h47
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...