Sinusoide passante per due punti

desko
È data la sinusoide $y=a*sin(omega*x+theta)$, dove $omega$ è noto, mentre $a$ e $theta$ sono da trovare in modo che la curva passi per i punti $A (x_A, y_A)$ $B (x_B, y_B)$.
Credo che due punti bastino per determinare i due parametri, altrimenti si può considerare un terzo punto.
Io ci sto scancherando da un po' con le classiche formule trigonometriche, ma finora non ci ho cavato fuori nulla.
È un problema sorto al lavoro, ma l'ho inserito in questa sezione perché credo (spero) che si possa risolvere con la trigonometria da liceo, come sto cercando di fare invano (finora).
Grazie

Risposte
f.bisecco
Se i punti appartengono alla sinusoide basta imporre il passaggio per essi e ricavi i due parametri...

oronte83
Il conto è un po' complesso dato che non ci sono valori numerici...

Per il principio di appartenenza hai:

$y_A=asin(omegax_A+phi)$
$y_B=asin(omegax_B+phi)$

Ricavo $a$ dalla seconda (o dalla prima)

$a=(y_B)/(sin(omegax_B+phi))$
$y_a=(y_Bsin(omegax_A+phi))/(sin(omegax_B+phi))$

Formule di addizione del seno:

$y_a=(y_Bsinomegax_Acosphi+y_Bcosomegax_Asinphi)/(sinomegax_Bcosphi+cosomegax_Bsinphi)$

Pongo $sinomegax_A=S$, $cosomegax_A=C$, $sinomegax_B=S'$ e $cosomegax_B=C'$ essendo quantita note.

$y_A=(y_BScosphi+y_BCsinphi)/(S'cosphi+C'sinphi)$

da cui: $y_AS'cosphi+y_AC'sinphi-y_BScosphi-y_BCsinphi=0$, con $S'cosphi+C'sinphi!=0$

$cosphi(y_AS'-y_BS)+sinphi(y_AC'-y_BC)=0$, che e' un'equazione omogenea di primo grado, risolubile dividendo tutto per $cosphi$.

Mi sono accorto che ho usato $phi$ al posto di $theta$ ma e' lo stesso...

desko
Grazie mille.
Nel frattempo stavo già arrivando ad una soluzione abbastanza simile.
C'è da stare attenti all'$atan$, faremo delle prove numeriche per vedere che precauzioni prendere coi nostri dati.
Grazie ancora

Sk_Anonymous
Una soluzione l'avrei anch'io ( probabilmente non dissimile dalle vostre).
Sommando e sottraendo ed applicando le prostaferesi si ha:

$y_a+y_b=2a*sin(omega *(x_a+x_b)/2+phi)cos(omega*(x_a-x_b)/2)$
$y_a-y_b=2a*cos(omega *(x_a+x_b)/2+phi)sin(omega*(x_a-x_b)/2)$
Dividendo membro a membro risulta:
$(y_a+y_b)/(y_a-y_a)=tan(omega *(x_a+x_b)/2+phi)cotan(omega*(x_a-x_b)/2)$
Da qui ,con un po' di cautela sull'arctan ,si ricava:
$phi =arctan((y_a+y_b)/(y_a-y_b)*tan(omega*(x_a-x_b)/2))-omega*(x_a+x_b)/2$
$a=(y_a)/(sin(omega*x_a+phi))$

desko
Avevo provato anch'io con la prostaferesi, ma mi aveva portato alle equazioni iniziali, poi ho trovato il metodo già descritto qui e non me ne sono più interessato.

desko
Vista l'efficienza dimostrata propongo un altro problema analogo, nato ieri; io una sorta di soluzione l'ho già trovata, ma è un gran casino, quindi, forse, qualcuno può aiutarmi a trovare qualcosa di più ragionevole.
L'equazione stavolta ha forma $y=A*sin(x+theta)+B$, dove bisogna determinare $A$, $B$ e $theta$.
Immagino che debbano servire 3 punti invece dei due del precedente.
Molto brevemente:
- ho scritto le tre equazioni, una per ogni punto che considero noto e portando la $B$ alprimo membro;
- ho fatto i rapporti fra le prime due e le ultime due (al momento non mi sono interessato alle condizioni per cui posso farlo);
- nelle due equazioni trovate al punto precedente $A$ si semplifica;
- denominatore comune in entrambe e isolo la $B$ ai primi membri;
- eguaglio i secondi membri, ora funzioni della sola $theta$;
- di nuovo denominatore comune;
- scompongo il seno della somma ovunque;
- nel "polinomio" che salta fuori tutti i monomi contengono $cos^2(theta)$ o $sin(theta)*cos(theta)$ oppure $sin^2(theta)$;
- divido tutto per $cos(theta)$ e mi ritrovo un'equazione di 2° grado in $tg(theta)$, da cui ricavare $theta$;
- sostituisco in un'equazione dove avevo isolato $B$;
- sostituisco tutto in una delle equaizoni originali per trovare $A$.
Come didevo: un gran casino.

Grazie a chi ha tempo e voglia di contribuire.

ViciousGoblin
Quello che vi propongo e' probabilmente una rilettura dei metodi precedenti, che pero' io trovo piu' semplice, e che permette di scindere i problemi.

L'idea di fondo e' di passare ai complessi, ricordando che $sin(x)=Im(e^{ix})$ allora
$y=A\sin(x+\theta)+B =Im(Ae^{i(x+\theta)})+B=Im(Ae^{i\theta}e^{ix})+B=Im(ze^{ix})+B$ dove $z=Ae^{i\theta}$

A questo punto invece di cercare $A$ e $\theta$ cerchiamo $z=a+ib$. Se troviamo $a$ e $b$ avremo $A=\sqrt{a^2+b^2}$, mentre $\theta$, che e' l'argomento
di $a+ib$, si trova usando l'arcotangente (con un po' di casi da distingure).

In effetti mi pare che il problema necessiti di tre condizioni, diciamo


$\{(y_1=Im((a+ib)e^{ix_1}+B)),(y_2=Im((a+ib)e^{ix_2}+B)),(y_3=Im((a+ib)e^{ix_3}+B)):}$

con qualche calcolo quello di sopra diventa un sistema lineare in $a,b, B$ - non so se serviva una formula analitica in termini di $x_k$ e $y_k$,$ k=1,2,3$ (che e' un po' complicata da scrivere,
ma come metodo di calcolo mi pare o.k. Puo' darsi che il sistema non sia risolubile sempre e questo lo si dovrebbe vedere calcolando il determinante di cio' che esce.

Sk_Anonymous
Cerco di mettere ordine ...nel casino,ovviamente secondo il mio punto di vista.
Se i tre punti sono $(x_a,y_a),(x_b,y_b),(x_c,y_c)$ allora si ha il sistema:

${(A*sin(x_a+theta)+B=y_a),(A*sin(x_b+theta)+B=y_b),(A*sin(x_c+theta)+B=y_c) :}$

Considerando le prime due equazioni ( o altre due qualsiasi) come un sistema lineare
nelle incognite A e B ,si ha:

${(A=(y_a-y_b)/(sin(x_a+theta)-sin(x_b+theta))),(B=(y_b*sin(x_a+theta)-y_a*sin(x_b+theta))/(sin(x_a+theta)-sin(x_b+theta))):}$

Sostituendo questi valori nella restante equazione ( la terza ,nel nostro caso) abbiamo:

$(y_a-y_b)*sin(x_c+theta)+y_b*sin(x_a+theta)-y_a*sin(x_b+theta)=y_c*sin(x_a+theta)-y_c*sin(x_b+theta)$

Sviluppando e raccogliendo da un lato $sin theta$ e dall'altro $cos theta$,abbiamo l'equazione:

$[y_a(-cosx_b+cosx_c)+y_b(-cosx_c+cosx_a)+y_c(-cosx_a+cosx_b)]sin theta-[y_a(sinx_b-sinx_c)+y_b(sinx_c-sinx_a)+y_c(sinx_a-sinx_b)]cos theta=0$

Da qui :

$tan theta=(y_a(sinx_b-sinx_c)+y_b(sinx_c-sinx_a)+y_c(sinx_a-sinx_b))/(y_a(-cosx_b+cosx_c)+y_b(-cosx_c+cosx_a)+y_c(-cosx_a+cosx_b))$

In definitiva viene fuori la soluzione:

$tan theta=(y_a(sinx_b-sinx_c)+y_b(sinx_c-sinx_a)+y_c(sinx_a-sinx_b))/(y_a(-cosx_b+cosx_c)+y_b(-cosx_c+cosx_a)+y_c(-cosx_a+cosx_b))$

$A=(y_a-y_b)/(sin(x_a+theta)-sin(x_b+theta))$

$B=(y_b*sin(x_a+theta)-y_a*sin(x_b+theta))/(sin(x_a+theta)-sin(x_b+theta))$

In virtù del detto "fidarsi è bene ma...", sarà il caso di controllare !

desko
"silvano38":
In virtù del detto "fidarsi è bene ma...", sarà il caso di controllare !

Torna tutto ed è tremendamente semplice, soprattutto rispetto al mio procedimento.
Mi chiedo come abbia fatto a non pensarci...

Ancora grazie mille.

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