Re: Punto comune a ellisse e circonferenza

Messaggioda genzo87 » 15/01/2024, 09:26

Le due pinze sono nella realtà due cilindri, lo si può vedere in questa immagine, dove si vede il sistema di sollevamento visto dall'alto:


Immagine

Il mio scopo è quello far passare il piano per un fianco del cilindro che rappresenta la ruota (la linea orizzontale tratteggiata sopra), che è il piano a cui appartiene sempre il punto di contatto.
Per curiosità, che programma hai usato per fare la simulazione numerica?
genzo87
Starting Member
Starting Member
 
Messaggio: 3 di 4
Iscritto il: 11/01/2024, 15:45

Re: Punto comune a ellisse e circonferenza

Messaggioda sellacollesella » 15/01/2024, 14:36

D'accordo, in tal caso pinza e ruota avranno rispettivamente un'equazione cartesiana del tipo: \[
\frac{(x-x_p)^2}{a^2} + \frac{(z-z_p)^2}{r^2} = 1,
\quad \quad \quad
\frac{x^2}{R^2} + \frac{(z-z_r)^2}{R^2} = 1
\] dove: \[
x_p = \overline{x}_p + r/\tan\gamma,
\quad \quad \quad
a = r/\sin\gamma
\] e \(z_r = 0\) finché la pinza non aderirà alla ruota al variare di \(0 < \gamma < \pi/2\), poi da determinare.

Pertanto, se sommiamo alla prima equazione \(-R^2/r^2\) volte la seconda equazione, otteniamo: \[
z(x) := \frac{u_0 + u_1\,x + u_2\,x^2}{\delta}
\] dove: \[
\begin{aligned}
& \delta = 2 a^2 (z_r - z_p) \\
& u_0 = a^2 (r^2 - R^2 + z_r^2 - z_p^2) - r^2 x_p^2 \\
& u_1 = 2 r^2 x_p \\
& u_2 = a^2 - r^2 \\
\end{aligned}
\] che a sua volta se sostituita nell'equazione cartesiana della ruota porta a: \[
p(x) := v_0 + v_1\,x + v_2\,x^2 + v_3\,x^3 + v_4\,x^4 = 0
\] dove: \[
\begin{aligned}
& v_0 = (u_0 + \delta (R - z_r)) (u_0 - \delta (R + z_r)) \\
& v_1 = 2 u_1 (u_0 - \delta z_r) \\
& v_2 = u_1^2 + 2 u_0 u_2 + \delta (\delta - 2 u_2 z_r) \\
& v_3 = 2 u_1 u_2 \\
& v_4 = u_2^2 \\
\end{aligned}
\] che come ogni polinomio ha discriminante correlato al determinante della matrice di Sylvester: \[
\Delta_p(z_r) := \frac{(-1)^{4(4-1)/2}}{v_4}\,
\det\begin{bmatrix}
v_4 & v_3 & v_2 & v_1 & v_0 & 0 & 0 \\
0 & v_4 & v_3 & v_2 & v_1 & v_0 & 0 \\
0 & 0 & v_4 & v_3 & v_2 & v_1 & v_0 \\
4v_4 & 3v_3 & 2v_2 & v_1 & 0 & 0 & 0 \\
0 & 4v_4 & 3v_3 & 2v_2 & v_1 & 0 & 0 \\
0 & 0 & 4v_4 & 3v_3 & 2v_2 & v_1 & 0 \\
0 & 0 & 0 & 4v_4 & 3v_3 & 2v_2 & v_1 \\
\end{bmatrix}.
\] Arrivati a questo punto dovrebbe essere chiaro dove si intende parare, ossia la condizione di tangenza: \[
\Delta_p(z_r) = 0
\] che essendo un'equazione polinomiale di 12° grado, è generalmente risolubile solo per via numerica.

Quindi, posto \(\gamma = 10^{-3}\) e \(z_r^* = z_r\), aggiornerei \(z_r^*\) con il metodo di Newton-Raphson: \[
z_r^* = z_r^* - \Delta_p(z_r^*)/\Delta_p'(z_r^*)
\] e dopo aver iterato una decina di volte farei un semplice confronto:

  • se \(z_r^* < z_r\) significa che la pinza non è aderente la ruota e non aggiorno \(z_r\);

  • se \(z_r^* \ge z_r\) significa che la pinza è aderente la ruota e aggiorno \(z_r = z_r^*\).
Nel secondo caso, posto \(x_t = R/2\), lo aggiornerei con il metodo di Newton-Raphson: \[
x_t = x_t - p(x_t)/p'(x_t)
\] e dopo aver iterato una decina di volte il punto di tangenza risulta essere \(T(x_t,z(x_t))\).

Ciò fatto, incrementerei l'angolo \(\gamma\) e ripeterei fino ad arrivare nei pressi di \(\pi/2\), da cui:

Immagine

Come la precedente gif, la ho realizzata programmando in Wolfram Mathematica, ma con un po' più di lavoro le suddette formulazioni possono essere benissimo applicate anche altrove, tipo in ambiente VBA di Excel. :-)
Ultima modifica di sellacollesella il 15/01/2024, 16:24, modificato 2 volte in totale.
sellacollesella
Average Member
Average Member
 
Messaggio: 638 di 959
Iscritto il: 08/04/2022, 12:43

Re: Punto comune a ellisse e circonferenza

Messaggioda genzo87 » 15/01/2024, 15:40

Ciao, innanzitutto grazie mille per la risposta! Sei stato gentilissimo.
Seconda cosa, purtroppo le mie conoscenze derivate dagli studi di ingegneria non mi permettono di "seguire" fino in fondo il tuo ragionamento, soprattutto quando parli di matrice di Sylvester e metodo di Newton-Raphson, dovrò approfondire...
Comunque ho una domanda, all'inizio quando scrivi:
$ xp=x¯p+r/tanγ,a=r/sinγ $

a me invece risulterebbero:
$ xp=x¯p+ c sinγ, a=r/sin(pi/2 - γ) $

dove $ x¯p $ è una grandezza fissa e c è l'ipotenusa (variabile) creata dal movimento della pinza che vale:
$ c=30 / cos γ $


Immagine

Ti torna?
genzo87
Starting Member
Starting Member
 
Messaggio: 4 di 4
Iscritto il: 11/01/2024, 15:45

Re: Punto comune a ellisse e circonferenza

Messaggioda sellacollesella » 15/01/2024, 17:37

Dato che le due pinze sono cilindriche ne ho sezionata una con un piano \(y = y_p + r\) e ho ottenuto quanto sopra riportato. D'altro canto tu, che ovviamente hai ben in mente il meccanismo che stai analizzando, hai sezionato con un piano \(y = y_p + k\) e poi, invece dell'angolo \(\gamma\), hai considerato il suo complementare: \[
x_p = \overline{x}_p + k/\tan(\pi/2-\gamma) = \overline{x}_p + k\tan\gamma,
\quad \quad
a = r/\sin(\pi/2-\gamma) = r/\cos\gamma
\] dove assumendo \(k = 30\) si ottengono esattamente le tue formulazioni, che in quanto tali sono corrette. :smt023

Sul resto, se vuoi approfondire ti posso linkare le rispettive pagine Wikipedia: click e click, dove tra i due inutile dire che sia decisamente più importante che tu conosca molto bene il metodo di Newton-Raphson, essendo praticamente il metodo numerico più potente e trasversale, perlomeno tra quelli noti ai comuni mortali come noi altri, poi ne esistono talmente tanti altri più sofisticati che è meglio non pensarci! :-D


Quindi, volendo dribblare la tiritera del discriminante, possiamo rifarci a dei fatti geometrici fondamentali:

  • per una curva implicita \(f(u,v)=0\) un vettore normale è \(\mathbf{n}_f = \left(f_u,f_v\right) \ne (0,0)\);

  • per una superficie implicita \(f(u,v,w)=0\) un vettore normale è \(\mathbf{n}_f = \left(f_u,f_v,f_w\right) \ne (0,0,0)\).
Pertanto, considerando le due curve implicite in gioco: \[
f(x,z) := \frac{(x-x_p)^2}{a^2} + \frac{(z-z_p)^2}{r^2} - 1 = 0,
\quad \quad
g(x,z) := \frac{x^2}{R^2} + \frac{(z-z_r)^2}{R^2} - 1 = 0
\] possiamo calcolarne i rispettivi vettori normali: \[
\mathbf{n}_f = \left(\frac{2(x-x_p)}{a^2},\frac{2(z-z_p)}{r^2}\right),
\quad \quad
\mathbf{n}_g = \left(\frac{2x}{R^2},\frac{2(z-z_r)}{R^2}\right)
\] e imporre che nel punto di tangenza di coordinate \((x,z)\) siano paralleli, ossia proporzionali: \[
\mathbf{n}_f = \lambda\,\mathbf{n}_g,
\quad \quad \text{con} \; \lambda \in \mathbb{R}\backslash\{0\}.
\] Nella fattispecie, il sistema di equazioni appena scritto permette di determinare il punto di tangenza: \[
(x,z) = \left(\frac{R^2x_p}{R^2-\lambda a^2},\frac{R^2z_p-\lambda r^2z_r}{R^2-\lambda r^2}\right)
\] che, naturalmente, dipende dalle incognite \(z_r \ge 0\) e \(\lambda < 0\), quest'ultima disequazione deducibile dal fatto che nel nostro specifico caso di interesse il vettore \(\mathbf{n}_f\) punta verso l'alto e il vettore \(\mathbf{n}_g\) punta verso il basso.

Ciò fatto, sfruttando nuovamente il fatto che stiamo operando nel semipiano negativo delle quote, si ha: \[
g(x,z) = 0
\quad \Rightarrow \quad
z = z_r - \sqrt{R^2-x^2}
\quad \Rightarrow \quad
\frac{R^2z_p-\lambda r^2z_r}{R^2-\lambda r^2} = z_r - \sqrt{R^2-\left(\frac{R^2x_p}{R^2-\lambda a^2}\right)^2}
\] equazione lineare rispetto a \(z_r\) verificata se e soltanto se: \[
z_r = z_p + \frac{R^2-\lambda r^2}{R}\sqrt{1-\left(\frac{R\,x_p}{R^2-\lambda a^2}\right)^2}.
\] Non ci rimane che sostituire l'espressione di \(z_r\) nelle coordinate del punto di tangenza, che a loro volta sostituite nell'unica equazione che manca all'appello, ossia \(f(x,z)=0\), permette di ridursi all'equazione: \[
p(\lambda) := c_0 + c_1\,\lambda + c_2\,\lambda^2 + c_3\,\lambda^3 + c_4\,\lambda^4 = 0
\] dove: \[
\begin{aligned}
& c_0 = -R^6 \\
& c_1 = 2 a^2 R^4 \\
& c_2 = R^2\left(r^2 (R^2 - x_p^2) - a^2 (a^2 - x_p^2)\right) \\
& c_3 = -2 a^2 r^2 R^2 \\
& c_4 = a^4 r^2 \\
\end{aligned}.
\] Ancora una volta siamo in balia di un'equazione polinomiale di quarto grado, che perlomeno ora non necessita del calcolo del rispettivo discriminante, dato che la questione circa la tangenza l'abbiamo sfangata a monte ragionando in termini di vettori normali alle due curve implicite in gioco. D'altro canto, seppur per i polinomi fino al quarto grado esistano delle formulazioni in forma chiusa, non sono per nulla agevoli se non nei classici casi di un'equazione di primo o secondo grado, che non a caso vengono trattati sin dalle scuole superiori.

È proprio per questo motivo che i metodi numerici entrano in gioco di prepotenza, tra i quali inutile ribadirlo che a farla da padrone sia il metodo di Newton-Raphson, il re assoluto dei cosiddetti root-finding algorithms.

Nella fattispecie, dato che sappiamo dover risultare \(\lambda<0\) sarà sufficiente porre come valore di primo tentativo \(\lambda^* = -10\) e poi aggiornare tale valore quasi casuale iterando il seguente metodo numerico: \[
\lambda^* = \lambda^* - p(\lambda^*)/p'(\lambda^*).
\] Al solito, basteranno una decina di iterazioni per arrivare a convergenza e poter concludere \(\lambda = \lambda^*\).

Dulcis in fundo, possiamo sintetizzare l'intero algoritmo in quattro passi:

  • assegnare dei valori numerici a tutti i parametri noti e inizializzare \(\gamma = 10^{-3}\);

  • risolvere iterativamente l'equazione \(p(\lambda) = 0\) determinando l'unico \(\lambda < 0\) che la verifica;

  • calcolare \(z_r\): se \(z_r<0\) non c'è tangenza, quindi \(z_r = 0\) e si passa all'ultimo punto; altrimenti
    c'è tangenza, il valore di \(z_r\) è accettabile e permette di determinare il punto di tangenza \((x,z)\);

  • incrementare \(\gamma\) e tornare al secondo punto finché \(\gamma\) non sia nei pressi di \(\pi/2\).
Va da sé che i dati iniziali debbano essere ragionevoli, altrimenti potrebbe benissimo essere che \(\lambda^*\) converga ad un valore positivo, che a sua volta renderà negativo il radicando, mandando tutto alle ortiche. Ciò accade, ad esempio, se assumiamo un valore di \(\overline{x}_p\) troppo piccolo e quindi la pinza risulterebbe interna alla ruota, che ovviamente è un caso fisicamente impossibile. Tutto ciò per sottolineare che bisogna sempre ragionarci bene!
sellacollesella
Average Member
Average Member
 
Messaggio: 639 di 959
Iscritto il: 08/04/2022, 12:43

Precedente

Torna a Geometria e algebra lineare

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite