Poster un nouveau sujet Poster une réponse
algo suites limites
Auteur Message
momo1212
Invité
Posté le : Mer 18 Sep 2013, 14:40   Citer 

Bonjour, en commençant un exercice on nous demande un algorithme mais je ne vois pas comment le faire, pouvez vous m'aider ? Svp;

Voici le lien de l'image: https://www.casimages.com/img.phpi=130918024241153219.jpg


Merci d'avance.

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mer 18 Sep 2013, 16:00   Citer 

Bonjour,

Ton image a disparue...

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
momo1212
Invité
Posté le : Mer 18 Sep 2013, 16:05   Citer 

https://www.casimages.com/i/130918040900171368.jpg.html je pense que celle là marche...

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mer 18 Sep 2013, 16:12   Citer 

Tu aurais pu recopier l'énoncé...

Voici l'algo pour la première question (donné en ti basic):

Code
//Initialisations
Prompt N
5000->A
2000->B
4000->C

//Calculs des changements
For(I,1,N
.9A+.1B+.01C->D //Nouvelles valeur de A, stockée dans D de façon temporaire
.9B+.1A+.01C->B
.98C->C
D->A //On récupère la valeur de la zone A
End

Disp  {A,B,C //Affichage des valeurs des 3 zones



----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
momo1212
Invité
Posté le : Mer 18 Sep 2013, 16:16   Citer 

Pk tu as mis : ".9A" "1B" etc... j'ai pas compris

  Haut de page Bas de page 
 
momo1212
Invité
Posté le : Mer 18 Sep 2013, 16:21   Citer 

Ah c'est bon j'ai compris mais on pourrait pas utiliser While ?

  Haut de page Bas de page 
 
rpgcreator



Autorisation : Membre
Nb de messages : 85
Inscrit le : Sam 20 Juil 2013, 17:00
Posté le : Mer 18 Sep 2013, 16:50   Citer 

While verifie une condition et for est une boucle qui enregistre dans une variable ( en l'occurrence I) un nombre de début (ici 1) jusqu'à un nombre de fin ( ici la variable N demandée avant ). Le programme qu'à propose Matthieu41 est le meilleur, il a déjà optimisé le tout (d'où l'apparition du .9 au lieu de 0,9 , donc une économie de 1 octet.

----------------------
je prefere la ti-82stats a la fumette ^^
 Adresse email Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mer 18 Sep 2013, 20:01   Citer 

Tu pourras utiliser la boucle While pour la question f) (il faut que tu fasses les actions tant que N vaut quelque chose.
Je me rend compte d'un petit problème: Si tu restes comme ça, tu vas tourner en boucle infinie (je parle de la question f) ), puisque lorsque tu multiplie C par 0.98 (puisque 2% de la population partent), C ne prendra jamais la valeur 0... Je n'avais pas fait gaffe qu'on parle d'une population. Donc on va considérer que si C vaut 1, et qu'on veut que 2% partent (soit 0.02 personnes), bah on fait partir 1 personne (par défaut si on doit faire partir X personnes et des poussières on en fera partir X+1). Il y a toujours un problème à regler, puisque s'il reste 1 personne et qu'elle doit partir, on ne sait pas si elle doit aller dans le A ou dans le B. On considèrera donc qu'elle ira dans le A (de manière arbitraire). Encore un problème à noter: s'il reste 2 personnes dans le C, on veut en faire passer 1% dans le A (donc 1 personne), et 1% dans le B (donc 1 personnes), or il n'y a que 2 % qui s'en vont (1 personne). Il faut donc rectifier ce problème...
Il n'y a à priori pas ce genre de problèmes dans le B et le A.
En fait, cet algo n'est pas adapté au Ti Basic, qui ne permet pas une gestion simple des entiers...

Voici mon code revu en fonctions des remarques précédentes (on utilisera la partie entière de l’opposé, qui renvoi par exemple -3 si on passe -2.3 en argument):

Code
//Initialisations
Prompt N
-5000->A
-2000->B
-4000->C

//Calculs des changements
For(I,1,N

partEnt(.01C->E //Les 1% du C par excès

ent(.9A)+partEnt(.1B)+Rép->D //Nouvelle valeur de A (stockée dans D de façon temporaire //Edit: on utilise ent(.9A) parce que ça permet d'effectuer une troncature (ent(-2.3) donne en effet -2, alors que partEnt(-2.3) donne -3) (voir explication à mon post suivant. Idem pour le calcul de .9B.

ent(.9B)+partEnt(.1A)+E(C<=2E->B //J'utilise ici la technique des booléens: si C<=2E, on rajoute E, sinon on rajoute 0 (ça permet d'éviter de rajouter 1 personne dans le A s'il y a déjà 1 personne qui est passée dans le B, et qu'il n'en restait plus qu'une dans le C à la base)

min(0,C-2E->C //Si 98% de C > 0 après le calcul (et donc qu'on a retiré plus de personnes qu'il y en avait puisqu'on travaille sur l'opposé de la valeur de la population, qui ne peut pas être négative), on stocke 0 dans C, sinon on stocke le résulat des 98%.

D->A //On récupère la valeur de la zone A

End

Disp  -{A,B,C //Affichage des valeurs des 3 zones (on reprend l’opposé)


Je répète que cet algo n'est pas adapté à du ti basic, c'est pas mal compliqué quand même...

@rpgcreator: je suis loin d'être le meilleur, Linka a par exemple beaucoup plus d'expérience que moi pour ne citer que lui winkle.gif

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
momo1212
Invité
Posté le : Mer 18 Sep 2013, 20:07   Citer 

Ah donc je peux pas le taper sur ma Ti. je vais dire au prof. ce que tu m'as dit et on trouvera une autre solution je pense qu'il va me dire de l'écrire à la main... juste c'est pour la question f) c'est bien ça je me trompe pas ?

Mais c'est gentil de m'avoir aidé.

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mer 18 Sep 2013, 20:18   Citer 

En fait le premier programme que je t'ai donné bah il faudrait le transformer dans un langage qui gère mieux les entiers, et il marche niquel.

Sinon le second (qui utilise partEnt() ) marche sur la calto, même s'il faut que tu précise au prof que tu as du choisir de prendre X+1 personnes s'il y en a X et des poussières, et que tu expliques aussi qu'on doit calculer les 98% de C en enlevant 2 fois 1% (calculés avec un arrondi en excès), et qu'il faut faire gaffe en rajoutant 1% du C au B, que ce soit possible d'enlever 2 fois 1% au C...
Et aussi la remarque que je met en éditant mon précédent prgm, parce qu'il y a un petit problème: Si on doit prendre 10% de 333 du A pour les mettre dans le B, et 9qu'on fait partEnt(-333*.1), on trouve 34, et partEnt(-333*9.), on trouve 300, la somme des 2 est égale à 334, il y a une personne en plus. Donc quand on enlève, si .9A donne X et des poussière, on tronque le résultat à mettre dans A. Pareil pour B. Pour C on a pas ce problème, puisqu'on stocke le flux dans E.

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
momo1212
Invité
Posté le : Mer 18 Sep 2013, 20:25   Citer 

Le prof. a monté le niveau d'un cran pour nous là...

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mer 18 Sep 2013, 20:33   Citer 

En fait je pense qu'il s'attendait à un prgm fait sur algobox par exemple... Vous avez étudié la programmation sur quel langage? Juste le ti basic ou un truc du genre d'algobox?

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 19 Sep 2013, 0:46   Citer 

C'est déjà bien avancé.
Moi j'ai pensé immédiatement à l'ambiguité des entiers, mais pas à ses conséquences.

Je suis déstabilisé par ta manipulation de nombres négatifs, tout ça pour arrondir avec excès de valeur absolue, alors que j'aurais simplement arrondi avec défaut dans les positifs.

Moi j'utiliserais simplement une boucle While et testerais C>0, et des réductions avec int(X).

==============

Je considère que seules des quantités entières de populations peuvent être échangées.
J'aurais pu utiliser N comme variable du For, mais je ne veux pas vous embrouiller.
J'utilise l'affichage automatique de la dernière ligne.

Code
5000->A
2000->B
4000->C
Prompt N
For(J,1,N
int(.9A)+int(.1B)+int(.01C->P
int(.9B)+int(.1A)+int(.01C->B
int(.98C->C
P->A
End
{A,B,C



Les questions mathématiques sans tenir compte des entiers.

R0=A0+B0+C0=5000+2000+4000=11000
On suppose Rn=A+B+C=A0+B0+C0=R0
R[n+1]=a[n+1]+b[n+1]+c[n+1]
=.9An+.1Bn+.01Cn+.9Bn+.1An+.01Cn+.98Cn
=An+Bn+Cn
=Rn
Par récurrence Rn=R0 pour tout N entier naturel.

cn=4000*0.98^n

d0=a0-b0=3000
d[n+1]=a[n+1]-b[n+1]
=.9An+.1Bn-.9Bn-.1An-.01Cn
=.8An-.8Bn-.01Cn
=.8dn-.01Cn
=.8dn-0.01*4000*0.98^n
=.8dn-40*0.98^n

d1=.8d0-0.01c0
d2=.8d1-0.01c1 =.8^2d0-.8*0.01c0-0.01c1
d3=.8d2-0.01c2 =.8(.8^2d0-.8*0.01c0-0.01c1)-0.01c2 =.8^3d0-.8^2*0.01c0-.80.01c1-0.01c2
dn=.8^n*d0 -.8^(n-1)*0.01c[0] -.8^(n-2)*0.01c[1] -... -.8^0*0.01c[n-1]
dn=.8^n*d0 - somme(j,0,n-1, .8^(n-1-j)*.01c[j] )
dn=.8^n*d0 - somme(j,0,n-1, .8^(n-1-j)*40*.98^j )
Je ne sais pas quoi faire de plus. Je ne connais ni nom ni formule à associer à la "nature" de (dn).

Je déterminerai N vérifiant C=0 avec une boucle While.

Code
5000->A
2000->B
4000->C

A-B->D    // ajouter pour question G

Prompt N
0->J
While C>0
J+1->J
int(.9A)+int(.1B)+int(.01C->P
int(.9B)+int(.1A)+int(.01C->B
int(.98C->C
P->A

int(.8D)-0.01C->D  // idem

End
{A,B,C,D // ajouter D pour question G



An=Bn
0=dn=.8^n*d0 - somme(j,0,n, .8^(n-1-j)*40*.98^j )
.8^n*d0=somme(j,0,n, .8^(n-1-j)*40*.98^j )
n*log(.8 )+log(d0)=log(40)+log( somme(j,0,n-1, .8^(n-1-j)*.98^j ) )
Bloqué.

n>N, cn=0
Alors dn=0.8dn-0.01cn=0.8dn
Alors par récurrence dn=0.8^(n-N)*dN
Bloqué.

An=Bn
0=dn=.8d[n-1]-0.01cn=.8d[n-1]
.8d[n-1]=40*0.98^[n-1]
Bloqué.

Je ne sais pas comment résoudre ça.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Jeu 19 Sep 2013, 20:17   Citer 

Mais si tu arrondi toujours par défaut tu est en déficit de population:

Code
//C = 1

int(.9A)+int(.1B)+int(.01C->P
//Au niveau du int(0.01C), le résultat est 0 (int(0.01) = 0)

int(.9B)+int(.1A)+int(.01C->B
//idem

int(.98C->C
//Et là int(.98) = 0


Résultat: la personne qui était dans le C a disparu: elle est partie du C mais n'est allée nulle part.
C'est pourquoi j'ai proposé d'arrondir par défaut lorsqu'on enlève (pour que C arrive un jour à 1), et par excès lorsqu'on rajoute (pour ne perdre personne), tout en gérant différemment le C puisqu'il y a 2 transfert à effectuer (pour éviter d'inventer ou de perdre du monde selon les cas).

Je n'ai pas suivi toutes tes démonstrations par récurrence j'avoue que tu m'as un peu perdu là crazy.gif

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 19 Sep 2013, 21:54   Citer 

J'ai essayé de répondre à toutes les questions de l'exercice. (sauf celle de an et bn que j'ai oublié)
Mais je n'y suis pas parvenu. ^^
En plus j'ai écrit certains raisonnements sans démontrer rigoureusement la récurrence.

Toi ce qui te concernait directement était seulement la partie programmation. T'inquiète pas pour les maths.

Je comprend mieux maintenant pourquoi tu joues sur les troncatures et réductions.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 9 requêtes