INFOPedia : MACAlgDiagIntForteTest

HomePage :: Categorie :: Indice :: Ultime modifiche :: Ultimi commenti :: Login/Registrazione

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]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.1
La pagina è stata generata in 0.0774 secondi