Page d'accueil
Travaux dirigés
<< TD précédent
TD suivant >>
TD 8.1:
Corrigé TD 8.1
Ecrire une procédure
pcd(L::list)
retournant à partir d'une liste donnée
L
la liste obtenue par
permutation circulaire vers la droite des éléments de
L
.
Exemple:
>
pcd([a,b,c,d,e,f,g]);
TD 8.2:
Corrigé TD 8.2
Ecrire une procédure
circulante_droite(n::posint)
retournant à partir de l'entier
n>
0
une matrice carrée d'ordre
n
telle que
- sa première ligne est constituée par les entiers de 1 à
n
.
- pour
k>
1 , sa k-ième ligne est déduite de la ligne précédente par permutation
circulaire vers la droite de ses éléments.
Exemple:
>
circulante_droite(5);
TD 8.3:
Test d'égalité de 2 matrices:
Corrigé TD 8.3
Deux matrices
M
et
N
sont égales si et seulement si elles ont même nombre de lignes, même
nombre de colonnes, et les mêmes coefficients .
Sans avoir recours à la fonction préexistante equal de Maple, écrire une procédure
egal(M: : matrix , N: : matrix)
retournant la valeur booléenne
true
si
M=N
et
false
sinon.
Corrigé du Travail dirigé 8:
TD 8.1:
Énoncé TD 8.1
>
pcd:=proc(L::list)
local M,k;
if nops(L)>=1 then M:=L[nops(L)],seq(L[k],k=1..nops(L)-1)
else M:=NULL
end if;
[M];
end proc;
>
pcd([a,b,c,d,e,f,g]);
TD 8.2:
Énoncé TD 8.2
>
with(linalg);
>
circulante_droite:=proc(n::posint)
local L,M,k;
L:=[seq(k,k=1..n)];M:=L;
for k from 2 to n do
L:=pcd(L);
M:=M,L;
end do;
matrix([M]);
end proc;
>
circulante_droite(7);
T.D 8.3:
Énoncé TD 8.3
>
egal:=proc(M::matrix,N::matrix)
local p,q;
if rowdim(M)=rowdim(N) and coldim(M)=coldim(N) then
for p to rowdim(M) do
for q to coldim(M) do
if M[p,q]<>N[p,q] then RETURN(false) end if
end do
end do;
RETURN(true)
else
RETURN(false)
end if;
end proc;
>
with(linalg):
>
M:=matrix([[1,1,3],[1,0,-1],[2,0,1]]);
>
N:=matrix([[1,1,3],[1,0,-1],[2,0,1],[0,0,1]]);
>
P:=matrix([[sign(2),1,3],[1,0,-1],[sqrt(4),0,1]]);
>
egal(M,N);
>
egal(M,P);
|