Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Fortran et Matlab qui peut m'aider svp



  1. #1
    magmatic_rock

    Unhappy Fortran et Matlab qui peut m'aider svp


    ------

    Bonjour,
    je cherche quelqu'un qui serait capable et qui accepterais de m'aider pour un projet informatique que j'ai à faire depuis 3mois mais je galère vraiment trop!
    En fait, il y a des questions sur fortran, que la prof estime très facile mais mon programme rencontre des erreurs que je ne trouve pas le pourquoi du comment et enfin les deux dernières questions sont à traiter sur matlab que l'on a vu juste pendant une heure en cours! Donc j'ai très peu de notion pour faire mon projet!
    Je ne suis pas du tout en informatique mais en géologie donc je pense que pour un informaticien cela ne doit pas être trop compliqué!

    Si vous accepté je peux vous envoyer mon projet par email

    Merci énormément à tous ceux qui pourront m'aider! Je suis certain que la partie fortran ne vous demandera pas plus de 30min si vous connaissez fortran comparé à moi. De plus cette partie sur fortran j'ai fait 3questions sur 4 mais c'est juste qu'il y a des fautes que je n'arrive pas à corriger et donc ça ne s'exécute pas!

    Merci

    -----
    And the groundhog puts the chocolate in the paper!

  2. Publicité
  3. #2
    Coincoin

    Re : Fortran et Matlab qui peut m'aider svp

    Salut,
    Ton code est trop long pour être posté sur le forum ?
    Si c'est juste que tu n'as pas envie de le mettre en public, je veux bien jeter un coup d'oeil à ton Fortran : envoie-le moi par MP.
    Encore une victoire de Canard !

  4. #3
    magmatic_rock

    Re : Fortran et Matlab qui peut m'aider svp

    Bonsoir Coincoin,
    merci beaucoup pour vouloir m'aider.

    Non le problème c'est que chez moi je n'ai pas Force2 pour ouvrir le dossier, j'y ait bossé dessus à la fac mais là je ne peux pas ouvrir donc je peux juste envoyer ce que j'ai par email.

    Mais en fait je viens d'appeler une amie qui va me l'envoyer par email (le Force2) et donc demain je pourrais le lire et je te posterai ce que j'ai fait et aussi avec les questions.

    Merci
    And the groundhog puts the chocolate in the paper!

  5. #4
    magmatic_rock

    Re : Fortran et Matlab qui peut m'aider svp

    Salut voilà mon code (je viens d'installer le force 2), si tu veux voir les questions ensuite je peux te les poster bien sur.


    Implicit none
    Integer I



    REAL Grad(I), nK(I), UC(I), CT(I), CTP(I), som, K(I), A(I),
    * moyUC, nA(I), n, B, C, D, E ,Somme1, Somme2, Somme3, Somme4, m

    OPEN (7, file='flow.txt' , status='old')
    I=1
    850 READ(7,end=950) Grad(I), nK(I), K(I), nA(I), A(I), UC(I), CT(I),
    * CTP(I)
    I=I+1
    goto 850
    950 continue

    Write(*,*) I
    n=I
    Som=0
    Do I=1,n
    Som=som+ UC(I)
    enddo
    moyUC=som/n

    Min= 1000
    Max=0

    Do I=1,n
    IF (UC(I).GT.MAX) then
    MAX=UC(I)
    endif
    enddo

    Do I=1,n
    If (UC(I).LT.MIN) then
    MIN=UC(i)
    endif
    enddo

    Do I=1,n
    UC(I)=Grad(I)*K(i)
    enddo
    Write (*,*) UC(I)

    Somme1=0
    Do I=0,n+1
    B=Somme1+ UC(I+1)*CTP(I+1)
    enddo

    Somme2=0
    Do I=0,n+1
    C=Somme2+ UC(I+1)
    enddo

    Somme3=0
    Do I=0,n+1
    D=Somme3+ CTP(I+1)
    enddo

    Somme4=0
    Do I=0,n+1
    E=Somme4+ UC(I+1)*UC(I+1)
    enddo

    m =(n*A-B*C)/(n*D-D)

    Write(*,*) m

    Stop
    end


    Comme va le voir en le mettant sur ton force 2 il y a 13erreurs!!!


    Merci beaucoup pour ton aide.
    And the groundhog puts the chocolate in the paper!

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

    Re : Fortran et Matlab qui peut m'aider svp

    J'ai pas tout regarder en détails, mais ce qui me choque, c'est que tu déclares des tableaux de taille I avant d'avoir donner une valeur à I.
    Normalement il faudrait que I soit déclaré avant (avec "parameter"). Vu que tu ne peux pas le faire car tu fais varier I, il faut que tu utilises l'allocation dynamique de mémoire. Ca ressemble un peu à ça :

    real toto [allocatable] (:) (je déclare mon tableau toto mais je ne donne pas sa dimension, je dis juste que je veux pouvoir l'allouer)

    n=127

    allocate(toto(n))

    ...
    deallocate(toto) (à la fin pour libérer la mémoire)


    Bon, par contre, je n'ai jamais fait de réallocation, mais je te laisse farfouiller pour trouver.

    Si tu n'as jamais fait d'allocation mémoire avant, dis-le moi, je t'expliquerai le principe.
    Encore une victoire de Canard !

  8. #6
    domlefebvre

    Re : Fortran et Matlab qui peut m'aider svp

    Bonjour,
    D'autre part, utiliser I comme paramètre de taille de tes tableaux, puis comme indice de boucle, ce n'est pas une bonne idée....

    Si tu le permets, je regarde ton code de plus prêt, mais il est certain qu'il faut commencer par utiliser un paramètre iSize par exemple pour déclarer la taille de tes tableaux (fais le en statique pour commencer, tu iras plus tard vers l'allocation dynamique de mémoire) puis utilise i comme indice de boucle. En principe, on écrit les indices de boucle en minuscules.

  9. Publicité
  10. #7
    domlefebvre

    Re : Fortran et Matlab qui peut m'aider svp

    Encore une question:
    dans ton code A est un vecteur. Or, dans le calcul de m, en fin de code, tu traite A comme un scalaire? Qu'as tu voulu calculer?

  11. #8
    magmatic_rock

    Re : Fortran et Matlab qui peut m'aider svp

    Oula en fait j'ai rien compris à ce que vous dis je suis nul en info on a eut que 5H de cours seulement sur fortran pour faire ça!

    voilà je viens de corriger plein de trucs et il me reste une erreur et voilà ce que j'ai:

    Implicit none
    Integer I, n,



    REAL Grad(1243), nK(1243), UC(1243), CT(1243), CTP(1243), som,
    * K(1243), A(1243), moyUC, nA(1243), B, C, D, E ,Somme1,
    * Somme2, Somme3, Somme4, m, Max, Min

    OPEN (7, file='flow.txt' , status='old')
    I=1
    850 READ(7,end=950) Grad(I), nK(I), K(I), nA(I), A(I), UC(I), CT(I),
    * CTP(I)
    I=I+1
    goto 850
    950 continue

    Write(*,*) I
    n=I
    Som=0
    Do I=1,n
    Som=som+ UC(I)
    enddo
    moyUC=som/n

    Min= 1000
    Max=0

    Do I=1,n
    IF (UC(I).GT.MAX) then
    MAX=UC(I)
    endif
    enddo

    Do I=1,n
    If (UC(I).LT.MIN) then
    MIN=UC(i)
    endif
    enddo

    Do I=1,n
    UC(I)=Grad(I)*K(i)
    enddo
    Write (*,*) UC(I)

    Somme1=0
    Do I=0,n+1
    B=Somme1+ UC(I+1)*CTP(I+1)
    enddo

    Somme2=0
    Do I=0,n+1
    C=Somme2+ UC(I+1)
    enddo

    Somme3=0
    Do I=0,n+1
    D=Somme3+ CTP(I+1)
    enddo

    Somme4=0
    Do I=0,n+1
    E=Somme4+ UC(I+1)*UC(I+1)
    enddo

    m =(n*A-B*C)/(n*D-D)

    Write(*,*) m

    Stop
    end


    Bien sur n'hésitez à regarder mon sujet et corriger ce qui peut etre corrigé!

    Merci.
    And the groundhog puts the chocolate in the paper!

  12. #9
    domlefebvre

    Re : Fortran et Matlab qui peut m'aider svp

    Tu dois sans doute avoir un pb dans le calcul de m en fin de code. Dans la formule m =(n*A-B*C)/(n*D-D)
    tu utilises A comme un scalaire, alors que tu l'as déclaré en vecteur (tableau). En général, ce n'est pas terrible, sans compter les erreurs de compilation...

    Alors qu'elle est la bonne formule pour m? A est-il un scalaire ou un vecteur? Ne te manque-t-il pas un traitement comme pour B, C, D ou E?

    Pour tes int. de tableaux, ta méthode n'est pas très élégante! Utilise plutôt:

    Parameter (iSize = 1243)
    REAL Grad(iSize), nK(iSize), UC(iSize), CT(iSize), CTP(iSize)

  13. #10
    domlefebvre

    Re : Fortran et Matlab qui peut m'aider svp

    Suite des commentaires.....

    1 - il me semble curieux que tu déclares et charges les tableaux A et nA sans jamais les utiliser.

    2 - dans
    Write(*,*) I
    n=I
    Som=0
    Do I=1,n

    tu devrais plutôt écrire Write(*,*) n, pour lire directement n, sans passer par la variable intermédiaire I qui ne sert à rien.
    De plus, attention, si n > 1243, tu vas direct au plantage! Il faut faire un test sinon, dépassement de d'indice de tableau et bug.

  14. #11
    magmatic_rock

    Re : Fortran et Matlab qui peut m'aider svp

    Merci Domlefebvre pour votre aide mais j'avoue ne pas comprendre gd chose à ce que vous dîte!!! On a eut seulement 5h de cours de Fortran et 1h en matlab pour faire tout ce projet donc vous comprenez pourquoi je suis perdu?!!!

    la bonne formule pour m c'est justement à moi de la trouver mais je n'y arrive pas!
    Un scalaire, un vecteur??? je ne sais pas du tout ce que c'est en informatique!!!
    pour le iSize=1243 ce n'est pas grave que ma façon soit moins élégante car c'est notre prof qui nous avait fait comme cela! Avec 5h de cours on va pas loin surtout quand on a jamais fait d'info avant!!!
    Enfin dans Write(*,*) I
    n=I
    Som=0
    Do I=1,n
    si je met un n à la place de I après j'ai plus une erreur mais deux!!

    Comment feriez vous vous?
    And the groundhog puts the chocolate in the paper!

  15. #12
    domlefebvre

    Re : Fortran et Matlab qui peut m'aider svp

    pour l'histoire du n, c'est bizarre que tu ais une erreur: tu l'as bien déclaré en integer? Mais bon, laisse tomber, ce n'est pas grave. Voilà le code que j'ai et qui passe bien:

    Integer I, iSize, n
    Parameter (iSize = 1243)

    REAL Grad(iSize), nK(iSize), UC(iSize), CT(iSize), CTP(iSize)
    REAL som, K(iSize), A(iSize),moyUC, nA(iSize), B, C, D, E
    REAL Somme1, Somme2, Somme3, Somme4, m, Min, Max

    C Attention n doit etre < iSize il faut le tester
    Write(*,*)n
    Som=0
    Do I=1,n
    Som=som+ UC(I)
    enddo
    moyUC=som/n

    Un vecteur, c'est un tableau : par exemple lorsque que tu écris REAL A(1243).
    Un scalaire, c'est une variable monodimensionnelle, par exemple lorsque tu écris REAL A.

    Tu n'as pas le droit de déclarer une variable en tableau (A(1243)) et l'utiliser comme un scalaire comme tu le fais dans la définition de m: m =(n*A-B*C)/(n*D-D).

    Peux-tu me dire ce que tu veux calculer. c'est quoi A? Ta définition de m est sans doute fausse....

  16. Publicité
  17. #13
    domlefebvre

    Re : Fortran et Matlab qui peut m'aider svp

    As-tu fait un algo. de ton programme?
    Question: tu calcules E et tu ne t'en sert pas: est-ce normal?

  18. #14
    magmatic_rock

    Re : Fortran et Matlab qui peut m'aider svp

    Désolé je n'avais pas vu que je n'avais pas posté le sujet le voici:

    Etude du flux de chaleur sous la France


    On a un fichier Excel, « heatflow.xls », résumant les mesures et les calculs de flux de chaleur en différents point de France.
    Ce fichier fournit tout d’abord la position des forages, les conditions de températures et
    UC flux non corrigé
    CT flux corrigé des effets d'irrégularité de la surface topographique (correction TOPO)
    CTP flux corrigé TOPO et des effets de variations de la température de surface au cours du temps (PALEO).


    1 Les résultats fournis, à la base d’une carte de flux thermique sous la France sont donc les valeurs CTP. Calculer la moyenne du flux, la valeur minimale, la valeur maximale.
    2 Retrouver les valeurs de UC à partir des données fournies.
    3 On va tout d’abord chercher si l’on peut assimiler, en première approximation, les variations de corrections entre UC, CT et CTP à des variations linéaires. Dans cette hypothèse, calculer les facteurs de correction moyen pour passer de la mesure UC à CTP, le flux fourni en un point.
    4 Connaissant CT , UC et la topographie, trouvez le facteur de correction topographique appliqué aux valeurs de flux.
    5 On veut représenter une carte de variation du flux . Tout d’abord construire un fichier long, lat, en degrés décimaux et valeur du flux corrigé, qu’on appellera « HFmatlab »
    6 On va ensuite interpoler les valeurs pour obtenir une carte de variation continue.
    Utiliser un programme matlab ( avec notamment la fonction meshgrid ) pour obtenir cette carte. Vous pouvez vous aider des exemples donnés dans la DEMO.


    A côté en support j'ai un fichier exel d'où justement je tire le A et donc j'ai 1243 valeur pour ce A.
    Donc je pense avoir bien répondu aux questions 1 et 2 mais maintenant je bute sur la 3 avec ce problème du m=... et la 4 j'en sais rien du tout!


    Un algorithme j'en avait un mais étant donné que cela fait 3mois que je suis sur ce tout petit projet à galérer comme un fou il a souvent changé et là j'en ai plus!
    C'est d'ailleurs la raison (certainement) pour laquelle il y a ce bordel aussi avec le E!

    Voilà j'ai refait avec le début que vous m'aviez donné et j'ai 2erreurs now:

    Implicit none
    Integer I, iSize, n
    Parameter (iSize = 1243)



    REAL Grad(iSize), nK(iSize), UC(iSize), CT(iSize), CTP(iSize),
    * som, K(iSize), A(iSize), nA(iSize), moyUC, B, C, D, E, Somme1,
    * Somme2, Somme3, Somme4, Max, Min, m

    OPEN (7, file='flow.txt' , status='old')
    I=1
    850 READ(7,end=950) Grad(I), nK(I), K(I), UC(I), CT(I), A(I), nA(I),
    * CTP(I)
    I=I+1
    goto 850
    950 continue

    Write(*,*) n
    Som=0
    Do I=1,n
    Som=som+ UC(I)
    enddo
    moyUC=som/n

    Min= 1000
    Max=0

    Do I=1,n
    IF (UC(I).GT.MAX) then
    MAX=UC(I)
    endif
    enddo

    Do I=1,n
    If (UC(I).LT.MIN) then
    MIN=UC(I)
    endif
    enddo

    Do I=1,n
    UC(I)=Grad(I)*K(I)
    enddo
    Write (*,*) UC(I)

    Somme1=0
    Do I=0,n+1
    B=Somme1+ UC(I+1)*CTP(I+1)
    enddo

    Somme2=0
    Do I=0,n+1
    C=Somme2+ UC(I+1)
    enddo

    Somme3=0
    Do I=0,n+1
    D=Somme3+ CTP(I+1)
    enddo

    Somme4=0
    Do I=0,n+1
    E=Somme4+ UC(I+1)*UC(I+1)
    enddo

    m =(n*A-B*C)/(n*D-D)

    Write(*,*) m

    Stop
    end

    Et voilà ce que ça me dit:

    C:\Documents and Settings\JOJO\Mes documents\prog\Coeff.correctio ns.f: In program `MAIN__':
    C:\Documents and Settings\JOJO\Mes documents\prog\Coeff.correctio ns.f:66:
    m =(n*A-B*C)/(n*D-D)
    12
    Arithmetic operator at (1) must operate on two scalar (not array) subexpressions, two function invocations returning arithmetic scalars, or a combination of both -- but the subexpression at (2) is an array


    Si vous voulez je peux vous envoyer le doc exel par mail vous pouvez me le donner par mp ici?

    En tout cas merci beaucoup pour m'aider, ce n'est pas facil l'informatique quand on a aucune base.
    And the groundhog puts the chocolate in the paper!

  19. #15
    bs260961

    Re : Fortran et Matlab qui peut m'aider svp

    ce que je vois rapidement sur ce programme que ta fait un pb quand tu ouvre un fichier ou lire un fichier il faut specifié un format de lecture ou d'ecriture

Discussions similaires

  1. qq1 peut-il m'aider svp? électrocinétique :/
    Par trinity95 dans le forum Physique
    Réponses: 2
    Dernier message: 31/10/2007, 17h54
  2. qui peut m'aider....
    Par emeline_ dans le forum Science ludique : la science en s'amusant
    Réponses: 5
    Dernier message: 11/03/2007, 08h54
  3. qui peut m'aider???
    Par luluberlu dans le forum Chimie
    Réponses: 1
    Dernier message: 17/11/2004, 14h21
  4. qui peut m'aider?
    Par tilly dans le forum [ARCHIVE] Philosophie
    Réponses: 12
    Dernier message: 03/11/2004, 10h49
  5. Qui peut m'aider ?
    Par Gégé 88 dans le forum Électronique
    Réponses: 4
    Dernier message: 11/02/2004, 11h54
Découvrez nos comparatifs produits sur l'informatique et les technologies.