Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(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 :

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       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 :

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

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 :

mini_120424105924446567.png

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

Pied de page des forums