Test di diagonalità forte di una matrice a valori interi
L'algoritmo MultIntTest stabilisce se ciascun intero della lista L,
a partire dal secondo, è multiplo del precedente.
INPUT: la lista di interi L;
OUTPUT: True o False.
MultIntTest[L_]:=
Apply[And,
Table[Or[L[[i-1]]==0&&L[[i]]==0,
L[[i-1]]!=0&& Mod[L[[i]],L[[i-1]]]!=0], {i,2,
Length[L]}]]
Esempio
lista={1,2,-4,0,5,10}
{1,2,-4,0,5,10}
MultIntTest[lista]
False
L'algoritmo F deternina la posizione del primo elemento della lista di numeri interi L che non è multiplo del precedente.
INPUT: la lista L.
OUTPUT: l'indice del primo elemento della lista L che non è multiplo del precedente.
F[L_]:=For[t=2,t<=Length[L],t++,
If[!MultIntTest[{L[[t-1]],L[[t]]}],Return[t]]]
Esempio
F[lista]
5
L'algoritmo G deternina la posizione del primo elemento negativo della lista di numeri interi L.
INPUT: la lista L.
OUTPUT: l'indice del primo elemento negativo della lista L.
G[L_]:=Block[{t}, For[t=1,t<=Length[L],t++,If[L[[t]]<0,Return[t]]];
Return[0]]
Esempio
G[lista]
3
L'algoritmo DiagIntForteTest stabilisce se la matrice ad elementi interi A è in forma diagonale forte.
INPUT: la matrice A.
OUTPUT: True o False.
DiagIntForteTest[A_]:=Block[{},
m=Length[A];n=Length[A[[1]]];mi=Min[m,n];
L=Table[A[[i,i]],{i,1,mi}];
If[m!=n,
DiagTest[A]&&MultIntTest[L]&&Apply[And,Table[L[[i]]>=0,{i,1,mi}]],
DiagTest[A]&&MultIntTest[L]&&Apply[And,Table[L[[i]]>=0,{i,1,mi-1}]]]]
Esempio
T={{3,-1,0,2,-3},{3,1,1,0,0},{2,0,0,0,5}}
{{3,-1,0,2,-3},{3,1,1,0,0},{2,0,0,0,5}}
DiagInt[T]
{{1,0,0,0,0},{0,1,0,0,0},{0,0,1,0,0}}
DiagIntForteTest[%]
True
Torna all'elenco dei capitoli
Non ci sono commenti in questa pagina. [Scrivi commento]