Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Algorithmique

Posté par
francette
28-05-12 à 15:23

Bonjour,je travaille sur la fonction random() et je souhaiterais réaliser un algorithme avec une boucle qui s'arrête pour un résultat appartenant a l'intervalle 0.49 0.51 ( pour trouver des resultats proches de 1/2)
J'ai essayé avec algobox mais je n'arrive pas a trouver de condition pour stopper ma boucle tant que
Et sur ma Ti , même problème la boucle pour ne peut pas fonctionner car je veux qu'elle s'arrete quand mon x appartient a l'intervalle .. Quelqu'un a une idée ?
Merci

Posté par
Glapion Moderateur
re : Algorithmique 28-05-12 à 15:28

Bonjour, oui tu mets un Tant Que |X-0.5|>0.01 par exemple avec X ton résultat de calcul

Posté par
Madame
re : Algorithmique 28-05-12 à 15:29

Bonjour

Il faut mettre une condition du type "tant que x n'appartient pas à [0,49;0,51], faire un nouveau tirage". La boucle s'arrêtera d'elle-même dès lors que l'on atteint un nombre qui satisfait la condition.

Posté par
francette
re : Algorithmique 28-05-12 à 15:33

Merci de répondre si vite, mais je n'arrive pas a trouver le language pour tant que x n'appartient pas ..
Et si par exemple je lance ma boucle tant que x appartient a o;0.49 ou 0.51 1 , cela ne fonctionne pas non plus, je ne sais pas comment sortir de la boucle

Posté par
Glapion Moderateur
re : Algorithmique 28-05-12 à 15:36

Met un : Tant Que |X-0.5|>0.01
tu sortiras de la boucle dès que X sera entre 0.49 et 0.51

Posté par
francette
re : Algorithmique 28-05-12 à 15:38

et apres je mets une instruction : afficher x , et c'est tout ?
Euh, la valeur absolue est bien codée par abs() ?

Posté par
francette
re : Algorithmique 28-05-12 à 15:40

J'ai essayé comme ca, mais abs ne semble pas vouloir fonctionner

VARIABLES
x EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
x PREND_LA_VALEUR F1(x)
TANT_QUE (abs(x-0.5))>0.1 FAIRE
DEBUT_TANT_QUE
x PREND_LA_VALEUR F1(x)
FIN_TANT_QUE
AFFICHER x
FIN_ALGORITHME

Posté par
Glapion Moderateur
re : Algorithmique 28-05-12 à 15:42

il faut également mettre les instructions qui permettent de calculer X

oui valeur absolue c'est abs(), du moins dans le langage Algobox et sans doute sur pas mal de calculatrices.

Posté par
francette
re : Algorithmique 28-05-12 à 15:43

Merci
J'ai rentré ma fonction F1 avec F1(x)= random x
L'algorithme m'indique une erreur a la première ligne de ma boucle tant que

Posté par
Glapion Moderateur
re : Algorithmique 28-05-12 à 15:44

Quelle est l'expression de F1(x) ? peut-être que la suite Un+1=F1(Un) ne converge pas vers 1/2 ?

Posté par
francette
re : Algorithmique 28-05-12 à 15:45

J'ai utilisé la fonction de algobox
F1(x)=random(x)

Posté par
francette
re : Algorithmique 28-05-12 à 15:50

Ca y est mon algorithme fonctionne et me donne la valeur de x approchée de 1/2 , je fais une capture pour voir si je n'ai pas fait d'erreur

Posté par
francette
re : Algorithmique 28-05-12 à 15:54

VARIABLES
2     x EST_DU_TYPE NOMBRE
3     a EST_DU_TYPE NOMBRE
4   DEBUT_ALGORITHME
5     x PREND_LA_VALEUR F1()
6     TANT_QUE (abs(x-0.5)>0.01) FAIRE
7       DEBUT_TANT_QUE
8       x PREND_LA_VALEUR F1(x)
9       a PREND_LA_VALEUR x-0.5
10      FIN_TANT_QUE
11    AFFICHER "x="
12    AFFICHER x
13  FIN_ALGORITHME

Fonction numérique utilisée :
F1(x)=random(x)

Posté par
Glapion Moderateur
re : Algorithmique 28-05-12 à 15:54

Rentre random() pour F1(x) ou bien met directement la fonction.
Et puis j'ai l'impression qu'Algobox n'accepte pas directement la fonction abs dans le Tant que

Voilà un programme qui marche :

VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
y PREND_LA_VALEUR 0.5
TANT_QUE (y > 0.01) FAIRE
DEBUT_TANT_QUE
x PREND_LA_VALEUR random()
y PREND_LA_VALEUR abs(x-0.5)
FIN_TANT_QUE
AFFICHER x
FIN_ALGORITHME

Posté par
Glapion Moderateur
re : Algorithmique 28-05-12 à 15:56

nos programmes se ressemblent. je n'ai pas compris à quoi te servait la variable a, tu lui donne une valeur mais tu ne l'utilises nul part.

Posté par
francette
re : Algorithmique 28-05-12 à 15:59

il me donne x=0 a chaque fois avec cet algorithme :/

Posté par
francette
re : Algorithmique 28-05-12 à 16:00

oui, pas fait exprès, je voulais mettre a dans la valeur absolue mais j'ai oublié en cour de route ^^

Posté par
Glapion Moderateur
re : Algorithmique 28-05-12 à 16:03

non ça ne donne pas 0. Copie/colle le mien en mode d'édition "éditeur de texte" et tu verras qu'il donne à chaque fois un nombre à moins 1/100 de 0.5

Posté par
francette
re : Algorithmique 28-05-12 à 16:04

oui c'est moi qui ai fait une erreur de recopia

Posté par
francette
re : Algorithmique 28-05-12 à 16:05

recopiage *
Sur algobox il y a possibilité d'afficher le nombre d'etapes ?

Posté par
Glapion Moderateur
re : Algorithmique 28-05-12 à 16:09

Oui, tu crées une nouvelle variable N que tu incrémentes à chaque fois, comme ça tu verras le nombre d'essais qu'il a fait.

VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
N EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
y PREND_LA_VALEUR 0.5
N PREND_LA_VALEUR 0
TANT_QUE (y > 0.01) FAIRE
DEBUT_TANT_QUE
x PREND_LA_VALEUR random()
y PREND_LA_VALEUR abs(x-0.5)
N PREND_LA_VALEUR N+1
FIN_TANT_QUE
AFFICHER "x ="
AFFICHER* x
AFFICHER "obtenu pour "
AFFICHER N
AFFICHER* " itérations"
FIN_ALGORITHME

Et par exemple, ça donne :
***Algorithme lancé***
x =0.49582745
obtenu pour 87 itérations

***Algorithme terminé***

Posté par
francette
re : Algorithmique 28-05-12 à 16:12

ahah, je venais de faire exactement pareil, merci beaucoup , j'ai mon algorithme final
Merci beaucoup, maintenant le plus dur reste a faire: le traduire en language ti..
Merci



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1741 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !