INFOPedia : MACAlgDiagPoliForte

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

Diagonalizzazione forte di una matrice a valori polinomiali



L'algoritmo FFPoli deternina la posizione del primo elemento della lista di polinomi L che non è multiplo delprecedente.
INPUT: la lista L.
OUTPUT: l'indice del primo elemento della lista L che non è multiplo del precedente.

FFPoli[L_,x_]:=
  For[t=2,t<=Length[L],t++,
    If[MultPoliTest[{L[[t-1]],L[[t]]},x]===False,Return[t]]]



L'algoritmo GGPoli deternina la posizione del primo elemento della lista di polinomi L che non è monico.
INPUT: la lista L.
OUTPUT: l'indice del primo elemento della lista L che non è monico oppure 0 se tutti i polinomi della lista sono monici.


GGPoli[L_,x_]:=
  Block[{t},
    For[t=1,t<=Length[L],t++,If[L[[t]]=!=0&&CC[L[[t]],x]=!=1,Return[t]]];
                Return[0]]


L'algoritmo DiagPoliForte determina la matrice in forma diagonale forte equivalente alla matrice ad elementi polinomiali A.
INPUT: la matrice A.
OUTPUT: la matrice fortemente diagonale equivalente a A. \

DiagPoliForte[A_,x_]:=Block[{Mat=Expand[A],k,L},
    m=Length[A];n=Length[A[[1]]];mi=Min[m,n];
    While[!DiagPoliForteTest[Mat,x],
      Mat=Expand[DiagPoli[Mat,x]];
      L=Table[Mat[[i,i]],{i,1,mi}];
      If[!MultPoliTest[L,x],
        k = FFPoli[L,x];
        Mat[[k-1]]=Mat[[k-1]]+Mat[[k]],
        k=GGPoli[L,x];
        If[k!=0 && k<n,
          Mat[[All,k+1]]=Mat[[All,k+1]]+Mat[[All,k]],
          If[k!=0 && k<m,
            Mat[[k+1]]=Mat[[k+1]]+Mat[[k]] ]]]];
    Mat]




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.1372 secondi