Author Topic: Sul calcolo degli autovalori e degli autovettori  (Read 12640 times)

0 Members and 1 Guest are viewing this topic.

Offline Enzo

  • Semi Esperto
  • **
  • Posts: 95
  • Karma: 18
  • dona e ti sarà donato
    • STRUCTURASoft
Sul calcolo degli autovalori e degli autovettori
« on: 14 March , 2010, 12:30:32 PM »
Salve a tutti

In matematica il calcolo degli autovalori e degli autovettori è posto nella seguente forma generale:

Ax = λx        (1)

con A matrice di ordine n;   
λ è (numero reale o complesso) detto autovalore; 
x è vettore non nullo detto autovettore associato all’autovalore  λ.

Utilizzando la matrice identità I si può scrivere il problema nella seguente forma:

(A – λI)x = 0.    (2)

Ovviamente si tralascia la soluzione banale x=0.
In rete si trovano molte functions e routines (in molti linguaggi di programmazione) che risolvono questo problema. Uno dei più efficienti e il metodo QR che lavora sulla matrice A.

E fino a qui siamo tutti felici.

In ingegneria nel calcolo delle strutture con una analisi modale è necessario il calcolo degli autovalori e autovettori ed il problema è posto nella seguente forma:

(K – λM)x = 0.             λ = ω2     (ω = frequenza)

K  matrice di rigidezza
M  matrice delle masse

Questa si può scrivere in maniera analoga alla (2):

(M-1K – λI)x = 0            ( M-1  è la matrice inversa di M )

Quindi il problema è riconducibile a trovare gli autovettori e autovalori di  A =M-1K .

E qui arriva il bello.

Per trovare la matrice  A devo invertire la matrice M. E questo è un problema serio sia in termini computazionali ma soprattutto di tempo.

Se la matrice M è di ordine n=10 oppure n=20 oppure n= 50 allora, ancora, siamo dentro tempi normali. Ma se M è di ordine n=200 oppure n=1000 come si fa?

Quando si assumono gli impalcati rigidi allora, per esempio per un palazzo di 50 piani è ancora tutto ok e posso, in tempi normali, invertire M.

Ma se non si assumono impalcati rigidi e si vogliono concentrare le masse per esempio ai nodi, avrò, per una struttura di 1000 nodi, una matrice M di ordine 1000.
Quindi invertire M in questo caso diventa una utopia!!!!!!

Come fanno i programmi di calcolo quando non si assumono gli impalcati rigidi?

Grazie della pazienza.

Renato

  • Guest
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #1 on: 14 March , 2010, 13:37:38 PM »
Nei primi anni 70 Bathe e Wilson ("Numerical methods in FEM" ed. Prentice Hall) elaborarono il metodo della Subspace Iteration che consentiva di valutare solo i primi modi utili sull'enorme numero totale. Poichè il loro lavoro era stato finanziato dal governo americano con l'obbligo della pubblicazione del codice di calcolo, essi lo pubblicarono ad es. nel volume sopra citato (in liguaggio fortran). La maggior parte dei programmi commerciali usa o usava tale algoritmo.
Purtroppo a tali importanti lavori non si fa (spesso) cenno nelle università (ritengo per ividia e pochezza dei docenti).
Negli ultimi anni è stato elaborato un altro metodo anch'esso valido per girgantesche matrici sparse (Lancroz).
 

Offline ferrarialberto

  • Semi Esperto
  • **
  • Posts: 137
  • Karma: 26
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #2 on: 14 March , 2010, 14:53:25 PM »
Qualche considerazione, visto che è un problema che ho analizzato recentemente.
1) la matrice delle masse in genere è diagonale (con lumped mass) ma con parecchi termini nulli in un codice ad EF: se tutti i termini fossero diversi da zero invertirla è una cosa semplice (se diagonale) perché il determinante è pari al prodotto degli elementi sulla diagonale stessa e la matrice inversa è composta da temini che singolarmente sono gli inversi della matrice di partenza. Ma questo è un approccio sbagliato in un codice ad EF;
2) il problema deve essere ricondotto alla forma standard dopo aver decomposto la matrice di rigidezza con l'algotirmo di Cholesky, scrivendo K=Lk*LkT dove Lk ed LkT sono una la trasposta dell'altra;
3) dopo aver seguito questa strada puoi agevolmente utilizzare Jacobi per il calcolo degli autovalori;
4) alla fine devi calcolare gli autovettori e qui le cose si complicano, anche se potrebbe non sembrare: i problemi sono fondamentalmente le radici multiple e l'ortonormalità.

Ciao e... buon divertimento.
ing. FERRARI Alberto - www.ferrarialberto.it

Offline Enzo

  • Semi Esperto
  • **
  • Posts: 95
  • Karma: 18
  • dona e ti sarà donato
    • STRUCTURASoft
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #3 on: 14 March , 2010, 23:50:13 PM »
Ciao

al punto 1) dici:
 " se tutti i termini fossero diversi da zero invertirla è una cosa semplice (se diagonale)... "

E' facile se è appunto diagonale!  E lo è!
Infatti le masse sono concentrate. Quali sono i termini nulli sulla diagonale?
Ma perchè dici che questo approccio è sbagliato? A me sembra una cosa fantastica...scusa la battuta! Ogni volta ci passavo su e invece mi sembra l'uovo di colombo!

al punto 2) dicendo al punto 1 che è un approccio sbagliato parli di Cholesky e compagnia bella.
Ma perchè?

al punto 3) devo ancora pensarci. Sapevo che li c'era un altro casino.
Perchè le radici multiple ostacolano la strada? e l'ortonormalità?
Ti rubo qualche informazione.  ^_^

Grazie (e complimenti come sempre).

zax2010

  • Guest
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #4 on: 15 March , 2010, 14:01:13 PM »
A dire il vero, dai miei ricordi di dinamica la matrice dinamica era espressa come M*K-1 e non come tu indichi M-1*K.
Per cui l'onere della inversione è sulla matrice K e non su M.
Per K c'è la certezza che essa sia simmetrica ed essenzialmente positiva (ovvero con termini non nulli sulla diagonale principale).
Pertanto in luogo del "classico" metodo della sostituzione (Gauss-Siedel) si può procedere con il metodo di Cholesky, meno oneroso computazionalmente, che "pretende" una diagonale fatta di termini positivi visto che su questi ultimi opera con le radici quadrate.
Non so se equivalente a quello proposto da Renato, ma ricordo sempre un metodo per l'estrazione degli autovalori detto di Stodola, e che permette di ricavare l'autovalore n dall'n-1 in modo iterativo.

Offline ferrarialberto

  • Semi Esperto
  • **
  • Posts: 137
  • Karma: 26
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #5 on: 15 March , 2010, 14:20:11 PM »
Ciao

al punto 1) dici:
 " se tutti i termini fossero diversi da zero invertirla è una cosa semplice (se diagonale)... "

E' facile se è appunto diagonale!  E lo è!
Infatti le masse sono concentrate. Quali sono i termini nulli sulla diagonale?
Ma perchè dici che questo approccio è sbagliato? A me sembra una cosa fantastica...scusa la battuta! Ogni volta ci passavo su e invece mi sembra l'uovo di colombo!

al punto 2) dicendo al punto 1 che è un approccio sbagliato parli di Cholesky e compagnia bella.
Ma perchè?

al punto 3) devo ancora pensarci. Sapevo che li c'era un altro casino.
Perchè le radici multiple ostacolano la strada? e l'ortonormalità?
Ti rubo qualche informazione.  ^_^

Grazie (e complimenti come sempre).

Ciao Vincenzo,
nella matrice delle masse in genere almeno i 3 termini rotazionali sono nulli, quindi almeno la metà dei termini. Poi si aggiungono tutti i nodi (eventuali) in cui non sono applicate masse (diciamo che almeno il peso proprio dà una mano in questo senso). Se vuoi una matrice della masse con tutti e soli i termini non nulli allora devi riscrivere la matrice delle rigidezze (è una delle tante strade, non la più semplice a mio avviso). In generale se hai già la matrice delle rigidezze dall'analisi lineare è meglio tenersela e seguire la strada che indico io.
Poi occhio. Il prodotto di una matrice diagonale (inversa che sia) per una matrice simmetrica dà una matrice NON simmetrica; questo deve far riflettere in funzione dell'algoritmo che si vuol utilizzare per l'estrazione degli autovalori. Jacobi è un ottimo metodo, converge in una decina di iterazioni, ma non converge su matrici non simmetriche (la condizione necessaria mi pare che sia sul raggio spettrale).
Cholesky è una strada eccezionale per ottenere la matrice simmetrica di cui sopra.
Le radici multiple danno qualche noia nella definizione dell'algoritmo per il calcolo degli autovettori.

Ciao.
ing. FERRARI Alberto - www.ferrarialberto.it

Offline ferrarialberto

  • Semi Esperto
  • **
  • Posts: 137
  • Karma: 26
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #6 on: 15 March , 2010, 14:22:16 PM »
A dire il vero, dai miei ricordi di dinamica la matrice dinamica era espressa come M*K-1 e non come tu indichi M-1*K.
Per cui l'onere della inversione è sulla matrice K e non su M.
Per K c'è la certezza che essa sia simmetrica ed essenzialmente positiva (ovvero con termini non nulli sulla diagonale principale).
Pertanto in luogo del "classico" metodo della sostituzione (Gauss-Siedel) si può procedere con il metodo di Cholesky, meno oneroso computazionalmente, che "pretende" una diagonale fatta di termini positivi visto che su questi ultimi opera con le radici quadrate.
Non so se equivalente a quello proposto da Renato, ma ricordo sempre un metodo per l'estrazione degli autovalori detto di Stodola, e che permette di ricavare l'autovalore n dall'n-1 in modo iterativo.

Ciao Zax
   in effetti la matrice delle rigidezze è almeno sempre invertibile, a differenza di quella delle masse.

Ciao.
ing. FERRARI Alberto - www.ferrarialberto.it

Offline Enzo

  • Semi Esperto
  • **
  • Posts: 95
  • Karma: 18
  • dona e ti sarà donato
    • STRUCTURASoft
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #7 on: 16 March , 2010, 13:02:23 PM »
Ciao a tutti

zax ....il problema (almeno da quanto ne so) è sulla matrice M.

host.uniroma3.it/dipartimenti/dis/didattica/Strutture/.../Dinamica2.pdf

a pagina 50 (non è esaustivo ma almeno è chiaro)


La matrice delle masse (concentrate), correggetemi se sbaglio,  ha sulla diagonale le masse (gravitazionali) di tutti gli elementi che convergono al nodo.
Quindi per una trave singola (sez. costante) di massa m con 2 nodi, avrà una matrice 12 x12 dove (sulla diagonale) i primi 3 termini valgono m/2; i seguenti 3 nodi valgono zero; poi di nuovo 3 termini che valgono m/2 e gli ultimi 3 valgono ancora zero.
Sbaglio?

Allo scopo di avere tutti gli elementi diversi da zero sulla diagonale di M
l'ottimo Alberto indica (ma sconsiglia), tra le altre strade possibili, quella di riscrivere la matrice K.
A me non sembra così complicato riscrivere la matrice K.

In buona sostanza dovrei eliminare le righe e le colonne afferenti le rigidezze alle rotazioni per i due nodi ricavando dunque una matrice 6x6 che implementa solo le rigidezze agli spostamenti x,y,z.

L'unico metodo, per gli autovalori e autovettori, che riesco ad implementare attualmente è il metodo QR che lavora anche su matrici non simmetriche, quali sono date dal prodotto M-1K.

Perchè sconsigli la riscrittura di K?

Offline ferrarialberto

  • Semi Esperto
  • **
  • Posts: 137
  • Karma: 26
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #8 on: 16 March , 2010, 16:58:12 PM »
Ciao Vincenzo
   puoi seguire la strada che indichi solo se sono nulli SOLO i termini rotazionali della matrice della masse; in questo caso puoi modificare rapidamente la matrice di rigidezza eseguendo un prodotto e una somma su blocchi. Trovi una descrizione puntuale ad esempio nel libro di Rugarli. Occhio che se pensi di eliminare brutalmente i termini rotazionali dalla matrice delle rigidezza sbagli.

Ciao.
ing. FERRARI Alberto - www.ferrarialberto.it

Renato

  • Guest
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #9 on: 16 March , 2010, 17:23:18 PM »
Ciao Vincenzo
   puoi seguire la strada che indichi solo se sono nulli SOLO i termini rotazionali della matrice della masse; in questo caso puoi modificare rapidamente la matrice di rigidezza eseguendo un prodotto e una somma su blocchi. Trovi una descrizione puntuale ad esempio nel libro di Rugarli. Occhio che se pensi di eliminare brutalmente i termini rotazionali dalla matrice delle rigidezza sbagli.

Sono d'accordo con te. E' la tecnica della condensazione statica che si usava nei vecchi programmi etabs per telai pseudotridimensionali (=telai piani assemblati in corrispondnza dei piani rigidi).
Quello che non trovo in alcun libro è la risoluzione del problema degli autovalori ed autovettori in campo complesso: necessari ad es. per la soluzione dei problemi sismici in cui siano presenti impedenze dinamiche [in funzione delle frequenze], come nel caso dell'interazione pali-sovrastruttura. Al riguardo in letteratura purtroppo non ho mai trovato nulla (anche se nelle NTC se ne parla) se non il solito cenno discorsivo.
Saluti

zax2010

  • Guest
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #10 on: 16 March , 2010, 18:10:53 PM »
@Renato
Mi pare che nel documento riportato da Enzo, invece ci sia un intero capitolo relativo proprio agli autovalori in campo complesso.

@Enzo
Nel documento mi dici che a pagina 50 (è la 53 del documento pdf) trovo la formula da te scritta, ma ti comunico anche che a pagina 46 (la 49 del documento pdf) trovi anche quella che ti ho scritto io. Sono ambedue corrette?

Offline Enzo

  • Semi Esperto
  • **
  • Posts: 95
  • Karma: 18
  • dona e ti sarà donato
    • STRUCTURASoft
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #11 on: 17 March , 2010, 21:08:44 PM »
Zax ho notato ( verficando per entrambe le matrici) che gli autovalori di M-1K sono i reciproci di k-1M.

Qui qualcosa mi sfugge. Ho bisogno di un ripasso sui libri....
Per altro sono sicuro (dato che l'ho verificato) che gli autovalori di pag. 50 del pdf sono corretti. Ovviamente dato che nel mio primo post ho fatto vedere (come si può trovare uvunque sui libri e in rete) che bisogna trovare gli autovalori di M-1K. Se si fossero calcolati con K-1M sarebbero venuti fouri i reciproci in ordine inverso il che porterebbe a risultati sbagliati se non si esegue il passaggio 1/x. Perchè?

Alberto qual'è questo libro di Rugarli?
Per caso è "Analisi Modale Ragionata"?

In effetti, si, pensavo di eliminare brutalmente (righe e colonne delle rotazioni)  dalla K (locale), poi proiettrala sul riferimento globale e li poi assemblarla con le matrici K (brutalizzate e proiettate) degli altri elementi.

Perchè sbaglio nel fare questa cosa? Ho cercato in rete ma non ho trovato nulla?
Avete qualche link?

Offline ferrarialberto

  • Semi Esperto
  • **
  • Posts: 137
  • Karma: 26
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #12 on: 18 March , 2010, 09:44:12 AM »
Zax ho notato ( verficando per entrambe le matrici) che gli autovalori di M-1K sono i reciproci di k-1M.

Mi sembra ovvio. Quando ho 5 min di tempo ti spiego il perché ma se ci ragioni ci arrivi da solo.

Qui qualcosa mi sfugge. Ho bisogno di un ripasso sui libri....
Per altro sono sicuro (dato che l'ho verificato) che gli autovalori di pag. 50 del pdf sono corretti. Ovviamente dato che nel mio primo post ho fatto vedere (come si può trovare uvunque sui libri e in rete) che bisogna trovare gli autovalori di M-1K. Se si fossero calcolati con K-1M sarebbero venuti fouri i reciproci in ordine inverso il che porterebbe a risultati sbagliati se non si esegue il passaggio 1/x. Perchè?

Alberto qual'è questo libro di Rugarli?
Per caso è "Analisi Modale Ragionata"?

Si.

In effetti, si, pensavo di eliminare brutalmente (righe e colonne delle rotazioni)  dalla K (locale), poi proiettrala sul riferimento globale e li poi assemblarla con le matrici K (brutalizzate e proiettate) degli altri elementi.

Perchè sbaglio nel fare questa cosa? Ho cercato in rete ma non ho trovato nulla?
Avete qualche link?


Come accennato anche da Normativo è il noto problema della condensazione statica. Se elimini brutalmente le righe coi termini rotazionali alteri radicalmente da rigidezza della struttura e con essa i relativi modi di vibrare.

Ciao.
ing. FERRARI Alberto - www.ferrarialberto.it

Offline ferrarialberto

  • Semi Esperto
  • **
  • Posts: 137
  • Karma: 26
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #13 on: 18 March , 2010, 10:06:41 AM »
Zax ho notato ( verficando per entrambe le matrici) che gli autovalori di M-1K sono i reciproci di k-1M.

Dai un occhio al mio appunto. Ciao.
http://www.box.net/shared/3xgky3bmeu
ing. FERRARI Alberto - www.ferrarialberto.it

zax2010

  • Guest
Re: Sul calcolo degli autovalori e degli autovettori
« Reply #14 on: 18 March , 2010, 10:25:55 AM »
Lontani ricordi.
Con il primo approccio forse in un caso i primi autovalori sono quelli a frequenza più bassa, ed a seguire quelli a frequenza via via più alta. Viceversa con il secondo approccio trovi per primi gli autovalori a frequenza più alta e via via quelli a frequenza più bassa.
I lontani ricordi sono che i civili, interessati alle basse frequenze, operano in un modo, gli elettronici, viceversa interessati alle alte frequenze, operano nell'altro.
Del fattore 1/x non ho ricordi.

Ma comunque mi scuso, perchè con questa storia di ciò che ricordo o non ricordo, sto dirottando il discorso lì dove non interessa andare.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24