Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
Discussion fermée
#1 11-04-2012 16:32:10
- june06
- Membre
- Inscription : 16-01-2012
- Messages : 35
Devoir maison 1°S
Bonjours, j'ai un devoir maison, pourriez vous me dire si mes résultats sont corrects et m'aider a certaines questions SVP, merci d'avance
Exercice 1:
démonstration de l'expression produit scalaire avec les projetés orthogonaux
Exercice 2: La suite de Fibonacci
On considère la suite définie par u0=1 ; u1=1 et la relation: un+2=un+1+un
1) Calculer u2; u3; u4; u5
2) Ecrire un algorithme de calcul des termes de cette suite jusqu'à un rang N donné
3) A l'aide de la calculatrice, créer un programme correspondant à l'algorithme précédent. Déterminer à l'aide de ce programme u24
Exercice 1:
Soit [tex](A;\vec{i}; \vec{j})[/tex] un repère orthonormal tel que les vecteurs [tex]\vec{i}[/tex] et [tex]\vec{AB}[/tex] sont colinéaires
On a: [tex]\vec{AB}[/tex] (xB; 0) ; [tex]\vec{CD}[/tex](xD-xC; yD-yC) ;
[tex]\vec{C'D'}[/tex] (xD-xC; 0)
donc: [tex]\vec{AB}.\vec{CD}[/tex]=xB(xD-xC) et [tex]\vec{AB}.\vec{C'D'}[/tex]=xB(xD-xC)
d'où: [tex]\vec{AB}.\vec{CD}=\vec{AB}.\vec{C'D'}[/tex]
Exercice 2:
1) u2=u1+u0=1+1=2
u3=u2+u1=2+1=3
u4=u3+u2=3+2=5
u5=u4+u3=5+3=8
2) J'ai trouvé 2 possibilités mais je ne comprend pas "jusqu'à un rang N donné", c'est moi qui dois le déterminer le rang c'est cela ?
VARIABLES
Fibo1 EST_DU_TYPE NOMBRE
Fibo2 EST_DU_TYPE NOMBRE
fibo EST_DU_TYPE NOMBRE
i EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
Fibo1 PREND_LA_VALEUR 1
Fibo2 PREND_LA_VALEUR 1
AFFICHER Fibo1
AFFICHER Fibo2
POUR i ALLANT_DE 2 A N
DEBUT_POUR
AFFICHER
fibo PREND_LA_VALEUR Fibo1+Fibo2
Fibo1 PREND_LA_VALEUR Fibo2
Fibo2 PREND_LA_VALEUR fibo
AFFICHER fibo
FIN_POUR
FIN_ALGORITHME
VARIABLES
N EST_DU_TYPE NOMBRE
A EST_DU_TYPE NOMBRE
B EST_DU_TYPE NOMBRE
U EST_DU_TYPE NOMBRE
I EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
A PREND_LA_VALEUR 1
B PREND_LA_VALEUR 1
Lire N
POUR I ALLANT_DE 2 A N
DEBUT_POUR
U PREND_LA_VALEUR A+B
A PREND_LA_VALEUR B
B PREND_LA_VALEUR U
FIN_POUR
AFFICHER U
FIN_ALGORITHME
Pour la question 3 je ne sais pas rentrer d'algorithme dans ma calculette qui est une casio graph35, pourriez vous m'aider SVP
A bientot
Merci d'avance :)
Hors ligne
#2 11-04-2012 19:50:07
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 401
Re : Devoir maison 1°S
Bonsoir,
Si tu as testé tes scripts avec AlgoBox, tu as bien dû voir si ça marche ou non...
J'ai trouvé 2 possibilités mais je ne comprend pas "jusqu'à un rang N donné", c'est moi qui dois le déterminer le rang c'est cela ?
Oui et Non.
Non, parce que c'est celui qui exécute le programme en dehors de ta présence qui choisit le nombre n...
Donc, j'opte pour ta 2e possibilité avec : LIRE N
Mais ici : http://www.bibmath.net/forums/viewtopic.php?id=5291, j'ai écrit ce script (modifié pour commencer avec 1 1) et mes résultats en sortie...
Il ressemble beaucoup à ton premier programme, lequel ne marche pas à cause de ça :
POUR i ALLANT_DE 2 A N
A ce stade de TON programme la variable N n'est pas déclarée, donc est inconnue du programme...
Donc mon programme étant :
VARIABLES
2 Fibo1 EST_DU_TYPE NOMBRE
3 Fibo2 EST_DU_TYPE NOMBRE
4 fibo EST_DU_TYPE NOMBRE
5 i EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7 Fibo1 PREND_LA_VALEUR 1
8 Fibo2 PREND_LA_VALEUR 1
9 AFFICHER Fibo1
10 AFFICHER " "
11 AFFICHER Fibo2
12 POUR i ALLANT_DE 1 A 23
13 DEBUT_POUR
14 AFFICHER " "
15 fibo PREND_LA_VALEUR Fibo1+Fibo2
16 Fibo1 PREND_LA_VALEUR Fibo2
17 Fibo2 PREND_LA_VALEUR fibo
18 AFFICHER fibo
19 FIN_POUR
20 FIN_ALGORITHME
Résultats :
***Algorithme lancé***
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368
***Algorithme terminé***
Il suffit de déclarer la variable n :
2 Fibo1 EST_DU_TYPE NOMBRE
3 Fibo2 EST_DU_TYPE NOMBRE
4 fibo EST_DU_TYPE NOMBRE
5 i EST_DU_TYPE NOMBRE
6 n EST DU TYPE NOMBRE
7 DEBUT_ALGORITHME
8 Fibo1 PREND_LA_VALEUR 1
9 Fibo2 PREND_LA_VALEUR 1
10 LIRE n
11 AFFICHER Fibo1
12 AFFICHER " "
13 AFFICHER Fibo2
14 POUR i ALLANT_DE 1 A 23
15 DEBUT_POUR
16 AFFICHER " "
17 fibo PREND_LA_VALEUR Fibo1+Fibo2
18 Fibo1 PREND_LA_VALEUR Fibo2
19 Fibo2 PREND_LA_VALEUR fibo
20 AFFICHER fibo
21 FIN_POUR
22 FIN_ALGORITHME
Comme, moi, je voulais afficher de U0 à U24, 25 termes, en ligne je commence par afficher Fino1 et Fibo2 séparés par une espace, sans retour à la ligne.
Puis dans la boucle POUR, je commence par afficher, sans retour à la ligne, une espace " " (AFFICHER MESSAGE) pour que chaque nombre soit séparé de celui qui le précède.
Pour ta CASIO.
Va lire ce résumé :
http://math.univ-lyon1.fr/irem/IMG/pdf/400_Graph35_.pdf
Je n'ai pas ta calculette, je viens juste de télécharger le manuel...
Tu vas devoir initialiser F, G, H pour Fibo1, Fibo2, fibo à 1...
Le n ne te sert à rien, tu veux U24.
Donc ta boucle doit aller de 2 à 24 (boucle FOR) voir p. 374 et 375 de ton manuel
Tu dois faire ensuite
FOR 2 --> I To 24
F + G --> H
G --> F
H --> G
Next
H /|
La dernière affiche H en sortie de boucle : pour mon curieux triangle, voir p. 372
Tu t'en sortiras ?
@+
[EDIT]
démonstration de l'expression produit scalaire avec les projetés orthogonaux
Encore une question que je trouve imprécise.
Soient [tex]\vec U(x\;;\;y)\;\;\text{et}\;\;\vec V(x'\;;\;y')[/tex] deux vecteurs quelconques du plan rapporté à un repère orthonormal [tex](O\;,\;\vec i\;,\;\vec j)[/tex]
Ta question est-elle : Montrer que [tex]\vec U.\vec V = xx'+yy'[/tex] ?
Si oui, alors tu n'as étudié qu'un cas particulier...
[EDIT2]
Si ta question veut bien dire cela, alors je commencerais par projeter orthogonalement [tex]\vec U\;\text{ et }\; \vec V[/tex] sur l'axe des abscisses en [tex]\vec U_1\;\text{ et }\; \vec V_1[/tex] et sur l'axe des ordonnées en [tex]\vec U_2\;\text{ et }\; \vec V_2[/tex].
On peut donc écrire [tex]\vec U=\vec U_1+\vec U_2\;\text{ et }\;\vec V=\vec V_1+\vec V_2[/tex]
D'où [tex]\vec U.\vec V =(\vec U_1+\vec U_2)(\vec V_1 + \vec V_2)[/tex]
Après développement et annulation, il reste :
[tex] \vec U.\vec V=\vec U_1.\vec V_1+\vec U_2.\vec V_2[/tex]
Voyons de plus près: [tex]\vec U_1.\vec V_1[/tex]
Les deux vecteurs sont colinéaires, mais ils sont soit de même sens, soit opposés.
- s'ils sont de même sens : ils font l'un avec l'autre un angle de 0°.
D'où [tex]\vec U_1.\vec V_1= |x|.|x'].cos 0 = |xx'|[/tex]
* sens opposés à [tex]\vec i[/tex], alors le produit xx' est >0 et |xx'|=xx'...
Je te laisse poursuivre
Dernière modification par yoshi (12-04-2012 15:44:11)
Hors ligne
#3 20-04-2012 16:11:30
- june06
- Membre
- Inscription : 16-01-2012
- Messages : 35
Re : Devoir maison 1°S
Bonjour :) et merci beaucoup
Donc tout d'abord pour la démonstration je dois démontrer : soit A et B deux points distincts du plan et soit C et D deux autres points distincts. Si C' et D' sont des projetés orthogonaux de C et D sur la droite (AB) alors [tex]\overrightarrow{AB}.\overrightarrow{CD}=\overrightarrow{AB}.\overrightarrow{C'D'}[/tex]
Donc alors pour l'algorithme j'ai juste à remplacer N par 24 ? mais je ne comprend pas sur votre algorithme le afficher " " ,qu'est ce que cela représente ?
En essayant avec un autre méthode je trouve pour algorithme :
Entrée
Saisir N
Traitement
A prend la valeur 1
B prend la valeur 1
C prend la valeur 1
Tant que C<N-2
A prend la valeur B
B prend la valeur A+B
C prend la valeur C+1
Fin tant que
Sortie
Afficher B
Est-il correct où vaut-il mieux que je prenne les 2 premiers ?
Merci d'avance
A bientot
Dernière modification par june06 (20-04-2012 16:24:45)
Hors ligne
#4 20-04-2012 18:16:05
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 401
Re : Devoir maison 1°S
Bonsoir,
Si je demande l'affichage, par une boucle, des nombres (par exemple, hein) 2, 3 et 4 sans retour à la ligne, j'obtiens 234...
Il faut bien pour que ce soit lisible que j'intercale une espace (en informatique c'est féminin), d'où le AFFICHER " "...
Il n'y a pas besoin de cela, si on veut écrire les nombres les uns en dessous des autres (dans ce cas laisser cocher le Ajouter un retour à la ligne", qui dans mon programme est décoché...
C'est plus clair cette fois?
De toutes façons, je l'avais déjà expliqué dans ma réponse précédente, ici :
Puis dans la boucle POUR, je commence par afficher, sans retour à la ligne, une espace " " (AFFICHER MESSAGE) pour que chaque nombre soit séparé de celui qui le précède.
En général, lorsque le nombre de d'itérations (de tours, si tu veux) est connu, il est conseillé d'utiliser une boucle POUR...
La boucle TANT QUE t'oblige :
- à bien définir la condition d'arrêt,
- à gérer un compteur (qui, lui, est intégré à la boucle POUR et tu n'as donc pas besoin de t'en occuper).
Mais ça marche aussi.
En ce qui concerne le produit scalaire, maintenant ton énoncé est complet, donc clair, ce qui n'était pas le cas avant...
Ce que tu avais fait est correct.
@+
[EDIT]ET n'attends pas de nouveau 8 jours pour te re-manifester, s'il te plaît, on perd le fil...
Dernière modification par yoshi (20-04-2012 18:37:31)
Hors ligne
#5 21-04-2012 11:37:00
- june06
- Membre
- Inscription : 16-01-2012
- Messages : 35
Re : Devoir maison 1°S
Bonjours et excusez moi mais je n'avais pas pu répondre plus tôt.
Merci encore
Donc l'algorithme de mon premier message est juste ? il faut juste que je remplace N par 24 ?
A bientot
Merci d'avance
Hors ligne
#6 21-04-2012 12:16:03
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 401
Re : Devoir maison 1°S
Salut
Cet algorithme (le 2e de ton 1er message) fonctionne parfaitement :
N EST_DU_TYPE NOMBRE
A EST_DU_TYPE NOMBRE
B EST_DU_TYPE NOMBRE
U EST_DU_TYPE NOMBRE
I EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
A PREND_LA_VALEUR 1
B PREND_LA_VALEUR 1
Lire N
POUR I ALLANT_DE 2 A N
DEBUT_POUR
U PREND_LA_VALEUR A+B
A PREND_LA_VALEUR B
B PREND_LA_VALEUR U
FIN_POUR
AFFICHER U
FIN_ALGORITHME
Je l'ai testé.
En ce qui concerne ta CASIO, as-tu réussi à écrire le programme demandé ?
@+
Hors ligne
#7 21-04-2012 13:11:34
- june06
- Membre
- Inscription : 16-01-2012
- Messages : 35
Re : Devoir maison 1°S
Re et merci :)
oui j'ai réussi et je trouve donc u24=74635 est-ce que c'est juste ?
Merci d'avance
A bientot
Hors ligne
#8 21-04-2012 13:57:45
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 401
Re : Devoir maison 1°S
Salut,
Hélas, non !
U24 = U22+U23 = 28657+ 46368 = 75025
Voir mon post #2 où je me suis arrêté à U23 :
Résultats :
***Algorithme lancé***
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368
***Algorithme terminé***
Si tu lances ton programme AlgoBox, voilà ce qu'il donne en sortie :
***Algorithme lancé***
75025
***Algorithme terminé***
Tu avais donc les moyens d'avoir, toute seule, la réponse à ta question. ;-)
Si tu ne trouves pas l'erreur, poste ton code CASIO que je l'examine...
@+
Hors ligne
#9 21-04-2012 16:01:30
- june06
- Membre
- Inscription : 16-01-2012
- Messages : 35
Re : Devoir maison 1°S
Je viens de trouver, merci beaucoup pour votre aide
A bientot :)
Hors ligne
#10 24-04-2012 09:15:53
- Mavic83
- Invité
Re : Devoir maison 1°S
Bonjour,
j'ai exactement le même Dm à faire.
Pour le programme il y a un truc que je ne comprend pas , lorsque que vous dite EST_DU_TYPE NOMBRE vous entendez quoi par ça ?
----------------------------------------
Merci
Dernière modification par yoshi (24-04-2012 09:35:21)
#11 24-04-2012 09:51:21
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 401
Re : Devoir maison 1°S
Bonjour,
AlgoBox ne reconnaît que les nombres (qu'ils soient entiers ou pas), les chaînes de caractères (tu connais bien la différence entre nombre et chaîne ?) et les Listes (pour simplifier, disons les Tableaux).
Donc dans les déclarations de "variables", lorsque je déclare une variable n (par exemple), je dois indiquer si c'est un nombre, une chaîne ou une liste.
Exemple :

je sélectionne nombre, je clique sur OK et dans la section VARIABLES apparaît :
n EST_DU_TYPE_NOMBRE.
Est-ce clair ?
@+
Hors ligne
#12 24-04-2012 09:54:05
- Mavic83
- Invité
Re : Devoir maison 1°S
J'ai compris , seulement j ai un problème je dois trouver U2012 , comment faire le résultat est trop long
#13 24-04-2012 09:55:07
- Mavic83
- Invité
Re : Devoir maison 1°S
Merci en tout cas de m aider
#14 24-04-2012 10:41:53
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 401
Re : Devoir maison 1°S
Bonjour,
Tu dois trouver U2012 ?
Avec la calculette ou avec AlgoBox ?
Avec AlgoBox, effectivement on obtient une erreur de ce type :
***Algorithme interrompu ligne 13 : erreur de calcul***
Vérification faite avec le langage Python, je trouve :
U2012 = 2201074898489654851295345882693918685635408879838265301853440274470213648026375407324680294664111893632034904942901946181929686819379162544175172394839539802370073688566826521551915624403436047549263026959951210170539123225851805709549452480163241274159911091452903300192054343185198788563257726939950967985095124747544926036199520529035661659861706380396747716718048438117376592867894066592200556226235866548588549337858
Soit 421 chiffres...
Avec le langage Python, les nombres entiers sont d'une longueur seulement limitée par la quantité de mémoire de ta machine.
Je t'engage à aller trouver ton Prof (s'il ne t'a pas donné d'autres indications que tu n'as pas signalées) et lui dire que la taille du nombre U2012 est trop grand pour pouvoir être stocké dans une variable (ça lui a probablement échappé...) et tu demandes ce que tu dois faire...
Moi, je pourrais contourner la difficulté avec tout autre langage que Python (là, comme tu l'as vu, ce n'est pas nécessaire) , sauf peut-être avec AlgoBox qui n'est pas fait pour ça...
* Il faudrait créer 3 listes au lieu de 3 variables,
* Dans chaque liste on stocke un chiffre après l'autre de chacun des nombres Un-]2, Un-1 et Un, à l'envers
* Et on additionne chiffre après chiffre, comme à la main, en pensant bien à gérer les retenues...
En fin de calcul, on relit Un depuis la fin et on affiche les chiffres les uns après les autres.
Exemple :
Ret 1 1 1 1
U22 | 7 | 5 | 6 | 8 | 2 |
----|-----|-----|-----|-----|-----|
U23 | 8 | 6 | 3 | 6 | 4 |
----|-----|-----|-----|-----|-----|
U24 | 5 | 2 | 0 | 5 | 7 |
Le résultat se lit de droite à gauche en partant de la fin : 75025...
J'ai souligné tous les résultats donnant une retenue et ai inscrit les retenues sur la ligne Ret.
Pourquoi stocker à l'envers ?
Parce que les listes s'accroissent de droite à gauche...
Êtes-vous capables, tes petits camarades et toi de programmer ça ?
Je vais voir, si c'est pas trop coton à faire avec AlgoBox qui est quand même très limité...
@+
Hors ligne
#15 24-04-2012 11:41:44
- Mavic83
- Invité
Re : Devoir maison 1°S
Merci , je vais surement le faire avec Python
#16 24-04-2012 13:01:21
- Mavic83
- Invité
Re : Devoir maison 1°S
print("suite de fibonacci")
F0=0
F1=1
N=1
print(F1)
while N<2012
P=F1
F1=P+F0
F0=P
N=N+1
print(F1)
Je trouve 1360339099050831291379435681688955503065585659010946155141602617183897337443701411096399942297131982079502638445774331157946277005087171888228558355537366224371746200469637880236316588599086887348036901884241593336618524538690660618063682125339544013281223536004712161112123160064091085502986418726938170867592022796613517119004637421258467517923413084049920657445698262851995845658288840175943184664815407670853363182269
#17 24-04-2012 13:36:03
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 401
Re : Devoir maison 1°S
Salut,
Petit "détail" : ta condition d'arrêt devrait être while n < 2013...
Tu as affiché U2011
D'autre part, lorsque le nombre d'itérations est connu il est préférable d'utiliser une boucle for
.
Voilà ma version :
a,b,c=1,1,1
for i in range(2, 2013):
c=a+b
b,a=a,c
print(c)
Là aussi pour obtenir U2012, mon indice de fin de boucle doit être à 2013 : lorsque la boucle for (qui possède un compteur intégré, donc pas besoin de le gérer) arrive à 2013, elle s'arrête.
Et donc elle a bien calculé U2012
Ok ?
@+
[EDIT] Pour preuve de la puissance de Python, en jouant avec les entiers et les chaînes pour obtenir en toute fin de calcul seulement un nombre décimal, j'ai pu calculer le nombre d'or [tex]\frac{1+\sqrt 5}{2}[/tex] avec 20 000 décimales en 2,5 s...
Voir ici http://www.bibmath.net/forums/viewtopic.php?id=3907&p=2 post #32
Hors ligne
#18 24-04-2012 14:12:11
- Mavic83
- Invité
Re : Devoir maison 1°S
Merci
Pages : 1
Discussion fermée







