bonjour,
je dois réaliser un algorithme a l'aide d'algobox ou je suis censé modéliser la situation suivante:
pour estimer l'aire située sous la courbe c représentative de la fonction ci dessus (y= -0,2*x^2+x), on se propose de simuler le lancé de n fléchette sur une cible carré séparée en deux par cette fonction c.
Si le point est situé sous la courbe c le point sera vert.
Si non il ne sera pas tracé.
On me demande d'utiliser la fonction random.
autre info: les coordonnées x et y du point d'impact de la fléchette sont déterminés aléatoirement dans l'intervalle (0;5(
merci
tu as sans doute déjà commencé à tracer
la courbe représentative de la fonction y,
placé la courbe dans ton carré,
défini la dimension du carré et
précisé où s'arrête l'aire située sous la courbe.
Il faut faire 2 tirages aléatoires (xa et ya par exemple) puis calculer l'image de xa .
Si cette image est inférieure à ya , alors on trace le point (xa , ya)
il faut déja déterminer la structure générale de l'algorithme
ça se fait en langage naturel (en français)
lancer n fléchettes se fera par une boucle
et donc la structure générale :
entrer n
répéter n fois :
tirer au hasard un nombre (réel, pas forcément entier) x entre 0 et 5
tirer au hasard un nombre y entre 0 et 5
si y est < -0.2x² + x alors
peindre en vert le point (x; y)
compter ce point comme étant en dessous de la courbe
fin de la boucle
afficher la proportion par rapport à n = nombre de points comptés divisé par n
cela semble de la paraphrase de l'énoncé, ça l'est mais sous une forme explicite qui se rapproche très près de l'algorithme final.
cette étape peut sembler inutile
et bien détrompe toi, pas du tout elle est fondamentale : exprimer clairement la méthode, l'énoncé, avant de se lancer dans de l'écriture de code.
le reste est de la traduction de ça en Algobox :
quelles variables faut il créer pour faire ça
quelle sorte de boucle choisir pour traduire "répéter n fois"
syntaxe de algobox et fonctions de algobox : voir l'aide en ligne (bouton Aide) pour apprendre
- à utiliser la fonction random() et exactement ce qu'elle fait
- comment on écrit x au carré
- comment on dessine un point
etc
essaye.
j'avais bien dit
et pourquoi ajoutes tu 1 à random()*5 ??
et tu ne traces pas le point trouvé mais si le point trouvé est bon, tu en traces un autre !! (parce que tu refais un nouveau tirage pour le tracer)
les coordonnées du point à tracer c'est x et y déja calculées.
attention aussi à mettre des . et pas des , comme séparateur décimal
F1(x)=-0.2*pow(x,2)+x
dans le SI aussi (ou mettre simplement SI(y < F1(x)) ALORS
et aussi pourquoi définis tu une fonction F1 si tu ne l'utilises pas ?
et puis aussi 0,2 s'écrit obligatoirement avec un POINT décimal 0.2
(la virgule décimale c'est que pour les documents légaux en France parce que c'est la loi,
en programmation ce sera quasiment partout un point décimal)
VARIABLES
n EST_DU_TYPE NOMBRE
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR n ALLANT_DE 1 A 5000
DEBUT_POUR
x PREND_LA_VALEUR random()*5
y PREND_LA_VALEUR random()*5
SI (y < F1(x)) ALORS
DEBUT_SI
TRACER_POINT_Vert (x,y)
FIN_SI
FIN_POUR
FIN_ALGORITHME
voici l'algorithme un peu amélioré mais je pense qu'il y a quelque chose qui ne marche pas.
J'aimerais aussi ajouter qu'on me propose dans l'énoncé n=5000
VARIABLES
n EST_DU_TYPE NOMBRE
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR n ALLANT_DE 1 A 5000
DEBUT_POUR
x PREND_LA_VALEUR random()*5
y PREND_LA_VALEUR random()*5
SI (y < F1(x)) ALORS
DEBUT_SI
TRACER_POINT_Vert (x,y)
FIN_SI
FIN_POUR
FIN_ALGORITHME
il ne reste plus qu'à trouver une variable permettant de déterminer la proportion d'impacts verts par rapport a n.
On me demande aussi aussi de trouver s et e, qui sont respectivement la surface sous la courbe c et la marge d'erreur au seuil de 95%.
faudrait arrêter de citer chaque message auquel tu réponds.
pour répondre c'est le bouton "Répondre" avec "Répondre" écrit dedans. pas je ne sais quoi.
ou directement taper dans la zone de réponse si elle est déja ouverte
et comment as tu fait toi pour tracer tes points verts ?
en fait il y a deux modes de fonctionnement de Algobox
le mode normal (menus, fenêtres de dialogue)
et le mode éditeur (on tape tout soi-même)
ce qui est affiché dans la fenêtre "normale" n'est pas toute la commande car certains paramètres de la commande ne sont que dans les boites de dialogue (par exemple ici la couleur)
par contre en mode éditeur ou si on exporte le programme en texte au lieu d'une image de copie d'écran,
la commande complète est affichée.
oui effectivement, dans ton SI il faut mettre TRACER_POINT_Vert (x,y)
avec les x et y déjà calculés
si tu mets TRACER_POINT_Vert (random()*5,random()*5) ça choisit de nouveaux nombres aléatoires et ceux-là ne respectent plus la condition du SI
Ok merci
j'ai réussi a faire mon algorithme et mes points vertes en utilisant la bonne technique.
Comme je viens de préciser il me reste a insérer une variable s et e
il ne reste plus qu'à trouver une variable permettant de déterminer la proportion d'impacts verts par rapport a n.
(trouver une variable, c'est à toi de la définir et de l'appeler comme tu veux)
si tu avais suivi la méthode que j'ai explicitée tu aurais déja ça puisque c'était dans mon squelette d'algorithme...
(mais déja dit dans mes remarques que ça manquait à ton algorithme)
et la marge d'erreur au seuil de 95%.
pour faire ça il va faloir faire varier le nombre de points et pas dire que c'est toujours 5000
d'ailleurs (je me répète, là aussi) l'énoncé n'a jamais dit 5000 points mais "n" point
donc en Algobox ce serait
LIRE n
Pour i de 1 à n
etc
(avec bien sur la variable i à définir)
D'accord merci, beaucoup maintenant je peux donc faire varier n.
pour la variable je comptais l'appeler r et qu'elle soit égale aux points verts divisé par n,
comment retranscrire cela en langage algobox?
et si tu prenais le squelette que j'ai déja donné :
entrer n
répéter n fois :
tirer au hasard un nombre (réel, pas forcément entier) x entre 0 et 5
tirer au hasard un nombre y entre 0 et 5
si y est < -0.2x² + x alors
peindre en vert le point (x; y)
compter ce point comme étant en dessous de la courbe
(dans la variable r qui contiendra le nombre de points verts trouvés)
fin de la boucle
afficher la proportion par rapport à n = nombre de points comptés divisé par n = r/n
la rédaction d'un tel squelette c'est pour l'utiliser pour construire l'algorithme
pas pour ne jamais plus en tenir compte ensuite.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :