Bonsoir ,
depuis toute à l'heure , je persiste dans un algorithme avec AlgoBox et je n'y arrive pas.
Alors voilà , je vous montre mon exercice :
Soit n un entier naturel non nul. On note S la somme S=1+21+22+23+....+2n-1+2n
Ils veulent que j'écrive un algorithme avec ceci et depuis toute à l'heure , je n'ai réussi qu'à trouver soit N=1 qui fait 3 ou soit N=2 qui fait 7 mais jusqu'à N=3 qui fait 15 , je n'y arrive pas du tout.
Merci d'avance de votre aide
Au revoir
Bonsoir,
Pour construire votre algorithme, je pense qu'il faut demander une variable k,c'est-à-dire jusqu'à quel terme il faut faire la somme.
Ensuite, il faut attribuer votre première valeur (ici 1) à U et affecter U à S (la somme de tous les termes U)
De plus, il va falloir faire varier k de 1 jusqu'au nombre que vous souhaitez.
Ensuite vous affectez 2 puissance n à U (oui je considère la suite U(n)=2 puissance n)
Affecter la somme de S et votre nouveau U à S
Il ne reste plus qu'à afficher S.
Après je ne l'ai pas fait sur Algobox mais sur ma Casio
Bonne soirée
Pierre
Oui bien voici un screen de l'algorithme sur Algobox ( en espérant qu'il soit adapté aux exigences du site ) qui vous expliquera le principe .
Bonjour,
écrire un algorithme c'est "décortiquer" ce qu'on fait "à la main" pour résoudre le problème
dans le but de le décrire
et d'abord et avant tout avec des mots.
("algorithme en langage naturel")
comment fait-on pour calculer S5 par exemple :
on calcule successivement des termes u0 = 1, u1 = 2, u2 = 22, u3 = 23 ... jsuqu'à u5 = 25
et on fait la somme
ce qu'on peut faire "après coup" si on a écrit soigneusement tous ces termes et qu'on en fait "ensuite" la somme.
pas très pratique
ou on calcule au fur et à mesure
au départ la somme S vaut le seul premier terme u0 = 1
puis au fur et à mesure qu'on calule des termes suivants, on les ajoute à cette somme
d'où l'algorithme pour n = 5 :
u prend la valeur 1
S prend la valeur u (c'est à dire 1)
pour k de 1 à 5 faire
calculer uk = 2k
l'ajouter à la somme S
quand la boucle est finie :
afficher la valeur de S
et un algorithpme "général" qui marchera quel que soit n :
lire la valeur de n (entrée)
u prend la valeur 1
S prend la valeur u (c'est à dire 1)
pour k de 1 à n faire
calculer uk = 2k dans la variable u
l'ajouter à la somme S
quand la boucle est finie :
afficher la valeur de S
il ne reste plus qu'à traduire tout ça selon la syntaxe de la machine utilisée (que ce soit une calculette ou Algobox)
toute écriture de quelque algorithme que ce soit doit toujours oasser par cette première étape d'analyse et de rédaction "en langage naturel".
* quelque erreurs de frappe (bouton poster prématuré) :
* jusqu'à u5 = 25
* et un algorithme "général"
* passer
Voici le programme (je n'ai pas réussi à diminuer la taille de l'image)
1 VARIABLES
2 K EST_DU_TYPE NOMBRE
3 U EST_DU_TYPE CHAINE
4 S EST_DU_TYPE CHAINE
5 DEBUT_ALGORITHME
6 LIRE K
7 U PREND_LA_VALEUR 1
8 S PREND_LA_VALEUR U
9 POUR K ALLANT_DE 1 A 10
10 DEBUT_POUR
11 U PREND_LA_VALEUR pow(2,K)
12 S PREND_LA_VALEUR U+S
13 FIN_POUR
14 AFFICHER S
15 FIN_ALGORITHME
Ici quand on vous demandera la valeur de k vous mettrez 10 car c'est celle qui est définie (mais vous pouvez changer 10 pour la valeur que vous voulez )
la confusion de K et de n dans cet algorithme le rend incorrect.
une instruction "lire K" ne sert rigoureusement à rien du tout quand elle est suivie d'un "pour K de 1 à ..." qui écrase la valeur saisie pour mettre 1 (puis d'autres valeurs ensuite) à la place.
c'est "lire n"
et "pour k de 1 à n"
Bonsoir mathafou ,
Justement j'ai pensé la même chose que vous mais quand je l'ai testé il s'est avéré incorrect et je n'ai pas pu faire les calculs.
Tandis qu'avec la formule que j'ai posté les calculs marchent et pour des valeurs de k (ou n si vous préférez ) avec k=100000 j'ai pu le faire marcher et le résultat était exact pour une autre suite plus complexe composée d'exponentielles (j'ai comparé mon résultat avec ce qui a été admis dans un de mes exercices...)
Après je pense que je vais le modifier car je dois avouer que niveau ergonomie je peux l'améliorer... Merci de votre conseil
Voici la version 2.0. Vous approuvez? (j'ai inséré ma suite complexe en question)
1 VARIABLES
2 K EST_DU_TYPE NOMBRE
3 N EST_DU_TYPE NOMBRE
4 U EST_DU_TYPE NOMBRE
5 S EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7 LIRE N
8 U PREND_LA_VALEUR 1
9 S PREND_LA_VALEUR U
10 POUR K ALLANT_DE 1 A N
11 DEBUT_POUR
12 U PREND_LA_VALEUR U*exp(-U)
13 S PREND_LA_VALEUR U+S
14 FIN_POUR
15 AFFICHER S
16 FIN_ALGORITHME
ton erreur était sans doute due au type chaine incorrect
la version 2.0 est correcte
et pour l'exo demandé en remplaçant la ligne de calcul de U par
U PREND_LA_VALEUR pow(2,K)
ou bien :
U PREND_LA_VALEUR U*2
noter que l'important dans tout ça est avant tout mon message de 21:38 :
apprendre à pêcher plutôt que de donner du poisson.
Ok merci pour l'algorithme , j'ai dû faire quelques modifications de vos algorithmes.
Mais avant tout , il me demande également Calculer 2S en fonction de n. Et aussi comment peut-on contrôler le programme ?
Pourriez-vous m'expliquer sans me donner la réponse pour que je puise un peu dans mon cerveau?
Algorithme par Algobox :
VARIABLES
I EST_DU_TYPE NOMBRE
N EST_DU_TYPE NOMBRE
S EST_DU_TYPE NOMBRE
K EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE N
I PREND_LA_VALEUR 1
S PREND_LA_VALEUR I
POUR K ALLANT_DE 1 A N
DEBUT_POUR
I PREND_LA_VALEUR pow(2,K)
S PREND_LA_VALEUR I+S
FIN_POUR
AFFICHER S
FIN_ALGORITHME
ton algo est exactement le même mais avec d'autres noms de variables (I au lieu de U), ce qui n'a aucune espèce d'importance.
pour vérifier un algorithme, au plus simple on essaye "sur machine " avec quelques valeurs calculées à la main
tu as dit que tu avais calculé S1, S2, S3, S4 et S5 à la main
donc tu peux vérifier que ton algorithme te donne la même chose.
c'est comme en maths en général, ce n'est pas parce que "ça marche avec quelques valeurs" que c'est vrai toujours (que ça va marcher avec les valeurs de n quelconques)
ce sera d'ailleurs faux quand n est trop grand pour que la machine calcule exactement la valeur de 2n
une preuve formelle du fonctionnement d'un algorithme dépasse largement le niveau requis sur l'algorithmique en général en lycée
(notion d'invariant de boucle, fonction de transformation des variables par les différentes opérations élémentaires etc)
le test d'un algorithme à ce niveau c'est juste "vérifier avec quelques valeurs bien choisies"
en particulier vérifier que ça marche avec les petites valeurs de n (n = 0, 1, 2)
et une valeur "moyenne" (n = 5)
si on te demande de calculer 2S la modification de l'algorithme est instantanée :
tu multiplies par deux le résultat obtenu avant de l'afficher
si on te demande de calculer S+1 pareil (à mon avis c'est plus intéressant de calculer S+1 que 2S, mébon ...)
Pour 2S , c'est ceci :
1 VARIABLES
2 I EST_DU_TYPE NOMBRE
3 N EST_DU_TYPE NOMBRE
4 S EST_DU_TYPE NOMBRE
5 K EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7 LIRE N
8 I PREND_LA_VALEUR 1
9 S PREND_LA_VALEUR I
10 POUR K ALLANT_DE 1 A N
11 DEBUT_POUR
12 I PREND_LA_VALEUR pow(2,K)
13 S PREND_LA_VALEUR I+S
14 S PREND_LA_VALEUR S*2
15 FIN_POUR
16 AFFICHER S
17 FIN_ALGORITHME
non
c'est seulement une fois que tout est fini que tu dois calculer 2S
par exemple, pour n = 3 : S = 1 + 2 + 22 + 23 = 15 (déja fait) et donc 2S = 30
toi tu calcules successivement :
S = 1
k = 1 : S = (1+2)*2 = 6
k = 2 : S = (6+4)*2 = 20
k = 3 = n : S = (20+8)*2 = 56 !!
Pour 2S :
1 VARIABLES
2 I EST_DU_TYPE NOMBRE
3 N EST_DU_TYPE NOMBRE
4 S EST_DU_TYPE NOMBRE
5 K EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7 LIRE N
8 I PREND_LA_VALEUR 1
9 S PREND_LA_VALEUR I
10 POUR K ALLANT_DE 1 A N
11 DEBUT_POUR
12 I PREND_LA_VALEUR pow(2,K)
13 S PREND_LA_VALEUR (I+S)
14 FIN_POUR
15 S PREND_LA_VALEUR S*2
16 AFFICHER S
17 FIN_ALGORITHME
de faire ce qui a déja été dit :
de vérifier que pour quelques valeurs "bien choisies" ça donne la même chose avec le programme et à la main.
Mais ils disent bien "Comment peut-on contrôler le programme ?"
Pour l'algorithme sans 2S , celui que je vous ai envoyé en premier.
4.Quelle est la valeur de S pour n=32
Et là , on me dit "Comment contrôler le résultat de la question 5 ?"
tu ne "refais pas" l'algorithme
tu fais les calculs directement à la main
tu les as déja fait pour n = 1, 2 et 3 (à la main)
Non , j'y arrive à faire les puissances de 2 de tête jusqu'à que ça se commence à vraiment se corser
Ce qui veut dire que je dois répéter les puissance de 2 à chaque fois pour n=32 si je dois le faire à la main ?
6.Calculer 2S en fonction de n.
Mais ils me disent " En déduire la valeur de S en fonction de n."
Je ne sais pas comment faire là , pourriez-vous m'aider ?
cette question est du calcul algébrique
aucun rapport avec l'algorithme précédent ni les calculs numériques précédents
c'est la méthode classique pour la démonstration de la formule de la somme des termes d'une suite géométrique
S = 1 + 2 + 22 + 23 + ... + 2n-1 + 2n
2S = 2 + 22 + 23 + 24 + ... + 2n + 2n+1
(2×2k = 2k+1 quel que soit k)
et si on "compare" terme à terme les deux sommes on voit que dans 2S il y a un 2n+1 en plus et un 1 en moins
d'où la formule demandée
2S = S - 1 + 2n+1
"en déduire" la valeur de S en fonction directe de n est alors instantané.
il n'y a pas une inconnue S et une autre inconnue 2S
il n'y a qu'une seule inconnue S dans cette équation...
tua aurais eu à résoudre l'équation en l'inconnue x : 2x = x - 1 + 2n+1 que tu ne te serais même pas posé la question
sous prétexte que "les inconnues s'appellent toujours x n'est-ce pas" ...
pffff dans les "..." il y a des tas de termes qui sont identiques entre l'expression de S et l'expression de 2S
en particulier ton 2n-1 il est dans 2S : c'est quand on a multiplié 2n-2 par 2
etc etc
je ne les pas tous écrits explicitement vu que je ne sais pas combien il y en a, puisque n n'est pas connu à priori
c'est ça les "..." : imaginer tous les termes qui sont planqués dedans
nota : le copier coller d'expressions avec des exposants ne marche pas,
- soit on copie le source du message (bouton > du bandeau, pas celui de la barre d'outils, le demander dans son profil s'il n'y est pas)
- soit on corrige les exposants à la main après le copier-coller, chacun individuellement
- soit on fait une citation (par le bouton citer du bandeau) et on ne garde que ce qu'on veut garder de la citation
tu ne comprends absolument pas ce que veulent dire les "..." dans une formule
que dans S = 1 + 2 + 22 + 23 + ... + 2n-1 + 2n
les "...." représente des tas de termes
tous les termes entre 23 et 2n-1
selon la valeur de n ça peut en faire un sacré paquet !! il est impossible de les écrire tous
et que là dedans il y a le terme 24, et le terme 25 etc etc et le terme 2n-3 et le terme 2n-2 etc etc
quand j'ai calcule 2S j'ai simplement multiplié par 2 tous ces termes
non seulement tous ceux qui étaient explicitement écrits,
mais aussi tous les autres, tous ceux qui étaient "représentés" par ces "..."
que le 24 qui était dans ces "..." est devenu 25 en le multipliant par 2
que le terme 2n-2 est devenu 2n-1 en le multipliant par 2 :
2n-2×2 = 2n-2+1 = 2n-1 etc etc
TOUS les termes qui sont dans les "..." et qui ne sont pas écrits mais "suggérés par ces "..."
apparemment non puisque tu te demandais quand on avait eu ce terme 2n-2 à multiplier et pourquoi je n'avais pas écrit explicitement de terme 2n-1 dans l'écriture de 2S ...
mais bon si tu as compris, c'est le principal. même si ça t'a donné l'impression que j'enfonçais des clous.
si n est > 2000 oui.
il y a "autant de termes qu'il faut" dans les "..."
et même pire : il peut y avoir des termes en trop qui sont "dévorés" par le "..."
si n est trop petit les termes explicitement déja écrits par exemple le 22 ou le 23 n'existent pas vraiment
bien que "par convention" on les ait effectivement écrits, leur existence n'est pas garantie quel que soit n
ce qu'il faut c'est faire travailler son imagination pour imaginer l'ensemble de tous les termes réels, et juste ceux qu'il faut pour écrire tous les termes de 1(=20) à 2n
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :