KM07_ex1_2.mw

EXERCICE 1

> restart:

> T:=array(symmetric,1..3,1..3);

T := array(symmetric, 1 .. 3, 1 .. 3, [])

> for i from 1 to 3 do T[i,i]:=i; od;

T[1, 1] := 1

T[2, 2] := 2

T[3, 3] := 3

> T[1,2]:=a;T[1,3]:=b;T[2,3]:=c;

T[1, 2] := a

T[1, 3] := b

T[2, 3] := c

> print(T);

matrix([[1, a, b], [a, 2, c], [b, c, 3]])

>

>

>

EXERICE 2

> restart:

> R:=array(1..4,1..4);S:=array(1..4,1..4);T:=array(1..4,1..4);

R := array(1 .. 4, 1 .. 4, [])

S := array(1 .. 4, 1 .. 4, [])

T := array(1 .. 4, 1 .. 4, [])

> for i from 1 to 4 do
for j from 1 to 4 do

  R[i,j]:=is((j-i)/3,integer);

od; od;

> R=eval(R);

R = matrix([[true, false, false, true], [false, true, false, false], [false, false, true, false], [true, false, false, true]])

> for i from 1 to 4 do
for j from 1 to 4 do

  S[i,j]:=is(i<j);

od; od;

> S=eval(S);

S = matrix([[false, true, true, true], [false, false, true, true], [false, false, false, true], [false, false, false, false]])

> for i from 1 to 4 do
for j from 1 to 4 do

  T[i,j]:=is(i=j*j or j=i*i);

od; od;

> T=eval(T);

T = matrix([[true, false, false, false], [false, false, false, true], [false, false, false, false], [false, true, false, false]])

Pour savoir si la relation associée au tableau U n'est pas reflexive il faut et il suffit de trouver un élément false sur la diagonale

> reflexive:=proc(U)
local i,j,r;

r:=true;

for i from 1 to 4 do

if (U[i,i]=false) then r:=false; fi;

od;

r;

end:

 

> R_reflexive=reflexive(R); R est réflexive

R_reflexive = true

> S_reflexive=reflexive(S); S n'est pas réflexive

S_reflexive = false

> T_reflexive=reflexive(T); T n'est pas réflexive

T_reflexive = false

>

La relation associée au tableau U n'est pas antisymétrque si et seulement si un couple d'éléments symétriques par rapport à la diagonale (en dehors de celle-ci) sont simultanément true

> antisymetrique:=proc(U)
local i,j,r;

r:=true;

for i from 1 to 3 do

for j from i+1 to 4 do
on ne parcourt que les cases au dessus de la diagonale
 if U[i,j] and U[j,i] then r:=false; fi;

od; od; r;

end:

>

>

> R_antisymetrique=antisymetrique(R); R n'est pas antisymétrique

R_antisymetrique = false

> S_antisymetrique=antisymetrique(S); S est antisymétrique

S_antisymetrique = true

> T_antisymetrique=antisymetrique(T); T n'est pas antisymétrique

T_antisymetrique = false

>

La relation associée au tableau U n'est pas transitive si et seulement si un triplet  U[i,j] U[j,k] et U[i,k] d'éléments ne vérifie pas l'implication de transitivité U[i,j] et U[j,k] sont simultanément true et pourtant U[i,k] false

> transitive:=proc(U)
local i,j,k,r;

r:=true;

for i from 1 to 4 do

for j from 1 to 4 do

 for k from 1 to 4 do

  if U[i,j] and U[j,k] and U[i,k]=false then r:=false; fi;

od;od;od;

r;

end:

> R_transitive=transitive(R); R est transitive

R_transitive = true

> S_transitive=transitive(S); S est transitive

S_transitive = true

> T_transitive=transitive(T); T n'est pas transitive

T_transitive = false

>