-
25/03/2007 - 16h43 verbatim74 Algorithme Maple
Bonjour je ne sais pas si vous vous y connaissez en Mapple mais je recherche a ecrire un algorithme.Pourriez vous m'aider ?
Voila l'ennoncé :
Soit 2 réels a et b tels que 0<b<a
Soit (Un) et (Vn) les suites definies par U(0)=a et V(0)=b et : Pour tout n entier,U(n+1)=(Un+Vn)/2 et V(n+1)=Racine(UnVn).
(Indication les suites sont adjacentes de limite commune M donc on a pour tout n , V(n)<M<U(n) )
Question : Ecrire un algorithme qui prend en entrées a,b et un réel E>0 et qui retourne en encadrement de M d'amplitude <egal à E et une appromximation de M à E/2 près.
Merci de m'aider, c'est très interessant... -
25/03/2007 - 16h54 cedbont
Re : Algorithme Maple
Bonjour,
teste ça :
z:=proc(a,b,E)
local u,v,w,x;
u:=a;
v:=b;
whileE<=evalf(abs(u - v)) do
w:=1/2*u+1/2*v;
x:=sqrt(u*v);
u:=w;
v:=x
end do;
print(u,v,1/2*u+1/2*v);
end proc
-
25/03/2007 - 17h03 verbatim74
Re : Algorithme Maple
Il me donne erreur de syntaxe et me renvoie pas l'encadrement...Peut etre faudrait il utiliser les boucles "pour" et "tant que" nan ?
-
25/03/2007 - 17h08 cedbont
Re : Algorithme Maple
En fait, j'ai fait un copier coller du programme rerédigé par Maple, mais qui marche.
Peut-être que tu ne dois pas écrire la ligne local...
J'ai utilisé un tant que (while...), mais il fallait écrire "while E <= evalf..." et non "whileE <= evalf..."
Mets aussi un " ; " à la fin des lignes v:=x et end proc.
Sinon dis-nous le message d'erreur renvoyé par Maple.
-
25/03/2007 - 17h13 verbatim74
Re : Algorithme Maple
Tu pourrai me refaire un copier collé du message final stp que je le reteste ?
-
25/03/2007 - 17h16 cedbont
Re : Algorithme Maple
Voici le copier coller de ce que j'ai tapé :
> z:=proc(a,b,E);
> u:=a;
> v:=b;
> while E <= evalf(abs(u-v)) do
> w:=(u+v)/2;
> x:=sqrt(u*v);
> u:=w;
> v:=x;
> od;
> print(u,v,(u+v)/2);
> end;
-
25/03/2007 - 17h17 cedbont
Re : Algorithme Maple
Voici le copier coller de ce que me dit Maple :
Warning, `u` is implicitly declared local to procedure `z`
Warning, `v` is implicitly declared local to procedure `z`
Warning, `w` is implicitly declared local to procedure `z`
Warning, `x` is implicitly declared local to procedure `z`
z:=proc(a,b,E) localu,v,w,x; u:=a; v:=b; whileE<=evalf(abs(u - v))do w:=1/2*u+1/2*v; x:=sqrt(u*v); u:=w; v:=x end do; print(u,v,1/2*u+1/2*v) end proc
-
25/03/2007 - 17h19 cedbont
Re : Algorithme Maple
Et un exemple de résultat :
> z(57,108,0.5);
165/4+9*sqrt(19) , 3*sqrt(165)*19^(1/4) , 165/8+9/2*sqrt(19)+3/2*sqrt(165)*19^(1/4)
-
25/03/2007 - 17h19 verbatim74
Re : Algorithme Maple
Et il n'y a pas un moyen de corriger la syntaxe ?
Tu pourrais essayé car je dois faire un algorithme pour le boulot mais je n'ai pas acces a mapple.Je ne l'utilise qu'en cours et c'estassez dur d'y accéder.Merci de m'aider...
-
25/03/2007 - 17h23 cedbont
Re : Algorithme Maple
Qu'as-tu tapé ?
Ecris-moi le message d'erreur donné par Maple, en entier.
-
25/03/2007 - 17h26 verbatim74
Re : Algorithme Maple
J'ai pas mapple c'est un copain qui me la taper car lui il l'a mais on arrive pas a trouvé l'erreur c'est pour ca que je post un message.Aide nous stp
-
25/03/2007 - 17h27 verbatim74
Re : Algorithme Maple
On avait taper :
amplitude:=proc(a,b,U,V)
local n,k;
n:=0;
U[0]=a;
V[0]=b;
assume e>0;
while abs(V[n]-U[n])>e do
for k from 0 to n do
V[n+1]=sqrt(U[n].V[n]);
U[n+1]=U[n]+V[n]/2;
od;
od;
V[n];
end;
-
25/03/2007 - 17h28 cedbont
Re : Algorithme Maple
En fait, je vois ici une erreur :
U et V ne doivent pas être dans le proc() et e par contre doit l'être.
Dernière modification par cedbont ; 25/03/2007 à 17h32.
-
25/03/2007 - 17h33 verbatim74
Re : Algorithme Maple
Tu peux ressayer pour nous ?Et nous donner quelque chose qui vaille bien marcher ?
-
25/03/2007 - 17h35 cedbont
Re : Algorithme Maple
Aussi, tu n'as pas besoin de ton Pour parce que Maple ne connaît pas de lui-même la valeur de n.
Tu n'as pas non plus besoin de assume ... car tu as (normalement) déjà précisé e.
| | |