Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

algorithme fonction

Posté par
mathu
05-02-12 à 22:10

bonsoir à tous et à toute
j'ai un algorithme a faire et j'ai quelque soucis , f est une fonction continue sur [a;b] f(a)*f(b)<0 donc signe de f(a) différent du signe de f(b)
d'après le corolaire des VI f(x)=o n' a qu'une seule solution
j'ai commencé avec; variable a,
                   variable b,
                   variable c,
                   variable précision
                   variable x
début algorithme:
                  précision PREND_LA_VALEUR 0.01
                    LIRE a
                    LIRE b
                  TANT_QUE (b-a>précision) FAIRE
   DEBUT_TANT_QUE
    c PREND_LA_VALEUR (a+b)/2

Si f(c)=0
c prend la valeur x
Si f(a)f(c)<0
x prend la valeur a<x<c
Sif(b)f(c)>o
x prend la valeur c<x<b
tant que fin
afficher a
afficher b
afficher <solution<
fin algorithme
je ne suis pas très bon en algorithme, merci de votre aide

Posté par
Glapion Moderateur
re : algorithme fonction 05-02-12 à 22:18

Si tu veux j'ai fait il n'y a pas longtemps un algorithme qui est identique à celui que tu veux je crois :

Posté par
dhalte
re : algorithme fonction 05-02-12 à 22:21

L'algorithme rédigé pour l'outil didactique AlgoBox
Algorithme de recherche de racine d'une équation par la méthode de la dichotomie
'a' et 'b' sont les bornes de l'intervalle initial
'ecart' est l'erreur acceptable
La fonction est définie dans l'onglet "Utiliser une fonction numérique"

1   VARIABLES
2     a EST_DU_TYPE NOMBRE
3     b EST_DU_TYPE NOMBRE
4     m EST_DU_TYPE NOMBRE
5     ecart EST_DU_TYPE NOMBRE
6     fa EST_DU_TYPE NOMBRE
7     fm EST_DU_TYPE NOMBRE
8   DEBUT_ALGORITHME
9     // Saisie des bornes initiales et de la marge d'erreur
10    LIRE a
11    AFFICHER "a="
12    AFFICHER a
13    LIRE b
14    AFFICHER "b="
15    AFFICHER b
16    LIRE ecart
17    AFFICHER "ecart="
18    AFFICHER ecart
19    // Initialisation de l'image de la borne inférieure
20    fa PREND_LA_VALEUR F1(a)
21    // On boucle tant que l'écart entre les bornes est supérieur à la marge d'erreur
22    TANT_QUE (abs(b-a)>ecart) FAIRE
23      DEBUT_TANT_QUE
24      // Calcul du milieu de l'intervalle et de son image
25      m PREND_LA_VALEUR (a+b)/2
26      fm PREND_LA_VALEUR F1(m)
27      // test si cette image est du signe de l'image de la borne inférieure ou du signe opposé
28      SI (fa*fm>0) ALORS
29        DEBUT_SI
30        // la racine est entre m et b, on déplace la borne inférieure
31        a PREND_LA_VALEUR m
32        fa PREND_LA_VALEUR fm
33        FIN_SI
34        SINON
35          DEBUT_SINON
36          // la racine est entre a et m, on déplace la borne supérieure
37          b PREND_LA_VALEUR m
38          FIN_SINON
39      FIN_TANT_QUE
40    AFFICHER "valeur approchée racine entre a et b : "
41    AFFICHER m
42  FIN_ALGORITHME

Fonction numérique utilisée :
F1(x)=x*exp(x)-pow(x,2)-2*x+2
***Algorithme lancé***
a=-2
b=-3
ecart=0.0001
valeur approchée racine entre a et b : -2.6781616

***Algorithme terminé***

Posté par
mathu
re : algorithme fonction 05-02-12 à 22:21

ok merci , mais est ce qu'il serait possible de m'expliquer mes erreurs pour éviter que je les refasse ?

Posté par
dhalte
re : algorithme fonction 05-02-12 à 22:24

que peut bien vouloir dire

x prend la valeur c<x<b

Posté par
mathu
re : algorithme fonction 05-02-12 à 22:25

a d'accord merci , je comprend mieux

Posté par
mathu
re : algorithme fonction 05-02-12 à 22:26

x prend la valeur c<x<b , je voulais dire : que x est compris dans l'intervalle c et b

Posté par
dhalte
re : algorithme fonction 06-02-12 à 07:46

tes erreurs sont nombreuses, hélas
et je ne me vois pas les analyser toutes

il suffit d'essayer de faire "tourner" l'algorithme à la main sur un exemple simple pour s'en rendre compte

par exemple, quand tu écris :
Si f(c)=0
c prend la valeur x


mais si cela arrive dès la première boucle, x n'a pas été initialisé...

et ensuite, tu ne le lis plus, ce x, tu te contente d'y stocker des valeurs

tu espères que tu auras systématiquement f(c)=0 ?

autre exemple flagrant : à chaque boucle, tu calcules
    c PREND_LA_VALEUR (a+b)/2
c'est bien, mais a et b ne variant pas, c prend toujours la même valeur

et ton test de sortie de boucle :
TANT_QUE (b-a>précision) FAIRE
mais a et b ne variant jamais, tu ne risques pas de sortir de ta boucle un jour

j'arrête là, tu dois d'abord apprendre à exécuter un algorithme sur le papier, c'est pénible, mais tu en as drôlement besoin.
Exécute l'algorithme manuellement pour tenter de voir ce qui cloche

Posté par
mathu
re : algorithme fonction 06-02-12 à 21:05

Si je souhait enter une fonction c'est possible ?

Posté par
dhalte
re : algorithme fonction 06-02-12 à 21:28

tu peux me traduire ta question en français ? merci

Posté par
mathu
re : algorithme fonction 06-02-12 à 21:37

désoler, je voulais savoir , si il était possible d'entrer ma fonction par exemple f(x)=5x-2 pour que le programme trouve la solution de cette fonction dans l'intervalle [a;b]

Posté par
dhalte
re : algorithme fonction 06-02-12 à 22:05

tu veux dire, avec Algobox ?

algorithme fonction

tu vas sur l'onglet "Utiliser une fonction numérique"
tu coches la case
tu saisis la fonction de ton choix, par exemple
5*x-2
en respectant la syntaxe

et dans l'algorithme, tu utilises F1(tavariable), comme je l'ai fait dans mon exemple
20    fa PREND_LA_VALEUR F1(a)

Posté par
mathu
re : algorithme fonction 06-02-12 à 22:17

a d'accord , merci



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 1730 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 !