Algorithme
Discutez d'informatique ici !
-
psika
- Messages: 4
- Enregistré le: 11 Mai 2006, 20:42
-
par psika » 23 Fév 2007, 15:46
Pouvez vous maider a comprendre cet exercice basé sur Caml Light, svp??
Ecrire une fonction:
dichtomie : (float->float)->float*float->float->float
telle que
dichtomie f (borne_inf, borne_sup) precision retourne la valeur approchée a dun reel r de lintervalle (borne_inf,borne_sup) tq f(r)=0 à la precision, c-a-d que la distance entre a et r ne doit pas depasser cette précision. On supposera que la fonction f est usuelle.
On rappelle que l'existence d'un tel r nest gearantie que si la fonction change de signe pr son eval aux bornes de l'intervalle. r est au moins dans un des demi intervalles dt une borne est le milieu et que le changement de signe se réalise à coup pour un des deux.
-
Quidam
- Membre Complexe
- Messages: 3401
- Enregistré le: 03 Fév 2006, 17:25
-
par Quidam » 23 Fév 2007, 17:55
Ben quand ce sera en français, tu as une chance d'avoir des réponses !
par Dominique Lefebvre » 23 Fév 2007, 18:03
"Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette ou plus pure.Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément !" Boileau....
Je pense que tu devrais faire l'effort de poser ton problème de manière ordonnée en définissant les termes que tu emplois. Et ton algorithme sera écrit à moitié....
-
Quidam
- Membre Complexe
- Messages: 3401
- Enregistré le: 03 Fév 2006, 17:25
-
par Quidam » 23 Fév 2007, 18:50
Dominique Lefebvre a écrit:"Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette ou plus pure.Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément !" Boileau....
Bravo ! C'est ma citation préférée !
-
psika
- Messages: 4
- Enregistré le: 11 Mai 2006, 20:42
-
par psika » 24 Fév 2007, 12:36
voila ce que jai essaye detablir:
let rec dichotomie f(borne_inf,borne_sup)precision
let f(borne_inf)=f(borne_inf) && f(borne_sup)=f(borne_sup)
if f(borne_inf)*f(borne_sup)>0
then "impossible"
else borne_inf=mini && borne_sup=maxi
in
let milieu=(mini+maxi)/2
in
if f(mini)*f(milieu)>0
then dichotomie (mini;milieu)
else dichotomie (milieu;maxi)
je pense avoir un pb au niveau du typage et aussi au niveau de la redac' mais je ne coprends pas lesquels...si vous pouviez mexpliquer mes erreurs!
merci davance!
-
ghghgh
- Membre Relatif
- Messages: 305
- Enregistré le: 04 Aoû 2006, 16:20
-
par ghghgh » 17 Mar 2007, 01:03
hum... je ne comprends pas trop le problème
mais si tu veux une dichotomie qui fonctionne :
let search key =
let rec binary_search posL posR =
if posL = posR then
(key = values.(posL))
else begin
let posM = (posL + posR) / 2 in
if key <= values.(posM)
then binary_search posL posM
else binary_search (posM+1) posR
end in
binary_search 0 (pred nb_values)
j'espère que tu auras trouvé ton bonheur là-dedans :s
bah, sinon continue de chercher :p
bonne soirée
-
wouf
- Membre Relatif
- Messages: 203
- Enregistré le: 17 Fév 2007, 15:55
-
par wouf » 17 Mar 2007, 19:19
f (borne_inf, borne_sup)=(borne_inf+borne_sup)/2
mais je n'ai lu que le titre :ptdr:
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 21 invités