Probleme suite récurrente avec cycle

classic Classic list List threaded Threaded
2 messages Options
fred M fred M
Reply | Threaded
Open this post in threaded view
|

Probleme suite récurrente avec cycle

Voici un programme Scilab qui doit me permettre de mettre en évidence des suites récurrentes bornées non convergentes en fonction de leur valeur initiale.
function [u]=f(u0)
u(1)=u0;
n=1;
for n=1:100
    disp([n,u(n)])
    if u(n)>2 then
        u(n+1)=8-2*u(n);
    elseif u(n)<-2 then
             u(n+1)=(1/3)*(u(n)+5)-5;
    else u(n+1)=2*u(n);
    end
    end
   clf;
   plot(u,"+r");
endfunction
f(1.6)


En essayant avec une valeur initiale égale à 1.6 , la suite est censée valoir alternativement 1.6 et 3.2 et oh surprise !! Cela dysfonctionne avant le 50è terme. Xcas même chose ,Geogebra même chose alors que pour ma bonne vieille TI ça marche!!
Au final, une valeur initiale entre 0 et 1 donne une suite convergeant vers 0 !!!

J'attends vos commentaires. Je pense qu'il n'y a ^pas grand chose à modifier mais pardonnez moi :je suis novice.
Cordialement,
M Morand
jmleurent jmleurent
Reply | Threaded
Open this post in threaded view
|

Re: [Enseignement] Probleme suite récurrente avec cycle

Le 11/10/2013 15:24, fred M a écrit :

> Voici un programme Scilab qui doit me permettre de mettre en évidence des
> suites récurrentes bornées non convergentes en fonction de leur valeur
> initiale.
> function [u]=f(u0)
> u(1)=u0;
> n=1;
> for n=1:100
>      disp([n,u(n)])
>      if u(n)>2 then
>          u(n+1)=8-2*u(n);
>      elseif u(n)<-2 then
>               u(n+1)=(1/3)*(u(n)+5)-5;
>      else u(n+1)=2*u(n);
>      end
>      end
>     clf;
>     plot(u,"+r");
> endfunction
> f(1.6)
>
>
> En essayant avec une valeur initiale égale à 1.6 , la suite est censée
> valoir alternativement 1.6 et 3.2 et oh surprise !! Cela dysfonctionne avant
> le 50è terme. Xcas même chose ,Geogebra même chose alors que pour ma bonne
> vieille TI ça marche!!
> Au final, une valeur initiale entre 0 et 1 donne une suite convergeant vers
> 0 !!!
>
> J'attends vos commentaires. Je pense qu'il n'y a ^pas grand chose à modifier
> mais pardonnez moi :je suis novice.
> Cordialement,
> M Morand
>
>
>
> --
> View this message in context: http://mailinglists.scilab.org/Probleme-suite-recurrente-avec-cycle-tp4027594.html
> Sent from the Scilab pour l'enseignement - Mailing Lists Archives mailing list archive at Nabble.com.
> _______________________________________________
> enseignement mailing list
> [hidden email]
> http://lists.scilab.org/mailman/listinfo/enseignement
>
Bonjour.
Je n'ai pas vérifié pour les deux valeurs considérées mais je suis
quasiment sur que le problème vient de la représentation des nombres
dans l'ordinateur. Pour faire simple, en base 10, 1.6 et 3.2 s'écrivent
correctement avec 1 chiffre après la virgule et en base 2 avec un nombre
infini de chiffres après la virgule. Après calculs, il y a alors des
erreurs de troncature qui s'amplifient à chaque itération. Les
algorithmes et la représentation des nombres  mis en place dans nos
calculatrices tiennent compte de ces problèmes et les corrigent
correctement dans la majorité des cas. Ce n'est pas toujours le cas dans
les programmes pour ordinateur. Nos calculatrices ne sont pas pour
autant parfaites. Le phénomène décrit se produit avec des nombres comme
1/3, 1/6 etc.
Cordialement
J-M Leurent
_______________________________________________
enseignement mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/enseignement