Creare matrice a banda simmetrica e definita positiva

Lory314
Ciao a tutti.

Avrei bisogno di scrivere un programma che crei una matrice simmetrica, definita positiva, a banda (ossia che abbia elementi solo sulla diagonale e su un certo numero di sotto e sopradiagonali), dando in input la dimensione $N$ della matrice e il numero di sopra e sotto diagonale $KD$
Il linguaggio è indifferente: sono più interessato all'algoritmo in se. Per scrivere il programma penso di riuscirci da solo.
E' da un pò che ci provo ma senza risultati. Vi descrivo alcune mie idee ma che purtroppo non funzionano:

1)
- Creare una matrice random $A$ simmetrica
- $A=A*A'$ (A' è la trasposta di A) in modo che la matrice sia definita positiva
- Modificare $A$ in modo da creare le bande

Problema: creare le bande fa perdere la definita positività

2)
- Creare una matrice random $A$ simmetrica
- Modificare A in modo da creare le bande
- $A=A*A'$ in modo che la matrice sia definita positiva

Problema: la matrice in generale non risulta a banda

Idee? Proposte?

Grazie

Risposte
elvis3
Non ho capito molto bene, nel senso che mi pare che al problema manchino ulteriori specifiche. In ogni caso, sperando che ti dia qualche idea, ti dico questo: considera la matrice \(A\) simmetrica e a banda (di ampiezza \(k\)) che ha per diagonale \([1,\ldots,n]\) e ogni altro elemento di \(A\) fuori dalla diagonale e dentro la banda è \(\varepsilon\). Per \(\varepsilon\) piccolo (ad esempio \(\varepsilon < 1/(2k)\)), la matrice \(A\) è definita positiva, salvo aver fatto errori.

EDIT: \(\varepsilon <1/(4k)\)

Lory314
"elvis":
Non ho capito molto bene, nel senso che mi pare che al problema manchino ulteriori specifiche.
[\quote]

Cosa pensi che manchi?

[quote="elvis"]
In ogni caso, sperando che ti dia qualche idea, ti dico questo: considera la matrice \(A\) simmetrica e a banda (di ampiezza \(k\)) che ha per diagonale \([1,\ldots,n]\) e ogni altro elemento di \(A\) fuori dalla diagonale e dentro la banda è \(\varepsilon\). Per \(\varepsilon\) piccolo (ad esempio \(\varepsilon < 1/(2k)\)), la matrice \(A\) è definita positiva, salvo aver fatto errori.
[/quote]

In effetti penso che tu posso aver ragione. Se non ho capito male stai sostanzialmente applicando questa proprietà:
(tratta da Wikipedia)
Se A è una matrice simmetrica a diagonale dominante con elementi sulla diagonale tutti positivi, allora A è anche definita positiva.

Io pensavo che questa proprietà valesse solo per matrici tridiagonali (quindi solo un sottocaso di quelle a banda) perchè l'avevo sempre studiata così. Leggendo, e ragionando, un pò meglio rispetto alle mie prime ricerche in effetti vale per generiche matrici a banda.
Proverò ad implementare e vedere cosa esce. Per ora grazie mille!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.