Ricavare l'equazione di una curva
Ciao a tutti,
vi scrivo per il seguente problema:
ho un set di dati organizzati in 2 colonne, ad ogni X corrisponde la rispettiva Y.
Devo ricavare l'equazione della curva che descrive questa relazione.
Si tratta di valori relativi ad un legame cinematico, con andamento non lineare, lo si nota subito osservando i valori.
Mi sapreste indicare una via semplice per risolvere il problema?
Immagino che sia necessario usare un solutore, cosa consigliate?
Grazie.
Luca
vi scrivo per il seguente problema:
ho un set di dati organizzati in 2 colonne, ad ogni X corrisponde la rispettiva Y.
Devo ricavare l'equazione della curva che descrive questa relazione.
Si tratta di valori relativi ad un legame cinematico, con andamento non lineare, lo si nota subito osservando i valori.
Mi sapreste indicare una via semplice per risolvere il problema?
Immagino che sia necessario usare un solutore, cosa consigliate?
Grazie.
Luca
Risposte
Non credo di aver capito bene. Il tuo è un problema di interpolazione?
Scusami, cerco di rispiegarmi con un esempio.
Avendo questi dati sperimentali:
X Y
2 1000
3 980
4 930
5 860
6 750
7 620
8 460
9 270
10 70
Come faccio a ricavare l'equazione matematica che governa questo fenomeno?
Avendo questi dati sperimentali:
X Y
2 1000
3 980
4 930
5 860
6 750
7 620
8 460
9 270
10 70
Come faccio a ricavare l'equazione matematica che governa questo fenomeno?
Mi spiace informarti che è improprio l'uso dell'articolo determinativo in "l'equazione matematica": infatti di funzioni che passano per i punti di coordinate $(X,Y)$ che riporti ce ne sono infinite.
Quindi il problema è mal posto, perchè i dati (rappresentati nella figura seguente) non determinano la soluzione in modo univoco.
[asvg]xmin=0;xmax=10;ymin=0;ymax=10;
axes("labels","grid");
dot([2,10]);
dot([3,9.8]);
dot([4,9.3]);
dot([5,8.6]);
dot([6,7.5]);
dot([7,6.2]);
dot([8,4.6]);
dot([9,2.7]);
dot([10,0.7]);[/asvg]
Sta a te decidere quale tipo di funzione vuoi e che metodo vuoi usare per fare un fitting dei dati, ovvero per trovare una curva che "approssimi" i tuoi dati.
Ad esempio, potresti usare un metodo come l'interpolazione di Newton, che ti fornirebbe un polinomio in $X$ di grado pari al numero di punti $-1$ (in questo caso di grado $8$) il cui grafico passa esattamente per i tuoi punti.
Oppure potresti usare il metodo delle spline cubiche, che ti fornirebbe una spline (ossia una funzione che a tratti coincide con un polinomio di terzo grado) il cui grafico passa esattamente per i tuoi punti.
O ancora, potresti usare un metodo di tipo minimi quadrati, che ti fornirebbe un polinomio di secondo grado (ossia una parabola) che non passa esattamente per i tuoi punti, ma minimizza l'errore che si commette approssimando ognuno dei tuoi punti col punto corrispondente sulla parabola...
Forse (soprattutto se devi fare un fitting per esperienze di laboratorio, tipo moto uniformemente accelerato o simili) conviene il metodo dei minimi quadrati.
Quindi il problema è mal posto, perchè i dati (rappresentati nella figura seguente) non determinano la soluzione in modo univoco.
[asvg]xmin=0;xmax=10;ymin=0;ymax=10;
axes("labels","grid");
dot([2,10]);
dot([3,9.8]);
dot([4,9.3]);
dot([5,8.6]);
dot([6,7.5]);
dot([7,6.2]);
dot([8,4.6]);
dot([9,2.7]);
dot([10,0.7]);[/asvg]
Sta a te decidere quale tipo di funzione vuoi e che metodo vuoi usare per fare un fitting dei dati, ovvero per trovare una curva che "approssimi" i tuoi dati.
Ad esempio, potresti usare un metodo come l'interpolazione di Newton, che ti fornirebbe un polinomio in $X$ di grado pari al numero di punti $-1$ (in questo caso di grado $8$) il cui grafico passa esattamente per i tuoi punti.
Oppure potresti usare il metodo delle spline cubiche, che ti fornirebbe una spline (ossia una funzione che a tratti coincide con un polinomio di terzo grado) il cui grafico passa esattamente per i tuoi punti.
O ancora, potresti usare un metodo di tipo minimi quadrati, che ti fornirebbe un polinomio di secondo grado (ossia una parabola) che non passa esattamente per i tuoi punti, ma minimizza l'errore che si commette approssimando ognuno dei tuoi punti col punto corrispondente sulla parabola...
Forse (soprattutto se devi fare un fitting per esperienze di laboratorio, tipo moto uniformemente accelerato o simili) conviene il metodo dei minimi quadrati.
Gugo82,
ti ringrazio per la risposta e anche per la "tirata di orecchie"...
Dunque devo scegliere un metodo per creare una curva approssimante, che "inventi" la sua traiettoria nei punti non assegnati.
Ho vaghissime reminescenze di queste cose (esame di Calcolo Numerico con Scilab).... dovrei usare Scilab?
Secondo te è un lavoro complicato?
Grazie.
ti ringrazio per la risposta e anche per la "tirata di orecchie"...
Dunque devo scegliere un metodo per creare una curva approssimante, che "inventi" la sua traiettoria nei punti non assegnati.
Ho vaghissime reminescenze di queste cose (esame di Calcolo Numerico con Scilab).... dovrei usare Scilab?
Secondo te è un lavoro complicato?
Grazie.
Qualche idea?
Prova con qualche software numerico.
Certo si potrebbe fare anche a mano, però è un po' lunga la cosa e non mi ricordo bene il procedimento (anch'io ho fatto Calcolo Numerico anni fa...
).
Ad ogni modo, consiglierei un approccio tipo minimi quadrati se non ti interessa necessariamente "passare" per i punti; altrimenti consiglierei spline cubiche.
Certo si potrebbe fare anche a mano, però è un po' lunga la cosa e non mi ricordo bene il procedimento (anch'io ho fatto Calcolo Numerico anni fa...

Ad ogni modo, consiglierei un approccio tipo minimi quadrati se non ti interessa necessariamente "passare" per i punti; altrimenti consiglierei spline cubiche.