thierrygrosse
Inscrit le: 26 Fév 2005 Messages: 6
|
Posté le: 26 Fév 2005 14:37 Sujet du message: Débutant ayant besoin d'aide |
|
|
Voilà j'ai un projet à rediger en Maple, je suis en licence de maths (j'ai 38 ans) et je viens tout juste de découvrir ce qu'est Maple.
Mon programme principal (program) prend une matrice 2x3 et si cette matrice possède une certaine propriété alors cette propriété est l'élément d'une suite qui doit avoir 300 éléments.
En fait ces éléments sont les termes du développement en fraction continue de racine cubique de 5.
Le programme ci-dessous ne fonctionne pas car il continu en boucle et ne s'arrête pas. J'ai beaucoup cherché et ne trouve de solution, je pense que le problème vient de la condition : while nops(l)<=300.
J'ai d'ailleurs essayé avec nops(l)<=1 et même résultat.
> restart;
> with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
> propriete:=proc(H)
> local i,r,q;
> for i to 3 do
> q[i]:=iquo(H[1,i],H[2,i]);
> r[i]:=irem(H[1,i],H[2,i]);
> if (q[1]<>q[i]) or (r[i]=0) then RETURN(0);fi;od;
> q[1];
> end;
propriete := proc(H)
local i, r, q;
for i to 3 do
q[i] := iquo(H[1, i], H[2, i]);
r[i] := irem(H[1, i], H[2, i]);
if q[1] <> q[i] or r[i] = 0 then RETURN(0) end if
end do;
q[1]
end proc
> program:=proc(A)
> local a,M,J,l;
> J:=A;
> M:=matrix([[1,1,1],[5,1,1],[5,5,1]]);
> l:=[];
> while (nops(l)<=10) do
> a:=propriete(J);
> if a=0 then J:=(J&*M) else l:=[l,a] ; J:=(matrix([[0,1],[1,a]])&*J) fi;
> od;
> end;
program := proc(A)
local a, M, J, l;
J := A;
M := matrix([[1, 1, 1], [5, 1, 1], [5, 5, 1]]);
l := [];
while eval(nops(l)) <= 10 do
a := propriete(J);
if a = 0 then J := `&*`(J, M)
else
l := [l, a];
J := `&*`(matrix([[0, 1], [1, a]]), J)
end if
end do
end proc
Merci d'avance.
Thierry |
|