Dalla matrice di rotazione trovare l'asse di rotazione

Bucky1

NOTA andate a leggere diretamente il mio ultimo messaggio, in fondo



-----------------------------------------------------------------------------------



idee su cume si possa fare?

autovettori? spazio nullo?

Risposte
franced
"Bucky":
idee su cume si possa fare?

autovettori? spazio nullo?


Cerca i punti fissi:
l'asse di rotazione è il luogo dei punti fissi.

Bucky1
cercavo una risposta piu' operativa... ho proprio le coordinate dei punti da cui estraggo la matrice.

pensavo: il significato fisico degli autovalori non e' proprio questo?

se n e' l'asse allora

R*n=n perche' non varia con la rotazione

allora

R*n=I*n

e quindi

(R-I)n=0.

ma questa non e' l'equazione caratteristica?
allora l'asse e' lautovettore della matrice!
sto dicendo cazzate?

ViciousGoblin
"Bucky":
cercavo una risposta piu' operativa... ho proprio le coordinate dei punti da cui estraggo la matrice.

pensavo: il significato fisico degli autovalori non e' proprio questo?

se n e' l'asse allora

R*n=n perche' non varia con la rotazione

allora

R*n=I*n

e quindi

(R-I)n=0.

ma questa non e' l'equazione caratteristica?
allora l'asse e' lautovettore della matrice!
sto dicendo cazzate?


Non degli autovalori, degli autovettori. Come dice franced devi trovare i punti fissi cioe' gli autovettori di autovalore uno (che dovrebbero formare una retta)

Bucky1
e come si trovano? scusate l'ignoranza, io credevo che da una matrice si potesse estrarre un solo set di autovalori, e che questi andassero a costituire un autovettore

in pratica mi chiedete di trovare un autoveRSore?
per farlo basta fare il versore dell'autovalore?

ViciousGoblin
"Bucky":
e come si trovano? scusate l'ignoranza, io credevo che da una matrice si potesse estrarre un solo set di autovalori, e che questi andassero a costituire un autovettore

in pratica mi chiedete di trovare un autoveRSore?
per farlo basta fare il versore dell'autovalore?

devi studiare il sistema lineare $A X=X$ dove $X=((x),(y),(z))$, che e' un sistema lineare omogeneo. Se la matrice $A$ e' effettivamente una rotazione questo
sistema deve avere una retta di soluzioni, che corrisponde all'asse si rorazione.

Gli autovalori sono NUMERI (e una matrice di ordine tre ne puo' avere al piu' tre). Una rotazione avra' solo l'autovalore 1 (piu' due autovalori immaginari).

franced
"Bucky":
cercavo una risposta piu' operativa...



Bè, cercare i punti fissi di una trasformazione è abbastanza operativo..

Bucky1
effettivamente gli autovalori sono come descrivi tu
quindi non posso usarli?

se per studiare il sistama Ax=x questo non e' uguale a risolvere il sistema (A-I)x=0 ? e quindi si ritorna a parlare di equazione caratteristica e di autovalori e spazio nullo?

questo sistema ha anche la soluzione banale x=0: se sapete come indicare a matlab di scartarla... :prayer:

Bucky1
"franced":
[quote="Bucky"]cercavo una risposta piu' operativa...

Bè, cercare i punti fissi di una trasformazione è abbastanza operativo..[/quote]

si hai ragione, e' colpa della mia ignoranza. e' che non so "che operazioni" fare.

ViciousGoblin
"Bucky":
effettivamente gli autovalori sono come descrivi tu
quindi non posso usarli?

se per studiare il sistama Ax=x questo non e' uguale a risolvere il sistema (A-I)x=0 ? e quindi si ritorna a parlare di equazione caratteristica e di autovalori e spazio nullo?

questo sistema ha anche la soluzione banale x=0: se sapete come indicare a matlab di scartarla... :prayer:


Non conosco (operativamente :wink: ) mathlab ma sono sicuro che c'e' una funzione che ti restituisce gli AUTOVETTORI di una matrice.

Bucky1
allora chiariscimi ancora una cosa per favore:

io ho sempre pensato che l'autovettore fosse il vettore le cui componenti fossero gli autovalori, e che quindi R avesse 3 autovalori ed un autovettore con tre componenti associati.

invece una patrice ha piu' autovettori? se si quale scegliere?

ViciousGoblin
"Bucky":
allora chiariscimi ancora una cosa per favore:

io ho sempre pensato che l'autovettore fosse il vettore le cui componenti fossero gli autovalori, e che quindi R avesse 3 autovalori ed un autovettore con tre componenti associati.

invece una patrice ha piu' autovettori? se si quale scegliere?


Data una matrice $A$ di ordine $n$ chiami autovalore un numero $\lambda$ tale che $A - \lambda I$ ha determinante zero. Si vede subito che questa condizione e' un'equazione di grado $n$ e quindi ci sono al piu' $n$ autovalori.
Dato un autovalore $\lambda$ dato che $A - \lambda I$ ha determinante zero esiste almeno un vettore non nullo $v$ (e quindi tutti i suoi multipli) tale che $(A - \lambda I)v=0$ (cioe' esiste una soluzione non nulla del sistema lineare). Tale $v$ si chiama autovettore di $A$ di autovalore $\lambda$
Quindi ci sono al piu' $n$ autovalori e ognuno di essi ha almeno una retta di autovettori (da trovare risolvendo il sistema lineare).

Nel caso delle rotazioni in $RR^3$ la matrice ha un solo autovalore reale, che e' $\lambda=1$ e il corrispondente autovettore e' l'asse di rotazione.


Pero' queste cose te le dovresti studiare ...

Bucky1
quindi stringendo devo trovare l'autovettore v che e' la soluzione del sistema

(R-I)*v=0 :!:

ora ci provo e poi vi faccio sapere!

Bucky1
ci ho provato ma mi dice che 'Matrix is close to singular' e mi ributta fuori zero come soluzione.

per chi avesse matlab, ho dato linsolve(R-I, b)

dove b=[0 0 0]'

Bucky1
ok ho cambiato qualcosa e funziona di piu'.
in genere pero' mi vengono dei numeri complessi. che significato ha?

ViciousGoblin
"Bucky":
ok ho cambiato qualcosa e funziona di piu'.
in genere pero' mi vengono dei numeri complessi. che significato ha?


Prima di tutto credo che in mathlab (che mi pare stai usando) ci sia una funzione specifica per trovare gli autovalori/autovettori. Cercala e ti sara' utile
(non so se i nomi delle funzioni siano in inglese; in quel caso tieni presente che autovalori=eigenvalues/ autovettori=eigenvectors)

Poi, come ho detto sopra, da una matrice di rotazione in $RR^3$ bisogna aspettarsi UN autovalore reale $\lambda=1$ il cui rispettivo autovettore (a componenti reali)
individua l'asse di rotazione e due autovalori complessi coniugati corrispondenti ad altri due autovettori a componenti complesse coniugate - la parte reale e la parte immaginaria
di questi due autovettori sono due altri vettori reali che generano il piano ortogonale all'asse di rotazione. Ma a te questi non dovrebbero interessare, ti serve solo l'autovettore
corrispondente a $\lambda=1$; questo autovettore DEVE avere componenti reali.

Bucky1
ho risolto il sistema con la single value decomposition.

ma ora che ho il versore dell'asse, come lo posiziono nello spazio?

ViciousGoblin
"Bucky":
ho risolto il sistema con la single value decomposition.

ma ora che ho il versore dell'asse, come lo posiziono nello spazio?


Se la tua rotazione e' espressa da una matrice allora l'asse di rotazione passa per l'origine - quindi devi prendere la retta per l'origine avente il versore trovato.

Se invece il problema e' piu' generale dovresti spiegare dall'inizio cosa stai facendo.

Bucky1
hai ragione, ora vi spiego tutto per bene.

devo analizzare il movimento del braccio. per fare questo mi servo di alcuni marcatori posti sul braccio che vengono rilevati da delle telecamere che riescono a fornire le coordinate 3D degli stessi.

in pratica per ogni fotogramma ho le coordinate di ogni punto registrato.
dal movimento dei marcatori tra un fotogramma ed il successivo sono riuscito ad estrarre la matrice di rotazione R ed il versore dell'asse di rotazione n.
Dovrei però posizionare quest'asse di rotazione rispetto ai markers da cui l'ho calcolato.
al momento attuale mi ritrovo infatti solo il versore, ma non so in che punto dello spazio vada posizionato.

in pratica avrei bisogno di conoscere il vettore che partendo dall'origine del SdR globale giunga perpendicolarmente sull'asse di rotazione.
se avete dubbi riguardo alla questione postate pure!

ViciousGoblin
"Bucky":
hai ragione, ora vi spiego tutto per bene.

devo analizzare il movimento del braccio. per fare questo mi servo di alcuni marcatori posti sul braccio che vengono rilevati da delle telecamere che riescono a fornire le coordinate 3D degli stessi.

in pratica per ogni fotogramma ho le coordinate di ogni punto registrato.
dal movimento dei marcatori tra un fotogramma ed il successivo sono riuscito ad estrarre la matrice di rotazione R ed il versore dell'asse di rotazione n.
Dovrei però posizionare quest'asse di rotazione rispetto ai markers da cui l'ho calcolato.
al momento attuale mi ritrovo infatti solo il versore, ma non so in che punto dello spazio vada posizionato.

in pratica avrei bisogno di conoscere il vettore che partendo dall'origine del SdR globale giunga perpendicolarmente sull'asse di rotazione.
se avete dubbi riguardo alla questione postate pure!


Il discorso si fa complicato (un conto e' partire dalla matrice un'altro e' capire come questa matrice e' uscita dai tuoi dati e quindi capire come si interpretano le sue proprieta'
in termini del problema iniziale).
Alcune domande (anche se non posso garantirti di avere il tempo per pensare subito alle risposte)
1) il braccio 'e il braccio umano ? e si muove liberamente ? (niente gomito fisso per esempio)
2) allora la tua rotazione varia "istante per istante" ? (come quindi il suo asse)
3) quale procedimento usi per costruire la matrice a partire dai dati che hai ?(forse lo stesso ti da anche un punto dell'asse)

Bucky1
1) si e' il mio braccio :->
si muove liberamente
2) la rotazione varia istante per istante, ed il suo asse pure!
3) per i calcoli ho fatto cosi':
a) ho riferito per ogni istante tutti i punti alla loro media
b)ho calcolato la dispersione come la sommatoria del prodotto del trasposto di ogni punto per se stesso nell'istante precedente: c=sum(1;N;x'(t)- x(t-1))
c)ho calcolato la Single value decomposition della crossdispersione svd(c)=U*W*V'
d) ho calcolato la rotazione come R=V*U'
e)ho risolto il sistema omogeneo (R-I)*n=0 sempre con la svd. mi ha dato in uscita 3 matrici, F, G e H.
ho considerato la terza colonna di H come il vettore dell'asse.

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