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 22-02-2016 21:19:55
- pinet1998
- Membre
- Inscription : 31-10-2015
- Messages : 10
Algorithme sur le théorème des valeurs intermédiaires
Bonjour,
J'ai un DM pour la rentrée à faire et il me manque juste la partie algorithme.
Je dois trouver un algorithme permettant de déterminer la valeur approchée de alpha qui est l'unique solution de f(x)=0
J'ai f(x)= x - 5lnx - (4/x)
J'ai déterminé sa limite en 0 et je trouve -infini et sa limite en +infini qui est +infini aussi.
J'ai ensuite fait le tableau de variation et j'en ainsi déduit que f(x)=0 admet une unique solution alpha sur ]0;+infini[ avec comme intervalle-image ](environ)3.9;+infini[
Donc je cherche un algorithme qui va me permettre de trouver la valeur de alpha. La méthode est par dichotomie, je l'ai un peu vu mais je galère encore un peu !
Merci d'avance pour votre aide !
Hors ligne
#2 22-02-2016 21:59:39
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 402
Re : Algorithme sur le théorème des valeurs intermédiaires
Bonsoir,
Bienvenue à bord...
Ce soir, je suis HS, si personne ne t'a répondu je m'y colle demain matin : j'ai déjà écrit une recherche de racine en langage Python, selon plusieurs méthodes dont la dichotomie.
Mais tu ne veux pas un script, seulement un Algo...
Va voir :
https://fr.wikipedia.org/wiki/M%C3%A9th … dichotomie
et
https://perso.univ-rennes1.fr/marie-pie … df/TP2.pdf
Au passage :
[tex]f(12,5)<0[/tex] et [tex]f(13,5)>0[/tex] donc :
[tex]12,5<\alpha<13,5[/tex]
Après, tu affines...
@+
Hors ligne
#3 22-02-2016 23:15:55
- Fred
- Administrateur
- Inscription : 26-09-2005
- Messages : 7 352
Re : Algorithme sur le théorème des valeurs intermédiaires
Salut,
Que te demande-t-on exactement? D'écrire un algorithme, ou d'appliquer l'algorithme pour trouver une valeur approchée???
Pour compléter ce que dit Yoshi, on commence, après avoir localisé la racine comme il l'a fait,
par calculer la valeur de la fonction au milieu... ici, on calcule [tex]f(13)[/tex]
Il y a deux cas :
1. Si [tex]f(13)>0[/tex], alors [tex]12,5\leq \alpha\leq 13[/tex] et on recommence avec le milieu, 12,75...
2. Si [tex]f(13)<0[/tex], alors [tex]13\leq \alpha\leq 13,5[/tex] et on recommence avec le milieu, 13,25...
F.
Hors ligne
#4 23-02-2016 09:50:28
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 402
Re : Algorithme sur le théorème des valeurs intermédiaires
Re,
Ton algorithme va ressembler à ce qui suit
Je décide ici de chercher [tex]\alpha[/tex] à près, c'est à dire que tu vas arrêter les calculs lorsque, avec [tex]x_{n-1}\leqslant \alpha < x_n[/tex], [tex] x_n-x_{n-1}\leqslant 0,0001[/tex]
Algorithmiquement, on va se limiter aux variables x1, x2 et xm=(x1+x2)/2....
x1=12.5
x2=13.5
f(x)=x-5ln(x)-4/x
Tant que x2-x1>0.0001
xm=(x1+x2)/2
calculer f(xm)
Si f(xm)<0 alors
x1=xm
SINON
x2=xm
AFFICHER l'arrondi de x1 à 0.0001 près
J'obtiens [tex]\alpha\approx 13.2064[/tex] en 10 lignes de Python.
@+
Hors ligne
#5 23-02-2016 10:02:08
- pinet1998
- Membre
- Inscription : 31-10-2015
- Messages : 10
Re : Algorithme sur le théorème des valeurs intermédiaires
La question c'est: Ecrire, sous algobox, un algorithme qui permet de déterminer une valeur approchée de alpha.
Notre prof nous a conseillé de le faire par dichotomie. J'ai commencé à écrire cet algorithme mais quand je veux le tester il me dit erreur de syntaxe, etc...
Hors ligne
#6 23-02-2016 10:15:21
- pinet1998
- Membre
- Inscription : 31-10-2015
- Messages : 10
Re : Algorithme sur le théorème des valeurs intermédiaires
Comment je fais pour mettre sous algobox f(xm) ? Et le logarithme népérien, sous algobox, il se traduit bien par log(x) ? Désolé je suis totalement largué avec ce logiciel...
Hors ligne
#7 23-02-2016 10:20:07
- pinet1998
- Membre
- Inscription : 31-10-2015
- Messages : 10
Re : Algorithme sur le théorème des valeurs intermédiaires
Mon algorithme ressemble à ceci :
1 VARIABLES
2 a EST_DU_TYPE NOMBRE
3 b EST_DU_TYPE NOMBRE
4 m EST_DU_TYPE NOMBRE
5 y EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7 y PREND_LA_VALEUR x-5log(x)-(4/x)
8 a PREND_LA_VALEUR 12.5
9 b PREND_LA_VALEUR 13.5
10 TANT_QUE (b-a>0.00001) FAIRE
11 DEBUT_TANT_QUE
12 m PREND_LA_VALEUR (a+b)/2
13 AFFICHERCALCUL f(m)
14 SI (f(m)>0) ALORS
15 DEBUT_SI
16 b PREND_LA_VALEUR m
17 FIN_SI
18 SINON
19 DEBUT_SINON
20 a PREND_LA_VALEUR m
21 FIN_SINON
22 FIN_TANT_QUE
23 AFFICHER a
24 AFFICHER "<solution<"
25 AFFICHER b
26 FIN_ALGORITHME
Hors ligne
#8 23-02-2016 10:25:15
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 402
Re : Algorithme sur le théorème des valeurs intermédiaires
Salut,
Montre-nous ton code, s'il te plaît.
Je viens de le faire avec AlgoBox, voilà mon code simlplifié (à toi de le mettre en forme correctement avec AlgoBox :
Déclarer variables
x1 NOMBRE
x2 NOMBRE
xm NOMBRE
f NOMBRE
resultat NOMBRE
DEBUT ALGORITHME
x1=12.5
x3=13.5
Tant que x2-x1>0.0001
xm=(x1+x2)/2
f=xm-5*log(xm)-4/xm
SI f<0 alors
x1=xm
SINON
x2=xm
FIn si
Fin tant que
resultat = ROUND(x1*10000)/10000
AFFICHER resultat
FIN ALGORITHME
Il n'est prévu dans AlgoBox que l'arrondi à l'entier le plus proche : je contourne donc la difficulté en multipliant x1 par 10000, j'arrondis le résultat, que je redivise par 10000. J'ai ainsi l'arrondi à 0.0001 près.
Si tu n'y arrivais pas, je te donnerais alors mon code fonctionnel. Mais je préférerais corriger ton erreur de syntaxe.
Que fait mon code ?
Je calcule la valeur médiane (xm) entre x1 et x2. (1)
Je calcule f=x-5*log(x)-4/xm
Je teste le signe de f
f <0 alors la solution sera entre xm et x2 : par conséquent j'affecte à x1 la valeur xm
f >0 alors la solution sera entre x1 et xm : par conséquent j'affecte à x2 la valeur xm
Je repars ensuite en (1) tant que l'écart entre x1 et x2 n'est pas <= 0.0001
En sortie de boucle, ainsi que je te l'ai dit j'arrondis le résultat à 4 chiffres après la virgule et je l'affiche.
@+
[EDIT]
Je cherche l'erreur.
Voilà mon code :
1 VARIABLES
2 x1 EST_DU_TYPE NOMBRE
3 x2 EST_DU_TYPE NOMBRE
4 xm EST_DU_TYPE NOMBRE
5 f EST_DU_TYPE NOMBRE
6 resultat EST_DU_TYPE NOMBRE
7 DEBUT_ALGORITHME
8 x1 PREND_LA_VALEUR 12.5
9 x2 PREND_LA_VALEUR 13.5
10 TANT_QUE (x2-x1>0.0001) FAIRE
11 DEBUT_TANT_QUE
12 xm PREND_LA_VALEUR (x1+x2)/2
13 f PREND_LA_VALEUR xm-5*log(xm)-4/xm
14 SI (f<0) ALORS
15 DEBUT_SI
16 x1 PREND_LA_VALEUR xm
17 FIN_SI
18 SINON
19 DEBUT_SINON
20 x2 PREND_LA_VALEUR xm
21 FIN_SINON
22 FIN_TANT_QUE
23 resultat PREND_LA_VALEUR ROUND(x1*10000)/10000
24 AFFICHER resultat
25 FIN_ALGORITHME
Dernière modification par yoshi (23-02-2016 10:33:00)
Hors ligne
#9 23-02-2016 10:39:21
- pinet1998
- Membre
- Inscription : 31-10-2015
- Messages : 10
Re : Algorithme sur le théorème des valeurs intermédiaires
Cela ne marche toujours pourtant j'ai refais exactement votre algorithme juste avec des lettres différentes...
Il m'affiche : ***L'algorithme contient une erreur : impossible de le lancer***
***Vérifiez la syntaxe des affectations et des conditions***
1 VARIABLES
2 a EST_DU_TYPE NOMBRE
3 b EST_DU_TYPE NOMBRE
4 m EST_DU_TYPE NOMBRE
5 y EST_DU_TYPE NOMBRE
6 solution EST_DU_TYPE NOMBRE
7 DEBUT_ALGORITHME
8 a PREND_LA_VALEUR 12.5
9 b PREND_LA_VALEUR 13.5
10 TANT_QUE (b-a>0.00001) FAIRE
11 DEBUT_TANT_QUE
12 m PREND_LA_VALEUR (a+b)/2
13 y PREND_LA_VALEUR m-5*log(m)-4/m
14 SI (y<0) ALORS
15 DEBUT_SI
16 a PREND_LA_VALEUR m
17 FIN_SI
18 SINON
19 DEBUT_SINON
20 b PREND_LA_VALEUR m
21 FIN_SINON
22 FIN_TANT_QUE
23 solution PREND_LA_VALEUR round(a*10000)/10000
24 AFFICHER a
25 AFFICHER solution
26 AFFICHER b
27 FIN_ALGORITHM
Hors ligne
#10 23-02-2016 10:41:12
- pinet1998
- Membre
- Inscription : 31-10-2015
- Messages : 10
Re : Algorithme sur le théorème des valeurs intermédiaires
C'est bon j'ai réussi j'avais oublié d'enlever la fonction F1 ! J'ai une dernière question comment on fait obtenir la solution dans un encadrement ?
Dernière modification par pinet1998 (23-02-2016 10:46:07)
Hors ligne
#11 23-02-2016 10:48:51
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 402
Re : Algorithme sur le théorème des valeurs intermédiaires
Re,
Ceci déjà fait planter le prog :
y PREND_LA_VALEUR x-5log(x)-(4/x)
Corrige en :
y PREND_LA_VALEUR x-5*log(x)-(4/x)
5log(x) n'est pas reconnu par AlgoBox.
Par contre, je ne comprends pas :
y PREND_LA_VALEUR x-5log(x)-(4/x) et après AFFICHERCALCUL f(m)
Aurais-tu créé une fonction f ?
En outre, ton calcul de la valeur de y se trouve hors boucle.
Si je déplace : y PREND_LA_VALEUR m-5*log(m)-(4/m) après le calcul de m
et que je teste ensuite : Si y>0 au lieu de Si (f(m)>0)
ton code fonctionne
@+
Dernière modification par yoshi (23-02-2016 10:56:13)
Hors ligne
#12 23-02-2016 10:51:07
- pinet1998
- Membre
- Inscription : 31-10-2015
- Messages : 10
Re : Algorithme sur le théorème des valeurs intermédiaires
Non je sais pas j'ai essayé de tenter un truc mais c'est bon !
Hors ligne
#13 23-02-2016 11:09:19
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 402
Re : Algorithme sur le théorème des valeurs intermédiaires
Salut,
Version Python :
x1=12.5
x2=13.5
while x2-x1>0.0001:
xm=(x1+x2)/2
f=xm-5*log(xm)-4/xm
if f <0:
x1=xm
else:
x2=xm
print (round(x1,4))
Ton affichage d'encadrement fonctionne.
Un détail : en principe c'est [tex]a\leqslant \alpha < b[/tex]
@+
Hors ligne
#14 23-02-2016 11:18:48
- pinet1998
- Membre
- Inscription : 31-10-2015
- Messages : 10
Re : Algorithme sur le théorème des valeurs intermédiaires
d'accord merci
Hors ligne
Pages : 1
Discussion fermée







