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

Pascal Discussion :

Probl�me math�matique dans un programme


Sujet :

Pascal

  1. #1
    Membre r�gulier
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Par d�faut Probl�me math�matique dans un programme
    Salut, j'ai un probl�me math�matique et c'est urgent dans l'exercice suivant:

    Voici l'exercice:
    Soit la suite U d�finie par U0=3/4 et la relation:
    pour tout n appartient N, Un+1=Un-Un�
    On admet que la suite U est d�croissante et converge vers 0.
    Ecrire un programme qui d�termine le premier entier n pour lequel Un< 0.001

    voici ma solution
    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 exercice;
       uses crt;
       var n:integer;
     
       function u(n:integer):real;
          var i:integer;v:real;
          begin
             v:=3/4;
             for i:=1 to n do
                v:=v-v*v;
             u:=v;
     
          end;
     
    begin
       clrscr;
       n:=0;
     
       repeat
          n:=n+1;
       until u(n)<1/1000;
     
       write('le premier entier n pour lequel Un<1/1000 est=',n);
       readln;
    end.

    Alors mon probl�me est qu'on est pas s�r que les valeurs de la suite passeront par 0.001 (on a l'information que la suite est d�croissante mais pas qu'elle est strictement d�croissante) .lorsque on ex�cute le programme oui c'est juste mais cot� algorithmique est ce qu'il y a un probl�me de ne pas faire un test..
    aidez moi s'il vous plait

  2. #2
    R�dacteur/Mod�rateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    D�cembre 2011
    Messages
    4 173
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : Enseignant

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par d�faut
    Bonjour !

    Ton programme me para�t r�pondre correctement � la question.

    Ce qui t'inqui�te, c'est de savoir ce qui se passerait si cette condition

    n'�tait jamais remplie, c'est �a ?

  3. #3
    Membre r�gulier
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Par d�faut
    Citation Envoy� par Roland Chastain Voir le message
    Bonjour !

    Ton programme me para�t r�pondre correctement � la question.

    Ce qui t'inqui�te, c'est de savoir ce qui se passerait si cette condition

    n'�tait jamais remplie, c'est �a ?
    merci pour votre r�ponse oui c'est �a le probl�me

  4. #4
    R�dacteur/Mod�rateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    D�cembre 2011
    Messages
    4 173
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : Enseignant

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par d�faut
    Tu pourrais ajouter un test sur la valeur de n en fixant une limite :

    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
    program exercice_02;
     
    uses
      Crt;
     
    var
      u: real;
      n: integer;
     
    begin
      u := 3/4;
      n := 0;
      while (u >= 1/1000) and (n < 5) do
      //while (u >= 1/1000) and (n < 10000) do
      //while (u >= 1/1000) and (n < High(n)) do
      begin
        u := u - u * u;
        Inc(n);
      end;
      WriteLn('n = ', n);
      ReadLn;
    end.
    Soit dit en passant, une chose que tu pourrais am�liorer dans ton programme, c'est que pour chaque valeur de n, tous les termes de la suite sont recalcul�s inutilement.

  5. #5
    Membre r�gulier
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Par d�faut
    Citation Envoy� par Roland Chastain Voir le message
    Tu pourrais ajouter un test sur la valeur de n en fixant une limite :

    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
    program exercice_02;
     
    uses
      Crt;
     
    var
      u: real;
      n: integer;
     
    begin
      u := 3/4;
      n := 0;
      while (u >= 1/1000) and (n < 5) do
      //while (u >= 1/1000) and (n < 10000) do
      //while (u >= 1/1000) and (n < High(n)) do
      begin
        u := u - u * u;
        Inc(n);
      end;
      WriteLn('n = ', n);
      ReadLn;
    end.
    Soit dit en passant, une chose que tu pourrais am�liorer dans ton programme, c'est que pour chaque valeur de n, tous les termes de la suite sont recalcul�s inutilement.

    ah toi maintenant tu parle de la fonction que j'ai programmer oui tu as raison si je fait une fonction j'aurai des recalcules inutiles c'est vrai mais concernant votre proposition de fixer la valeur du 'n' je ne peux pas faire �a puisque elle peut �tre une valeur inf�rieur � la valeur attendu

  6. #6
    R�dacteur/Mod�rateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    D�cembre 2011
    Messages
    4 173
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : Enseignant

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par d�faut
    Citation Envoy� par roobi Voir le message
    concernant votre proposition de fixer la valeur du 'n' je ne peux pas faire �a puisque elle peut �tre une valeur inf�rieur � la valeur attendu
    Pas si tu utilises cette ligne-ci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    while (u >= 1/1000) and (n < High(n)) do
    Adapt� � ton code, cela donnerait :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    until (u(n) < 1/1000) or (n = High(n));
    High(n) est la plus grande valeur que peut avoir la variable n.

  7. #7
    Membre �prouv� Avatar de Modulpro
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 32
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par d�faut
    Bonjour,

    Pour r�pndre � ton premier probl�me :

    Citation Envoy� par roobi Voir le message
    Alors mon probl�me est qu'on est pas s�r que les valeurs de la suite passeront par 0.001 (on a l'information que la suite est d�croissante mais pas qu'elle est strictement d�croissante
    On te dit que la suite converge vers 0. C'est cette information qui te garantie qu'elle passera en dessous de 0.001 � partir d'un certain rang. En effet, la d�finition m�me de la convergence vers une limite r�elle not�e b est :

    Pour tout r�el a > 0, il existe un entier N tel que pour tout n >= N, on a |Un - b| < a.
    Si tu remplace a par 0.001 et b par 0, la d�finition te garantie bien l�existence d'un rang n tel que Un < 0.001

    Cordialement.

Discussions similaires

  1. [D�butant] probl�me visibilit� dans le programme
    Par remirobert dans le forum Windows Forms
    R�ponses: 14
    Dernier message: 08/06/2012, 16h57
  2. Faire un rendu de formules math�matiques dans un programme C++
    Par E-Sh4rk dans le forum Biblioth�ques
    R�ponses: 0
    Dernier message: 08/05/2009, 14h42
  3. R�ponses: 8
    Dernier message: 23/03/2006, 19h30
  4. R�ponses: 3
    Dernier message: 09/01/2006, 11h26
  5. [Debutant] Probl�me de fraction dans un programme
    Par SAKDOSS dans le forum D�buter
    R�ponses: 4
    Dernier message: 22/10/2005, 18h38

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