Algorithme pour définir une fonction
Bonjour,
est-ce qu'on peut incrémenter une boucle par un réel?
Par exemple, on souhaite écrire un algorithme pour définir la fonction suivante: étant donné $a$, $h=0.01$ et $x \in [-4,4]$, on écrit un algorithme pour définir la fonction $y$ donnée par:
$$ y= \begin{cases} 3 x^2 + a, \ \mathrm{si} x < 0, \\ 2 \sqrt{x}, \ \mathrm{si} 0 \leq x \leq 3, \\ x^3+a^3, \ \mathrm{si} x \geq 3. \end{cases}$$
Esr-ce que peut écrire comme suit:
-Début
- Lire $a$
-$h=0.01$
-De x=-4 à $x=4$ avec incrément $h$ Faire
Tant que $(x < 0)$ faire
$y=3 x^2 + a$
Fin de Faire
Fin de Tant que
Tant que $(x<3)$ Faire
$y=2 \sqrt{x}$
Fin de faire
Tant que $(x \leq 4)$ Faire
$y=x^3+a^3$
Fin de Faire
Fin de Tant que
Fin
Merci d'avance.
Réponses
-
Bonjour,Oui, tu peux, cela revient à faire une boucle avec $i$ entier et faire l'opération $x \leftarrow x+h$.Attention toutefois car, en l'état, ton algorithme ne fait rien d'autre que calculer la dernière valeur de $y$...
-
Bonsoir Heuristiquiercomment on écrit cette boucle sur $i$? Svp.Aussi, comment on fait pour afficher toutes les valeurs de $y$ et pas uniquement la dernière?Merci d'avance.
-
Tu sais faire des boucles 'TANT QUE'
Donc plutôt que
De x=-4 à x=4 avec incrément h
..
fin
Tu peux faire :
x=-4
tant que x <= 4
...
x = x+h
fin
Un des avantages, c'est que si $h$ vaut $\frac{\pi}{2}$ par exemple, ta première boucle ne s'arrêterait jamais... à aucun moment on n'arrive à x=4, on passe directement de x=3.853... à x=4.639... x saute par dessus 4, sans jamais être égal à 4.Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
L'hypocrisie est pire qu'une vérité qui fait mal. Franck Ntasamara. -
Bonsoir Lourran,je suis un peu perdue. Qu'est ce qu'on écrit à la place des pointillés? Svp.Si on met tant que x <= 4, il faut distinguer les trois cas. Mais là, je ne vois pas comment.Je ne comprends pas non plus les avantage.Merci d'avance pour votre aide.
-
Si je comprends bien, tu veux un échantillonnage de pas 1e-3 de la fonction à paramètre $f_a$. Je pense qu’il serait plus simple en python de définir cette fonction à paramètre puis de construire la liste d’échantillons.
-
Pour faire les choses proprement, oublie d'abord ce $h$ et définie dans un premier temps uniquement la fonction à laquelle tu t'intéresses avec des instructions conditionnelles.Ensuite, dans une deuxième partie, tu crées un autre programme avec ton balayage et le $h$. Il n'y aucun intérêt à tout faire d'un bloc. C'est moche et peu pratique.C'est une bonne habitude à prendre est de décomposer ce que tu veux faire en plusieurs tâches. Imagine, que maintenant tu veuilles faire autre chose avec ta fonction, en procédant comme je te le propose, tu réutilises ta fonction déjà définies pour faire un autre truc. Ou si tu veux faire un balayage avec une autre fonction, tu as juste à définir une autre fonction et appliquer ton programme à ce balayage. Avec ton gros "bloc" qui veut faire deux trucs en un, tu repars de zéro, ce n'est pas très élégant. Ce n'est pas une bonne pratique.Comme me l'a appris ma maîtresse de CE2, tata Suzanne, dite Susu, $\{l,é,o\} \cap \{t,o,t,o\}=\{o\}$
-
Décomposer... c'est le bon terme.
Par exemple, tu as ceci dans ton algorithme :Tant que $(x<0)$ faire$y=3x^2+a$Fin de FaireFin de Tant que
C'est comme une boite noire , un élément unitaire.
Chaque morceau de ce type (isolé par un TANTQUE et un FIN associé, ou SI ... ALORS FIN SI ou .... .... ) chaque morceau de ce type doit être testé. C'est un élément unitaire, qu'on peut vérifier, indépendamment du reste de l'algorithme.
Et ici, il se passe quoi. Si avant d'arriver à ce bloc, $x$ est positif, alors hop... on ne fait rien. Et si $x$ est négatif, on calcule $y$, et on remonte à la ligne 'Tantque', donc on recalcule $y$... On réexécute indéfiniment la même chose. Il n'y a rien qui fait changer la valeur de $x$. Donc si $x$ est négatif au début, il reste négatif à vie, et donc on ne sort plus jamais de cette boucle.Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
L'hypocrisie est pire qu'une vérité qui fait mal. Franck Ntasamara. -
Bonjour Lourran,j'essaye de comprendre l'erreur dans mon code.Si on écrit:De x=-4 à x=4 avec incrément h FaireTant que (x < 0) faire$y=3 x^2+ a$Fin de FaireFin de Tant queTant que (x < 3) faire$y=2 \sqrt{x}$Fin de FaireFin de Tant queTant que (x < = 4) faire$y=x^3 + a^3$Fin de FaireFin de Tant quelà, qu'est ce que va faire ce code? Il va commencer par x=-4. Il va exécuter la première boîte noire puis il n'exécutera pas les deux autres boites noires.Puis il va faire $x= -4 +h$ et il va refaire le test.Ce n'est pas comme ça qu'il va procéder? Je m'excuse, je n'arrive pas à comprendre votre dernière explication et où est l'erreur dans ma proposition.Je vous remercie d'avance pour votre aide.
-
Commençons par des choses simples.
Imaginons cet algorithme :x=5 y=10 tantque x < 500 et y < 50 afficher x x = x * 3 y = y * 2 fin tantque afficher « Terminé »
Il faut être capable de faire à la main ce que cet algorithme fait, étape par étape. On appelle ça dérouler l'algorithme.
Ici, ça va donner ceci :
Lis précisément ce que j'ai fait ici. J'ai passé 10 min à le faire, j'aimerais que tu passes 10min à le lire.
Fais ensuite le même exercice avec ton algorithme. LENTEMENT, pas à pas. Les 10 première lignes, c'est suffisant.
Poste l'image de ce que tu obtiens.
Si tu le fais correctement, sans erreur, tu vas voir ce qui ne va pas dans ton algorithme.
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
L'hypocrisie est pire qu'une vérité qui fait mal. Franck Ntasamara. -
Bonjour Lourran,j'ai bien étudié l'exemple que vous m'avez donné. Dans votre exemple, il n y a une bloc "Tant que... Fin de Tant que".Comme j'ai trois bloc "Tant que " dans mon code, je n'ai pas su les arranger dans un tableau.Si vous le permettez, je fais faire ça par étape:On vérifie les trois bloc pour toutes les valeurs de $x$ de $-4$ à $4$ avec incrément $h=0.1$On commence par $x=-4$On fait le test avec le bloc 1: On voit que $x$ est strictement inférieur à zéro. Dans ce cas, on affiche $y= 3x^2+a$.étape 2: $x$ ne satisfait pas la condition du second bloc. Donc on passe au troisième bloc.étape 3: $x$ ne satisfait pas la condition du troisième bloc.Mais comme on a commencé le code par une boucle sur $x$ de $x=-4$ à $x=4$ avec incrément $h=0.1$, alors on passe à la valeur $-4.1$ et on recommence à vérifier les trois bloc.Jusqu'à ce qu'on arrive à la valeur $x=0.$ Dans ce cas, le premier bloc n'est pas satisfait et on passe directement au bloc 2. Dans ce cas, on affiche $y=x^3+a^3.$ Et on incrémente par $h=0.1$ jusqu'à arriver à $x=3.$ Dans ce cas, les bloc 1 et 2 ne sont pas exécuté et on éxécute unquement le bloc 3.Non?Je vous remercie d'avance pour votre aide.
-
Dans l'algorithme que tu as proposé, si on remplace les mots clés 'Tant Que' par 'Si' , oui, c'est ce qui se passe.
Est-ce que tu vois la différence entre ces 2 blocs :
Tant que x<0
$y=3x^2+a$
Fin TantQue
et :Si x<0
$y=3x^2+a$
Fin Si
PS : si on commence à $-4$, avec un incrément de $0.1$, la valeur suivante est $-3.9$ et pas $-4.1$Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
L'hypocrisie est pire qu'une vérité qui fait mal. Franck Ntasamara. -
Pour la deuxième je sais.Pour chaque $x$ on fait le test: Si $x < 0$ alors on affiche $y=3 x^2+2$ et on continue la suite du programme. Sinon, "on n'affiche pas $y$ et on continue la suite du programme.Par contre pour TantQue, c'est encore flou. Je pense que tant que les valeurs de $x$ sont strictement inférieures à 0, alors on affiche $y=3 x^2+ 2.$ Si $x \geq 0$, je ne sais pas très bien ce qui se passe. Est-ce qu'il essaye de vérifier le bloc qui vient après? Svp.Je vous remercie pour votre aide.
-
Bonsoir.Tant qu'il fait beau, je vais me promener. Il fait mauvais, que fais-je ?Cordialement.
-
Dans l'expression 'Tant que', dans la langue française, on entend bien le fait qu'il y a une répétition. J'ai 10 €, je joue au casino des mises de 1€, et je joue tant qu'il me reste de l'argent.
En fait, le bloc :
Tant que x<0
$y=3x^2+a$
Fin TantQue
pourrait aussi s'écrire à peu près :
Si x<0
$y=3x^2+a$
Remonter à la ligne Si x<0
Fin TantQue
Et problème, il n'y a aucune instruction qui modifie la valeur de $x$ dans ce bloc de 3 ou 4 lignes. Une fois qu'on est entré dans la boucle en question, on n'en sort plus jamais. Le programme exécute indéfiniment l'instruction $y=3x^2+a$, il boucle.Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
L'hypocrisie est pire qu'une vérité qui fait mal. Franck Ntasamara. -
Bonjour,1- si je comprends bien, même si on fait une boucle sur $x$, dès la première valeur de $x$, une fois que $x$ ne sera plus négatif, le code ne fera plus rien?Pour le code:De x=-4 à x=4 avec un pas h=0.1Tant que (x<0) Faire $3x^2+a$ Fin de Faire Fin Tant queTant que (x<3) Faire $2 \sqrt{x}$ Fin de Faire Fin Tant QueTant que (x>= 3) Faire $y=x^3+a^3$ Fin de Faire Fin Tant QueQue fait ce programme? 1- Il commence à $x =-4$ et exécute le premier bloc: $y=3 x^2 + a$ puis il s'arrête même s'il s'agit d'une boucle sur $x$ il ne va pas faire $x=x+h$ et s'assurer encore une fois de chaque boucle?Je comprends alors que Tant Que.... Fin De Tant Que ne tient compte d'aucune boucle sur $x$. Si on prend une valeur de x et qu'une boucle Tant Que est exécuté, une fois la boucle exécutée, le programme est fini et on ne peut pas prendre une autre valeur de x malgré la présence d'une boucle au début. Par contre si on met $x=x+h$ à l'intérieur du bloc, une fois que x ne satisfait plus la condition du bloc, on sort du bloc et on exécute le bloc qui vient après. C'est bien ça? Svp2- Voici donc l'algorithme que je propose, en utilisant les éléments de réponse que vous m'avez donné.Proposition 1:-Début-Réels a, x, y, h-Lire a-h=0.1De x=-4 à x=4 avec un pas h=0.1FaireSi (x < 0) alors $y= 3x^2+a$Sinon, si x< 3 alors $y=2 \sqrt{x}$Sinon, si x>=3 alors $y=x^3+a^3$Fin de SiFin de FaireQuestion 1: par contre là, je me perds sur le nombre de "Fin de Si" qu'il faut mettre vu qu'il y a deux Sinon.Question 2: Esr-ce que c'est bon ici de faire une boucle sur $x$ avec un incrément réel?Proposition 2:-Début-Réels a, x, y, h-Lire a-h=0.1-x=-4Tant que (x<0) Faire$y= 3x^2+a$écrire $y$$x=x+h$Fin de FaireFin de Tant QueTant que (x<3) Faire$y= 2\sqrt{x}$écrire $y$$x=x+h$Fin de FaireFin de Tant QueTant que (x >=3) Faire$y= x^3+a^3$écrire $y$$x=x+h$Fin de FaireFin de Tant QueFin du Programme
Je vous remercie d'avance pour votre aide.
-
Tu poses cette question :
Pour le code:De x=-4 à x=4 avec un pas h=0.1Tant que (x<0) répéter Afficher $3x^2+a$ Fin de répéter Fin Tant queTant que (x<3) répéter Afficher $2\sqrt{x}$ Fin de répéter Fin Tant QueTant que (x>= 3) répéter Afficher $y=x^3+a^3$ Fin de répéter Fin Tant QueQue fait ce programme?
J'ai ajouté le mot Afficher sur chaque ligne.
Et j'ai remplacé le mot Faire par le mot Répéter, pour que ce soit plus explicite.
Ce programme va durer des heures et des heures ... et répéter des millions de fois la même chose, sans jamais s'arrêter.
Il faut regarder le niveau le plus bas, le plus fin de ton programme, chaque 'boite noire', chaque boucle, la plus fine.
Tu as cette boucle :
Tant que (x<0) Répéter Afficher $3x^2+a$ Fin de Répéter Fin Tant que
(et les 2 autres sont similaires, même bug).
Cette boucle est comme un trou noir. Si on y entre, on n'en sort jamais.
Tu as des trucs 'autour' de cette boite noire, mais peu importe. Tu peux mettre tout ce que tu veux autour de cette boite noire, ça n'y changera rien. Cette ligne est un trou sans fond. Quand on arrive à cette instruction, on tombe dans le trou et on n'en sort plus jamais.
Pourquoi ?
Dans cette ligne, on demande d'afficher un certain truc, aussi longtemps que x est négatif.
Mais dans cette ligne, il n'y a rien qui va modifier la valeur de x.
Donc on va afficher le truc à l'identique, indéfiniment.Quand on met une instruction TANTQUE x<0 ... FIN TANTQUE, il faut absolument qu'il y ait un truc qui fait changer la valeur de x entre les instructions 'TANTQUE x<0' et FIN TANTQUE'.MAIS
Comme déjà dit, si on remplace TANTQUE par SI, tout va bien, ton algorithme devient correct.
De x=-4 à x=4 avec un pas h=0.1Si (x< 0) Afficher $3x^2+a$ Fin SiSi (x>=0 et x< 3) Afficher $2\sqrt{x}$ Fin SiSi (x>=3) Afficher $x^3+a^3$ Fin Si
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
L'hypocrisie est pire qu'une vérité qui fait mal. Franck Ntasamara. -
Merci beaucoup pour votre aide et pour votre patience.C'est enfin bien compris!
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.1K Toutes les catégories
- 59 Collège/Lycée
- 22.1K Algèbre
- 37.5K Analyse
- 6.3K Arithmétique
- 58 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 20 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.7K Géométrie
- 83 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 337 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 801 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres