Operazione pseudoinversa tra matrici

albe101
Buongiorno! sono nuovo nel forum, sono uno studente di ingegneria e mi sono imbattuto in un problema che pensavo banale ma evidentemente non lo è..! ho provato a cercare tra gli argomenti già trattati ma non ho trovato quello che cercavo, mi scuso se sto ripetendo qualcosa. Allora, io ho due sistemi di riferimento, conosco le coordinate di tre punti sia nel sistema di riferimento A che nel sistema di riferimento B e vorrei trovare la matrice di rototraslazione tramite l'operazione inversa di

$A=T*B$

con $A=((X1_a,X2_a,X3_a),(Y1_a,Y2_a,Y3_a),(Z1_a,Z2_a,Z3_a),(1,1,1))$

e $B=((X1_b,X2_b,X3_b),(Y1_b,Y2_b,Y3_b),(Z1_b,Z2_b,Z3_b),(1,1,1))$

Il problema è che la matrice di rototraslazione sarà una 4x4 mentre le altre due delle 4x3. Ho pensato allora di utilizzare la matrice pseudoinversa di B calcolando sia la pseudoinversa sinistra che quella destra e provando

$A*B'_(dx)=T$ o $B'_(sx)*A=T$

ma non mi risulta! sapreste dirmi se sto sbagliando qualcosa o se semplicemente conoscete un altro metodo? grazie mille

Risposte
dissonance
Ciao, benvenuto, ti consiglio di dare un'occhiata alle istruzioni per scrivere le [formule][/formule] come si deve. In ogni caso qui non è questione di pseudoinversa, devi semplicemente rappresentare correttamente tutte le trasformazioni come matrici \(4\times 4\). Se hai trovato qualche matrice \(4\times 3\) o \(3\times 4\), non le stai rappresentando correttamente. Se hai bisogno di maggiori informazioni prova a cercare sulle dispense di Gallier https://math.stackexchange.com/a/1031487/8157

albe101
Ciao!intanto ti ringrazio per la risposta e mi scuso per il formalismo errato delle formule! Però credo di non aver capito cosa volevi dirmi, ho dato una letta veloce alle dispense sulle affinità ma non ho capito cosa trarne.. Nel senso, la matrice di trasformazione è sicuramente una 4x4, ma se voglio trasformare un vettore in un altro vettore rototraslato, la matrice la moltiplicherò per un vettore 4x1 ottenendo un altro vettore 4x1. Io farei il procedimento diretto di trasformare 3 punti in altri 3 punti rototraslati e quindi la matrice 4x4 la moltiplico per una 4x3 ottenendo un'altra 4x3 con le coordinate dei punti trasformati..e se infatti costruisco a mano la matrice di trasformazione che vorrei ottenere dal procedimento inverso e faccio l'operazione dritta, mi risultano i punti giusti.. Solo che non so come ottenere la matrice 4x4 dall'operazione inversa ovvero conoscendo la matrice dei punti prima e dopo la trasformazione.. Non so se riesco a spiegarmi..

dissonance
Vado un po' di corsa ora, scrivo solo una formula: la rototraslazione
\[
f_{A, v}(x) = Ax +v \]
si rappresenta come
\[
\begin{bmatrix} A & v \\ 0 & 1\end{bmatrix} \begin{bmatrix} x \\ 1\end{bmatrix} ,\]
ovvero con una matrice \(4\times 4\) che opera su un vettore colonna \(4\times 1\) in cui l'ultima coordinata è \(1\).

Devi aggiungere per forza una cordinata fittizia, altrimenti ti spunteranno fuori matrici non quadrate. (Il concetto matematico dietro questa rappresentazione è quello di "spazio proiettivo", con le sue coordinate omogenee e i punti all'infinito).

albe101
si si ma infatti questo mi è chiaro infatti se guardi nel primo messaggio anche se scritto male le ultime righe delle matrici sono $ 1,1,1 $.. ma il mio problema è questo, vediamo se con un essempio numerico riesco a spiegarmi;
io so che con una matrice di trasformazione tipo
$T=((1,0,0,0),(0,1,0,0),(0,0,1,2.27),(0,0,0,1))$
moltiplicandola per una matrice di punti tipo
$B=((-0.16,0.16,0),(-0.09,-0.09,0.09),(-0.27,-0.27,-0.27),(1,1,1))$
ottengo una matrice di punti trasformati del tipo
$T*B=A=((-0.16,0.16,0),(-0.09,-0.09,0.09),(2,2,2),(1,1,1))$
che per semplicità in questo caso sono solo traslati.
Ora, ammettiamo che io non conosco $T$ ma conosco $A$ e $B$, come posso fare a risalire a $T$?
Ho già provato ad usare la pseudoinversa di Moore-Penrose, sia destra che sinistra, quindi facendo
sia $T=A*B'dx$ che $T=B'sx*A$ ma non risulta, anzi nel primo caso la pseudoinversa risulta incalcolabile. Esistono altri metodi? mi verrebbe da pensare a qualcosa di iterativo ma non avrei idea nemmeno di da dove partire :-D

O ventualmente, ti giro il problema, conosci un modo sapendo appunto le coordinate inserite nelle matrici $A$ e $B$ per ricavare semplicemente il centro della terna a cui appartengono i punti in $B$? perchè conoscendo le coordinate del centro semplificherei il problema sottraendo alle coordinate di $A$ le coordinate del centro e dovendo risolvere quindi un'operazione tra matrici quadrate $3X3$ semplici.. boooo intanto ti ringrazio in anticipo per la pazienza :-D

dissonance
Ho paura che il problema sia sottodimensionato. Per determinare \(T\) devi dare l'immagine di 4 punti, 3 non bastano.

albe101
Eh ho proprio paura tu abbia ragione.. è che tre punti mi sembrano sufficienti per conoscere almeno la posizione relativa del secondo sistema di riferimento.. probabilmente devo cambiare metodo.. se hai suggerimenti sono ben accetti :-D

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