Determinazione dei coefficienti di una circonferenza
Buongiorno a tutti,
Parto a bomba sperando di non dilungarmi troppo.
Voglio determinare le relazioni che mi permettono di calcolare i coefficienti alpha, beta e gamma di una circonferenza su un piano avendo come dati di input le coordinate $x$ ed $y$ di 3 punti sul piano.
Queste equazioni verranno inserite in un foglio di calcolo che acquisisce le coordinate dei punti in base a dei parametri che cambiano sempre. Quindi il mio bisogno nasce dal fatto che voglio automatizzare la determinazione del raggio in base alle coordinate di questa terna di punti.
Assumiamo che i punti di input siano i seguenti:
P = (2 ; 5) --> (x1 ; y1)
Q = (4 ; 0) --> (x2 ; y2)
R = (-2; 0) --> (x3 ; y3)
Qualsiasi corso di albegra/geometria di base imposta un sistema 3x3 con 3 incognite in 3 equazioni ed e' facilmente calcolabile anche a mano.
Volendo rendere automatico questo calcolo, mi e' necessario determinare alpha, beta e gamma presenti nell'equazione del cerchio.
Considerando l'equazione canonica della circonferenza $x^2+y^2+alphax+betay+gamma=0$, il coefficiente alpha (ad esempio) dipende dalle coordinate dei punti scelti e l'equazione di soluzione per calcolare alpha ha al denominatore (x1-x3)(y2-y3).
Il prodotto al denominatore e' zero ed ho qualcosa che e' un numero diviso zero: Excel smette di collaborare (ovviamente) ed io non riesco a determinare alpha. La stessa situazione si ha per i rimanenti coefficienti beta e gamma.
Per cui vi lancio il quesito: esiste un modo per raggirare questo inconveniente? Se il denominatore si annulla, come faccio a determinare alpha, beta e gamma senza avere problemi con Excel?
Spero di ricevere un vostro consiglio!
Saluti e grazie a tutti coloro che parteciperanno a questo post!
kalo86
Parto a bomba sperando di non dilungarmi troppo.
Voglio determinare le relazioni che mi permettono di calcolare i coefficienti alpha, beta e gamma di una circonferenza su un piano avendo come dati di input le coordinate $x$ ed $y$ di 3 punti sul piano.
Queste equazioni verranno inserite in un foglio di calcolo che acquisisce le coordinate dei punti in base a dei parametri che cambiano sempre. Quindi il mio bisogno nasce dal fatto che voglio automatizzare la determinazione del raggio in base alle coordinate di questa terna di punti.
Assumiamo che i punti di input siano i seguenti:
P = (2 ; 5) --> (x1 ; y1)
Q = (4 ; 0) --> (x2 ; y2)
R = (-2; 0) --> (x3 ; y3)
Qualsiasi corso di albegra/geometria di base imposta un sistema 3x3 con 3 incognite in 3 equazioni ed e' facilmente calcolabile anche a mano.
Volendo rendere automatico questo calcolo, mi e' necessario determinare alpha, beta e gamma presenti nell'equazione del cerchio.
Considerando l'equazione canonica della circonferenza $x^2+y^2+alphax+betay+gamma=0$, il coefficiente alpha (ad esempio) dipende dalle coordinate dei punti scelti e l'equazione di soluzione per calcolare alpha ha al denominatore (x1-x3)(y2-y3).
Il prodotto al denominatore e' zero ed ho qualcosa che e' un numero diviso zero: Excel smette di collaborare (ovviamente) ed io non riesco a determinare alpha. La stessa situazione si ha per i rimanenti coefficienti beta e gamma.
Per cui vi lancio il quesito: esiste un modo per raggirare questo inconveniente? Se il denominatore si annulla, come faccio a determinare alpha, beta e gamma senza avere problemi con Excel?
Spero di ricevere un vostro consiglio!
Saluti e grazie a tutti coloro che parteciperanno a questo post!
kalo86
Risposte
"kalo86":
Ciao, grazie per la risposta.
Non ho messo in conto che i 3 punti siano allineati. L'ho escluso a priori perché nell'applicazione di mio interesse non si può verificare mai che ci sia una terna di punti consecutivi allineati. Quindi non ha senso prendere in considerazione questo caso limite.
La mia domanda era riferita al primo post dove trovi le coordinate di 3 punti a caso.
Se usi quelle coordinate, vedrai che le tue relazioni che hai determinato non danno alcun risultato perché il denominatore va a zero. Mi sembra strani che non si possa automatizzare un calcolo (che è anche banale direi) per determinare il raggio di curvatura di una porzione di curva... Basta che due punti su tre siano allineati ed il conto va in tilt.
Boh, evidentemente non mi hai letto con attenzione o non sai usare delle semplici funzioni excel per operare un paio di confronti e e riordinare automaticamente una matrice 3x2...e il problema sparisce.
Evidentemente non capisci il problema. Usa i punti nel primo post. Non c'è nulla da riordinare. Perché parli di Excel? Non si tratta di chiedere la pappa pronta. Vorrei semplicemente affrontare il problema chiedendo il vostro parere su come sbolognare una situazione del genere quando si ha a che fare con uno zero al denominatore (perché le formule sono quelle e non me le posso inventare).
"kalo86":
Evidentemente non capisci il problema. Usa i punti nel primo post. Non c'è nulla da riordinare. Perché parli di Excel?
Doh!
"kalo86":
Queste equazioni verranno inserite in un foglio di calcolo che acquisisce le coordinate dei punti in base a dei parametri che cambiano sempre. Quindi il mio bisogno nasce dal fatto che voglio automatizzare la determinazione del raggio in base alle coordinate di questa terna di punti.
Provo per l'ultima volta. Sei dentro un foglio excel che importa 3 punti specifici. In una cella inserisci un semplice confronto fra valori. Una formula del tipo Se x1=x2 o x1=x3 o y1=y2 o infine y1=y3, allora riordina la matrice dei tre punti in modo che i due punti con le due ascisse uguali oppure con le due ordinate uguali diventino la seconda e terza riga.
poi applichi le formule a quella matrice e non capiterà MAI che vi sia un denominatore uguale a zero.
Poi prova ad inserire i punti iniziali nell'ordine sbagliato e vedrai che excel li riordinerà proprio come nell'esempio e non fallisci mai.
Giuro che non capisco più cosa tu voglia.
Scusa se sono apparso brusco...avevo fame 
Ti faccio vedere come funziona l'algoritmo nel caso peggiore.
Prendiamo tre punti e li mettiamo in una matrice $ ( ( 0 , 4 ),( 0 , 1 ),( 3 , 4 ) ) $.
La prima verifica mi dice che $y_1=y_3$ quindi il foglio di calcolo crea automaticamente una matrice riordinata così $ ( ( 0 , 1 ),( 0 , 4 ),( 3 , 4 ) ) $ e a questa matrice è associata la formula dell'ascissa del centro:
$a=[y_2-y_3+(x_1^2-x_2^2)/(y_1-y_2)-(x_1^2-x_3^2)/(y_1-y_3)]/(2[(x_1-x_2)/(y_1-y_2)-(x_1-x_3)/(y_1-y_3)])
=3/2$
Poi la verifica dice anche che $x_1=x_2$ quindi il foglio di calcolo crea automaticamente una seconda matrice riordinata così $ ( ( 3 , 4 ),( 0 , 4 ),( 0 , 1 ) ) $ e a questa matrice è associata la formula dell'ordinata del centro:
$b=[x_2-x_3+(y_1^2-y_2^2)/(x_1-x_2)-(y_1^2-y_3^2)/(x_1-x_3)]/(2[(y_1-y_2)/(x_1-x_2)-(y_1-y_3)/(x_1-x_3)])=5/2$
Buona serata!

Ti faccio vedere come funziona l'algoritmo nel caso peggiore.
Prendiamo tre punti e li mettiamo in una matrice $ ( ( 0 , 4 ),( 0 , 1 ),( 3 , 4 ) ) $.
La prima verifica mi dice che $y_1=y_3$ quindi il foglio di calcolo crea automaticamente una matrice riordinata così $ ( ( 0 , 1 ),( 0 , 4 ),( 3 , 4 ) ) $ e a questa matrice è associata la formula dell'ascissa del centro:
$a=[y_2-y_3+(x_1^2-x_2^2)/(y_1-y_2)-(x_1^2-x_3^2)/(y_1-y_3)]/(2[(x_1-x_2)/(y_1-y_2)-(x_1-x_3)/(y_1-y_3)])
=3/2$
Poi la verifica dice anche che $x_1=x_2$ quindi il foglio di calcolo crea automaticamente una seconda matrice riordinata così $ ( ( 3 , 4 ),( 0 , 4 ),( 0 , 1 ) ) $ e a questa matrice è associata la formula dell'ordinata del centro:
$b=[x_2-x_3+(y_1^2-y_2^2)/(x_1-x_2)-(y_1^2-y_3^2)/(x_1-x_3)]/(2[(y_1-y_2)/(x_1-x_2)-(y_1-y_3)/(x_1-x_3)])=5/2$
Buona serata!
Non so se ho capito bene il problema ma conoscendo tre punti abbiamo un sistema lineare di tre equazioni e tre incognite che si risolve in tanti modi (Gauss e Cramer per esempio)
L'equazione del cerchio che passa per i tre punti del primo post è $x^2+y^2-2x-17/5y-8=0$, trovata usando Gauss in Excel.
Cordialmente, Alex
L'equazione del cerchio che passa per i tre punti del primo post è $x^2+y^2-2x-17/5y-8=0$, trovata usando Gauss in Excel.
Cordialmente, Alex
Salve a tutti,
Il problema è quello di determinare il raggio del cerchio passante per 3 punti noti.
In particolare mi sono accorto che le formule che determinano i coefficienti alpha, beta e gamma dipendono dalle coordinate cartesiane dei punti. Usando 3 punti a caso, ho visto che l'equazione perde di significato in quanto il denominatore va a zero.
L'utente Bokonon (che ringrazio per la pazienza) è riuscito a capire il mio problema e credo che lo ha risolto egregiamente perché basta cambiare l'ordine dei punti affinché la loro differenza (o somma algebrica) non restituisca zero, così l'equazione funziona come ci si aspetta.
Proverò ad implementare il check della somma zero.
Altrimenti, vedrò di capire come usare Gauss per determinare ancor prima questi coefficienti.
A questo punto vi svelo il vero motivo: sto studiando le curve che vengono generate da un utensile con protuberanza per ruote dentate. Al variare dei parametri che identificano la geometria dell'utensile, il profilo del dente della ruota dentata avrà una forma diversa. A volte si è in presenza del fenomeno di sottotaglio e la curva che descrive il raggio di raccordo tra profilo del dente e diametro di troncatura interna si chiama trocoide. Tale curva è una curva a raggio variabile ed ho intenzione di automatizzare un calcolo del minimo raggio di curvatura di questa curva (totalmente determinata tramite inviluppo di successive posizioni dell'utensile durante il moto di taglio). I punti a disposizione sono già noti nella forma (x, y, 0). Volevo realizzare questo calcolo rendendolo robusto al variare delle coordinate dei punti, lasciando inalterato l'ordine dei punti. Ma mi sto rendendo conto che è obbligatorio inserire dei controlli prima di applicare queste formule derivate dal sistema quadrato 3x3.
Ho fatto ben peggio per studiare tutto ciò, ma la matematica è affascinante anche per questo! Quando credi che la determinazione di un raggio sia una cosa banale, è proprio lì che ti freghi!
Grazie a tutti per i consigli!
kalo86
Il problema è quello di determinare il raggio del cerchio passante per 3 punti noti.
In particolare mi sono accorto che le formule che determinano i coefficienti alpha, beta e gamma dipendono dalle coordinate cartesiane dei punti. Usando 3 punti a caso, ho visto che l'equazione perde di significato in quanto il denominatore va a zero.
L'utente Bokonon (che ringrazio per la pazienza) è riuscito a capire il mio problema e credo che lo ha risolto egregiamente perché basta cambiare l'ordine dei punti affinché la loro differenza (o somma algebrica) non restituisca zero, così l'equazione funziona come ci si aspetta.
Proverò ad implementare il check della somma zero.
Altrimenti, vedrò di capire come usare Gauss per determinare ancor prima questi coefficienti.
A questo punto vi svelo il vero motivo: sto studiando le curve che vengono generate da un utensile con protuberanza per ruote dentate. Al variare dei parametri che identificano la geometria dell'utensile, il profilo del dente della ruota dentata avrà una forma diversa. A volte si è in presenza del fenomeno di sottotaglio e la curva che descrive il raggio di raccordo tra profilo del dente e diametro di troncatura interna si chiama trocoide. Tale curva è una curva a raggio variabile ed ho intenzione di automatizzare un calcolo del minimo raggio di curvatura di questa curva (totalmente determinata tramite inviluppo di successive posizioni dell'utensile durante il moto di taglio). I punti a disposizione sono già noti nella forma (x, y, 0). Volevo realizzare questo calcolo rendendolo robusto al variare delle coordinate dei punti, lasciando inalterato l'ordine dei punti. Ma mi sto rendendo conto che è obbligatorio inserire dei controlli prima di applicare queste formule derivate dal sistema quadrato 3x3.
Ho fatto ben peggio per studiare tutto ciò, ma la matematica è affascinante anche per questo! Quando credi che la determinazione di un raggio sia una cosa banale, è proprio lì che ti freghi!
Grazie a tutti per i consigli!
kalo86