Calcolo dell'equazione di un piano con i minimi quadrati

Marcolini1
Ciao a tutti,

Devo calcolare l'equazione di un piano con il principio dei minimi quadrati di una serie N di punti di coordinate (X;Y;Z) e poi traslare il sistema di riferimento in modo che Y sia normale a tale superficie.

Qualcuno può aiutarmi con un programmino in matlab, mathematica oppure qualcosa di più comodo?

Grazie e a presto

Risposte
Marcolini1
47 consultazioni ma nessuna risposta! :(

Marcolini1
:cry:

Marcolini1
92 consultazioni 8-[

dissonance
buh mi dispiace che nessuno ti aiuti, io di questo argomento so poco e niente (più niente che poco), però credo che si tratti di un tipico problema numerico, quindi mi orienterei su matlab; so che ci sono delle istruzioni apposta per l'approssimazione (forse POLYFIT fa al caso tuo, in sostanza dato un insieme di punti ne genera il polinomio di migliore approssimazione del grado che tu specifichi; scegliendo il primo grado dovresti ottenere qualcosa di utile). Per concludere, che cosa vuoi dire con "traslare il sistema di riferimento in modo che Y sia normale ecc..."? Che cos'è Y?

Marcolini1
Y é un asse cartesiano... in pratica io devo eliminare la coordinata Z proiettando tutto su di un piano normale ma il piano scelto deve essere esattamente quello interpolante... :roll:

Marcolini1
:cry:

Marcolini1
168 visite ma ancora nulla...

POLYFIT genera un polinomio ma io ho bisogno di un piano... :(

avete capite il mio post o dovrei riscriverlo? fate un segno che avete un infinitesimo di ordine superiore al primo tendente a zero di interesse... :)

dissonance
Prova a riscrivere tutto con più precisione. A naso mi pare un problema tipico dell'analisi numerica. Dai un'occhiata a questa pagina, contiene una guida al calcolo numerico con Matlab che mi pare semplice e completa. Guarda nella sezione "Least Squares".

Marcolini1
In pratica ho N punti nello spazio che devo interpolare con un piano (processo dei minimi quadrati). Una volta che ho determinato l'equazione di questo piano devo traslare il sistema di riferimento in modo che l'asse Y sia normale ad esso.

dissonance
Per "traslare" cosa intendi, forse vuoi dire "ruotare"? E poi, scusa, se sai già che l'asse delle Y deve essere normale al piano, allora conosci anche la direzione del piano... e vale la pena di fare tutto questo casino?

Allora, vediamo: in input hai un insieme di punti, quindi materialmente (in Matlab) un array Nx3. Da qua vuoi l'equazione di un piano che approssimi questi punti ai minimi quadrati. Supponiamo di aver trovato l'equazione di questo piano, diciamo che sia $p: aX+bY+cZ+d=0$. Adesso vuoi applicare un cambio di coordinate in maniera tale da ritrovarti con un' equazione del tipo $p: Y'+d'=0$ (piano normale all'asse delle Y'). Che tipo di cambio di coordinate? Un movimento rigido? E infine, materialmente in output cosa ti serve?

Marcolini1
Si esatto intendevo dire ruotare. La tua soluzione é esatta ma incompleta perché a me interessa anche un sistema per poter calcolare le nuove coordinate che rispetto a quelle vecchie dovranno avere una coordinata Y simile. Il movimento é di tipo rigido.

P.S.: Come fate a scrivere le formule sul sito?

GRAZIE DISSONANCE! Il problema comincia a chiarirsi.

dissonance
Per le formule guarda qui:
https://www.matematicamente.it/forum/com ... 26179.html

Invece per il problema, adesso la cosa inizia a chiarirsi, si. Adesso si tratta di una faccenda di algebra lineare. L'equazione del nostro piano $p: aX+bY+cZ+d=0$ la scriviamo così $p: (a,b,c)((X-x_0),(Y-y_0),(Z-z_0))=0$ dove $(x_0, y_0, z_0)$ è un qualsiasi punto del piano. Vogliamo introdurre un cambiamento di coordinate ${((X),(Y),(Z))=M((X'), (Y'), (Z'))+((v_x), (v_y), (v_z)) :}$, con $M$ matrice ortogonale 3x3, tale che l'equazione di $p$ nelle nuove coordinate $(X', Y', Z')$ sia la $Y'+d'=0$ di cui sopra.

Ora mi vengono in mente due strade.
[edit] quella scritta in piccolo la lascerei perdere, è un diluvio di conti inutili. [/edit]
[size=75]La prima è quella "forza bruta", che però potrebbe andare bene lavorando al calcolatore.
Il cambiamento di coordinate trasforma l'equazione di $p$ così:
$p: (a,b,c)(M((X'), (Y'), (Z'))+((v_x), (v_y), (v_z))-((x_0), (y_0), (z_0)))=0$.
ma noi vogliamo che sia fatta così:
$p: Y'+d'=0$
perciò imponiamo l'uguaglianza tra le due espressioni
$(a,b,c)(M((X'), (Y'), (Z'))+((v_x), (v_y), (v_z))-((x_0), (y_0), (z_0)))=(0,1,0)((X'), (Y'+d'),(Z'))$
e risolviamo $M$ e $vecv$, imponendo anche che $M$ sia ortogonale.[/size]

Altrimenti si può fare così: risolviamo l'equazione di $p$ per ottenere due suoi vettori di direzione, diciamo $vecl, vecm$, ortogonali tra loro e anche di modulo unitario. Completiamo in una base ortonormale di $RR^3$, diciamo $vecl, vecm, vecn$, adesso imponiamo che nel nuovo sistema di riferimento questi tre vettori corrispondano a $(1,0,0), (0,0,1), (0,1,0)$. In questa maniera la direzione dell'asse delle $Y'$, $(0,1,0)$, corrisponderà al vettore $vecn$ che è ortogonale alla direzione di $p$. In concreto anche i conti sono facili: vogliamo che $vecl=M(1,0,0)^T, vecm=M(0,0,1)^T, vecn=M(0,1,0)^T$, ovvero che $M=[vecl, vecn, vecm]$.

Marcolini1
Non ho capito la seconda parte (Altrimenti si può fare così: risolviamo l'equazione di...); potresti riscrivermi le equazioni finali semplificate? Tieni conto che per me d può assumere qualsiasi valore e la rotazione dei piani x e z intorno a y può essere assunta a caso....

Grazie

Marcolini1
io mio obbiettivo é capire bene il problema e po implementarlo in mathematica o matlab...

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