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

from math import log

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

Pied de page des forums