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 ?
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
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...
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.
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
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...
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
certes mais qu'obtiens-tu ?
ton programme est bon avec 4 --> B ... mais peut-être qu'il manque encore un end ...
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 !!!
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
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
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".
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 ...
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
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...
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
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".
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :