Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Programme

Posté par
Nathangelus
26-08-20 à 16:43

Bonjour, je viens ici pour en savoir plus sur la question que je me pose.

Je ne comprends pas ce qu'il faut mettre dans les pointillés du programme suivant :

A-->-3
B-->0
Tant que (B-A).....10^(-3) faire :
   C-->(A+B)/2
    Si (12-C²)*e^(-2C) > 100 alors C-->......
    Sinon C-->.....
Fin Tant que
afficher A,B

La fonction est f(x)=(12-x²)e^(-2x).

La question est : Compléter ce programme pour qu'il donne un encadrement à 10^(-3) près de la + grande solution de l'équation (E) : f(x) = 100
Il y a 2 solutions pour f(x) = 100 qui se trouve sur les encadrements suivant :
]-infini ; -3] et [-3;4], sachant qu'il demande la + grande solution, j'en déduis qu'elle se trouve sur la deuxième intervalle.

Quelqu'un pourrait m'aider s'il vous plaît ?

Posté par
carpediem
re : Programme 26-08-20 à 17:17

salut

voir dichotomie sur le net ...

Posté par
Nathangelus
re : Programme 26-08-20 à 19:59

Justement même avec ça, je ne vois pas....

Posté par
carpediem
re : Programme 26-08-20 à 20:05

déjà la deuxième ligne de l'algo est fausse ...

Posté par
Nathangelus
re : Programme 26-08-20 à 20:12

Pourtant c'est ce que mon prof m'a donné pour les vacances...
Ce serait plutôt B-->4

Posté par
Nathangelus
re : Programme 26-08-20 à 20:54

Ah d'accord je vois

A-->-3
B-->4
Tant que (B-A)>10^(-3) faire :
   C-->(A+B)/2
   Si (12-C²)*e^(-2C)>100 alors C-->A
    Sinon C-->B
Fin tant que
Afficher A,B

Posté par
carpediem
re : Programme 27-08-20 à 08:51

ça me semble convenable ...

Posté par
Nathangelus
re : Programme 27-08-20 à 09:39

J'ai essayé sur la calculatrice TI83, le programme ne fait que charger...

Posté par
Nathangelus
re : Programme 27-08-20 à 10:30

Sur TI83 j'ai fait ce programme :

(-3)->A
0->B
While (B-A)>10^(-3)
(A+B)/2->C
If (12-(C²))*e^(-2C)>100
Then
A->C
Else
B->C
End
Prompt A,B

La calculatrice me donne A=-3 et B=0, j'ai essayé avec B=4, c'est la même chose B de départ = B de sortie, là je ne comprends pas...

Posté par
Nathangelus
re : Programme 27-08-20 à 10:33

Ah oui non c'est bon en faite, ce programme sert à savoir quel est l'intervalle où se trouve la + grande solution de x pour f(x)=100.

Posté par
flight
re : Programme 27-08-20 à 10:40

salut

normalement on obtient quelque chose comme  x = -1.1147999...

Posté par
flight
re : Programme 27-08-20 à 10:49

il existe aussi d'autres facons d'ecrire ce programme :-->
Function f(x As Double) As Double
f = (12 - x ^ 2) * Exp(-2 * x) - 100
End Function

Sub solution()
Dim a As Double
Dim b As Double
a = -3
b = 0
While Abs(a - b) > 0.001
  If f(a) > 0 Then
    a = a + 0.001
  End If
  If f(b) < 0 Then
    b = b - 0.001
End If
Wend
MsgBox a     ' retourne  -1,115...

End Sub

Posté par
Nathangelus
re : Programme 27-08-20 à 11:23

Merci pour la réponse, mais le problème  c'est que quand je fais le programme que j'ai mis en haut, les résultats ne donne pas de =-1.115, et ça je ne comprends pas, j'ai un gros doute...

Posté par
Nathangelus
re : Programme 27-08-20 à 11:55

Sur la TI83 voici le programme que j'ai fait (repris du vôtre) :

(12-X²)*e^(-2X)->F
-3->A
0->B
While (B-A)>0.001
If (12-A²)*e^(-2A)>100
A+0.001->A
If (12-B²)*e^(-2B)<100
B-0.001->B
End
Disp A,B

A=-1.116
B=-1.115

Posté par
carpediem
re : Programme 27-08-20 à 13:47

certes mais qu'obtiens-tu ?

ton programme est bon avec 4 --> B ... mais peut-être qu'il manque encore un end ...

Posté par
Nathangelus
re : Programme 27-08-20 à 15:12

Ca ne m'affiche rien du tout, ça ne fait que charger...

Posté par
carpediem
re : Programme 27-08-20 à 16:58

certes ... mais le programme de flight n'est pas une recherche de solution par dichotomie mais par balayage ...

et changer d epb n'est pas faire le pb !!!

carpediem @ 27-08-2020 à 13:47

certes mais qu'obtiens-tu ?

ton programme est bon avec 4 --> B ... mais peut-être qu'il manque encore un end ...

Posté par
flight
re : Programme 27-08-20 à 17:17

Sauf erreur si ton programme ne tourne pas C est peut être parcequ il manque le "Fin du Si"

Posté par
alb12
re : Programme 27-08-20 à 18:21

salut, les erreurs sont en rouge.
A-->-3
B-->0
Tant que (B-A)>10^(-3) faire :
   C-->(A+B)/2
   Si (12-C²)*e^(-2C)>100 alors C-->A
    Sinon C-->B
Fin tant que
Afficher A,B

Posté par
Nathangelus
re : Programme 27-08-20 à 19:11

Pour les erreurs : C'est une faute de frappe c'est bien A-->C et B -->C.
De plus je ne vois pas où il manque un end ?

Je remets le programme :

-3->A
0->B
While (B-A)>0.001
(A+B)/2->C
If (12-C²)*e^(-2C)>100
A->C
B->C
End
Disp A,B

Posté par
alb12
re : Programme 27-08-20 à 19:17

où est la fin du if ?

Posté par
Nathangelus
re : Programme 28-08-20 à 11:21

Juste après "B->C" ?

Posté par
alb12
re : Programme 28-08-20 à 12:13

et la fin du while ?

Posté par
Nathangelus
re : Programme 28-08-20 à 12:19

Je tiens encore à préciser que ce programme est le programme du devoir de vacances, on a juste 3 pointillés à compléter.
Dans le programme il n'y a que "FinTantQue".

Posté par
carpediem
re : Programme 28-08-20 à 12:31

le programme de 19h11 est faux ... à trois titres :

les affectations A --> C et B --> C
il manque un end
une instruction est exécutée quel que soit le résultat du if alors que dans le premier msg il y a un else ...

un graphique permet de comprendre sans aucun pb ...

Posté par
alb12
re : Programme 28-08-20 à 12:33

soit mais pour ta calculatrice ne faut-il pas terminer le while ?

Posté par
Nathangelus
re : Programme 28-08-20 à 13:45

Je ne suis pas fort du tout en programmation, donc je ne comprends pas ou il manque un end :

-3->A
0->B
While (B-A)>0.001
(A+B)/2->C
If (12-C²)*e^(-2C)>100
Then : A->C
Else : B->C
End (je ne sais pas quoi écrire sur la TI83)
Disp A,B

Posté par
Nathangelus
re : Programme 28-08-20 à 13:47

Quand je mets le programme d'en haut, j'ai "ERREUR : SYNTHAXE" Quand je mets "VOIR" pour voir l'erreur c'est le "ELSE" qui ne va pas...

Posté par
alb12
re : Programme 28-08-20 à 14:39

il faut 2 end (juste pour info conserve le programme de ce fil)

Posté par
alb12
re : Programme 28-08-20 à 15:35

essaie ceci

-3->A
0->B
While (B-A)>0.001
(A+B)/2->C
If (12-C²)*e^(-2C)>100
Then  C->A
Else C->B
End
End
Disp A,B

Posté par
Nathangelus
re : Programme 28-08-20 à 15:49

C'est bon ça marche merci beaucoup !! Je viens de voir mon erreur, en faite j'avais mis
"A->C" et "B->C" alors que c'est l'inverse c'est "C->A" et "C->B".

Posté par
carpediem
re : Programme 28-08-20 à 16:28

il n'y a pas que ça et alb12 a donné la solution à ce que je dis depuis le début !!!

Posté par
Nathangelus
re : Programme 28-08-20 à 17:10

carpediem @ 28-08-2020 à 16:28

il n'y a pas que ça et alb12 a donné la solution à ce que je dis depuis le début !!!
Oui merci beaucoup, c'est moi, j'ai eu une inattention j'avais oublié d'inverser car sur la TI83 on inverse, ce n'est pas "A->-3" mais "-3->A", c'est pour cela que j'avais oublié. Sur la feuille d'exercice c'est marqué
"A<-C", c'est justement ça car si on inverse on obtient, "C->A". Je le saurai pour la prochaine fois, je ne ferai plus cette erreur d'inattention qui me pénalise en maths.

Posté par
carpediem
re : Programme 28-08-20 à 18:27

le programme officiel exige la notation A <-- C ... alors que la plupart des calculatrices font le contraire C --> A ...

il est donc normal de se perdre un peu ...



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !