Polinomiale 4 ordine
Buongiorno a tutti,
sono alle prese con un dubbio. Su excel ho un grafico di accelerazione di una macchina alla quale poi ho aggiunto una linea di tendenza, e quella che più la approssima è una polinomiale del 4 ordine con questa equazione: y = 3E-07x4 - 6E-05x3 + 0.0028x2 + 0.0501x - 0.117
Volevo sapere da voi se era possibile, e eventuale come si ricavano quei valori numerici dei coefficienti !
Grazie mille a tutti per l'interesse.
A presto,
Luca Lazzaretti
sono alle prese con un dubbio. Su excel ho un grafico di accelerazione di una macchina alla quale poi ho aggiunto una linea di tendenza, e quella che più la approssima è una polinomiale del 4 ordine con questa equazione: y = 3E-07x4 - 6E-05x3 + 0.0028x2 + 0.0501x - 0.117
Volevo sapere da voi se era possibile, e eventuale come si ricavano quei valori numerici dei coefficienti !
Grazie mille a tutti per l'interesse.
A presto,
Luca Lazzaretti
Risposte
Beh, $3*10^(-7) \approx 0 \approx -6*10^(-5)$, quindi i primi due termini li puoi bellamente trascurare. 
I valori si calcolano con metodi di approssimazione polinomiale classici, tipo metodo dei minimi quadrati.
Nella documentazione della function di MatLab che usi dovrebbe esserci scritto che metodo usa per fare i conti: vedi in helpdesk (o come si chiama... Sono secoli che non uso MatLab).

I valori si calcolano con metodi di approssimazione polinomiale classici, tipo metodo dei minimi quadrati.
Nella documentazione della function di MatLab che usi dovrebbe esserci scritto che metodo usa per fare i conti: vedi in helpdesk (o come si chiama... Sono secoli che non uso MatLab).
"gugo82":
Beh, $3*10^(-7) \approx 0 \approx -6*10^(-5)$, quindi i primi due termini li puoi bellamente trascurare.
I valori si calcolano con metodi di approssimazione polinomiale classici, tipo metodo dei minimi quadrati.
Nella documentazione della function di MatLab che usi dovrebbe esserci scritto che metodo usa per fare i conti: vedi in helpdesk (o come si chiama... Sono secoli che non uso MatLab).
Purtroppo non ho Matlab in questo pc.
Pero non capisco davvero come Excel ricava quei valori di coefficienti . Tanto ho in ingresso solo dati di accelerazione e tempo.
Sto provando in tutti i modi ma non riesco.
Ho provato a fare altro tentativo ricavando i valori da questo sito, h t t p://utenti.quipo.it/base5/numeri/equasolutore4.html
e sostituendoli nella mia equazione ma non trovo il valore di acc max che ho nel grafico.
Scusa, non so perché ma ero convinto usassi MatLab...
Ad ogni buon conto, supponendo di lasciar perdere termini di grado elevato e limitandoci a cercare un’interpolante di secondo grado $f(x) = a x^2 + b x + c$, puoi ricondurre il problema di interpolazione alla risoluzione di un sistema lineare nelle incognite $a,b,c$:
\[
\begin{cases}
\sum_i x_i^2\ a + \sum_i x_i\ b + \sum_i 1\ c = \sum_i y_i \\
\sum_i x_i^3\ a + \sum_i x_i^2\ b + \sum_i x_i\ c = \sum_i x_i y_i \\
\sum_i x_i^4\ a + \sum_i x_i^3\ b + \sum_i x_i^2\ c = \sum_i x_i^2 y_i
\end{cases}
\]
in cui $(x_i, y_i)$ per $i=1, \ldots , n$ sono le coordinate degli $n$ punti da interpolare e le somme sono estese a tutti i possibili valori di $i$.
Le equazioni vengono fuori minimizzando la funzione convessa che fornisce l’errore quadratico, i.e. $E(a,b,c) := sum_i [ y_i - (a x_i^2 + b x_i + c) ]^2$.
I dettagli li puoi cercare in rete.
Ad ogni buon conto, supponendo di lasciar perdere termini di grado elevato e limitandoci a cercare un’interpolante di secondo grado $f(x) = a x^2 + b x + c$, puoi ricondurre il problema di interpolazione alla risoluzione di un sistema lineare nelle incognite $a,b,c$:
\[
\begin{cases}
\sum_i x_i^2\ a + \sum_i x_i\ b + \sum_i 1\ c = \sum_i y_i \\
\sum_i x_i^3\ a + \sum_i x_i^2\ b + \sum_i x_i\ c = \sum_i x_i y_i \\
\sum_i x_i^4\ a + \sum_i x_i^3\ b + \sum_i x_i^2\ c = \sum_i x_i^2 y_i
\end{cases}
\]
in cui $(x_i, y_i)$ per $i=1, \ldots , n$ sono le coordinate degli $n$ punti da interpolare e le somme sono estese a tutti i possibili valori di $i$.
Le equazioni vengono fuori minimizzando la funzione convessa che fornisce l’errore quadratico, i.e. $E(a,b,c) := sum_i [ y_i - (a x_i^2 + b x_i + c) ]^2$.
I dettagli li puoi cercare in rete.
Non riesco a trovare nulla online di così ben dettagliato..
Mi potresti dare le formule nel caso in cui tengo conto anche dei primi due termini di grado elevato?
Tanto uso Excel per i calcoli quindi mi vengono semplici
Saluti,
Luca Lazzaretti
Mi potresti dare le formule nel caso in cui tengo conto anche dei primi due termini di grado elevato?
Tanto uso Excel per i calcoli quindi mi vengono semplici
Saluti,
Luca Lazzaretti
Si tratta di minimizzare l’errore con una funzione di cinque variabili:
\[
E(a,b,c,d,e):= \sum_i \Big[ y_i - (a x_i^4 + b x_i^3 + c x_i^2 + d x_i + e)\Big]^2
\]
in cui la somma è estesa a tutti gli indici $i=1, \ldots , n$ con $n >= 5$.
\[
E(a,b,c,d,e):= \sum_i \Big[ y_i - (a x_i^4 + b x_i^3 + c x_i^2 + d x_i + e)\Big]^2
\]
in cui la somma è estesa a tutti gli indici $i=1, \ldots , n$ con $n >= 5$.
"gugo82":
Si tratta di minimizzare l’errore con una funzione di cinque variabili:
\[
E(a,b,c,d,e):= \sum_i \Big[ y_i - (a x_i^4 + b x_i^3 + c x_i^2 + d x_i + e)\Big]^2
\]
in cui la somma è estesa a tutti gli indici $i=1, \ldots , n$ con $n >= 5$.
Perfetto, allora era come pensavo, il problema risulta essere con Excel.
Sapete per caso se ci sono modifiche che posso apportare, alla "linea di tendenza", oltre al rendere le unità più simili possibili?
Perché nel caso che riporto qui in immagine, la mia linea di tendenza non mi da in uscita i dati corretti.
non so come fare a trovare l'equazione della curva..
Una versione equivalente di quello che dice gugo è la seguente: scrivi l'equazione
\[
ax^4 + bx^3 +cx^2 + dx + e = y,
\]
per ogni punto che hai, dove \(x\) e \(y\) sono le coordinate di ciascun punto.
Mettendo tutte queste equazioni insieme ottieni un sistema lineare \(A \mathbf{x} = \mathbf{b}\) fatto così:
\[
A \underbrace{\begin{pmatrix}a \\ b \\ c \\ d \\ e \end{pmatrix}}_{\mathbf{x}} = \mathbf{b}
\]
dove \(A\) contiene le ascisse dei punti elevate a varie potenze e \(b\) contiene le ordinate.
A questo punto devi risolvere il sistema lineare
\[
A^T A \mathbf{x} = A^T \mathbf{b}
\]
e la soluzione sono i tuoi coefficienti \(a,b,c,d,e\).
\[
ax^4 + bx^3 +cx^2 + dx + e = y,
\]
per ogni punto che hai, dove \(x\) e \(y\) sono le coordinate di ciascun punto.
Mettendo tutte queste equazioni insieme ottieni un sistema lineare \(A \mathbf{x} = \mathbf{b}\) fatto così:
\[
A \underbrace{\begin{pmatrix}a \\ b \\ c \\ d \\ e \end{pmatrix}}_{\mathbf{x}} = \mathbf{b}
\]
dove \(A\) contiene le ascisse dei punti elevate a varie potenze e \(b\) contiene le ordinate.
A questo punto devi risolvere il sistema lineare
\[
A^T A \mathbf{x} = A^T \mathbf{b}
\]
e la soluzione sono i tuoi coefficienti \(a,b,c,d,e\).
@Raptorista: Il metodo che proponi non è equivalente a quello che ho proposto io più sopra, anzi è del tutto differente perché risolve (quando funziona) un altro problema.
In particolare, il metodo dei minimi quadrati risolve un problema di approssimazione (o smoothing), determinando una curva "liscia" $y=f(x)$ (con $f$ di forma assegnata) che approssima alla meglio l'andamento di una distribuzione di dati sperimentali, i.e. $y_i \approx f(x_i)$ per ogni $i$, secondo un criterio stabilito (minimizza l'errore quadratico degli scarti).
Quello proposto da te, invece, risolve un problema di interpolazione, in cui si cerca una curva "liscia" $y=f(x)$ (con $f$ di forma assegnata) che passi esattamente attraverso tutti i punti di una distribuzione di dati sperimentali, i.e. tale che $y_i=f(x_i)$ per ogni $i$.
Ora accade che il secondo problema, cioè quello dell'interpolazione, in generale non ha alcuna soluzione (e.g., ciò accade quando si hanno due coppie di dati $(x_1, y_1), (x_2,y_2)$ con $x_1=x_2$ e $y_1!=y_2$, oppure -a parte botte di culo colossali!- quando il numero $n$ di dati è superiore al grado $k$ del polinomio interpolante $f$), o, se ce l'ha, la soluzione fa schifissimo tra un punto della distribuzione ed il successivo (nel senso che oscilla troppo: è il fenomeno di Runge).
Per questo motivo, come curve interpolanti si usano curve polinomiali solo a tratti (come le spline) ed in genere si lasciano perdere i polinomi.
D'altro canto, il metodo dei minimi quadrati, che, fondamentalmente, è un problema di minimo libero per una funzione strettamente convessa e coercitiva, ha sempre una sola soluzione. Questo pregio, però, lo si paga perdendo l'uguaglianza puntuale $y_i=f(x_i)$ che diventa solo un'approssimazione $y_i\approx f(x_i)$.
*** EDIT:
Ho scritto una cavolata, perché ho letto male il post di Raptorista (al quale vanno le mie scuse) e ne ho travisato le intenzioni.
Il sistema che lui propone di risolvere, i.e. $A^t A x = A^t y$, è la formulazione matriciale del sistema che fornisce il punto critico della funzione errore $E$ che proponevo sopra.
Ad ogni buon conto, è importante che lo OP riconosca la differenza tra interpolazione ed approssimazione. Se lo OP sfrutta un metodo di minimi quadrati per risolvere il problema, è evidente che va incontro a difficoltà tipiche del procedimento, i.e. al fatto che la curva approssimante i dati sia, per l'appunto, una curva approssimante e non interpolante.
In particolare, il metodo dei minimi quadrati risolve un problema di approssimazione (o smoothing), determinando una curva "liscia" $y=f(x)$ (con $f$ di forma assegnata) che approssima alla meglio l'andamento di una distribuzione di dati sperimentali, i.e. $y_i \approx f(x_i)$ per ogni $i$, secondo un criterio stabilito (minimizza l'errore quadratico degli scarti).
Quello proposto da te, invece, risolve un problema di interpolazione, in cui si cerca una curva "liscia" $y=f(x)$ (con $f$ di forma assegnata) che passi esattamente attraverso tutti i punti di una distribuzione di dati sperimentali, i.e. tale che $y_i=f(x_i)$ per ogni $i$.
Ora accade che il secondo problema, cioè quello dell'interpolazione, in generale non ha alcuna soluzione (e.g., ciò accade quando si hanno due coppie di dati $(x_1, y_1), (x_2,y_2)$ con $x_1=x_2$ e $y_1!=y_2$, oppure -a parte botte di culo colossali!- quando il numero $n$ di dati è superiore al grado $k$ del polinomio interpolante $f$), o, se ce l'ha, la soluzione fa schifissimo tra un punto della distribuzione ed il successivo (nel senso che oscilla troppo: è il fenomeno di Runge).
Per questo motivo, come curve interpolanti si usano curve polinomiali solo a tratti (come le spline) ed in genere si lasciano perdere i polinomi.
D'altro canto, il metodo dei minimi quadrati, che, fondamentalmente, è un problema di minimo libero per una funzione strettamente convessa e coercitiva, ha sempre una sola soluzione. Questo pregio, però, lo si paga perdendo l'uguaglianza puntuale $y_i=f(x_i)$ che diventa solo un'approssimazione $y_i\approx f(x_i)$.
*** EDIT:
Ho scritto una cavolata, perché ho letto male il post di Raptorista (al quale vanno le mie scuse) e ne ho travisato le intenzioni.
Il sistema che lui propone di risolvere, i.e. $A^t A x = A^t y$, è la formulazione matriciale del sistema che fornisce il punto critico della funzione errore $E$ che proponevo sopra.
Ad ogni buon conto, è importante che lo OP riconosca la differenza tra interpolazione ed approssimazione. Se lo OP sfrutta un metodo di minimi quadrati per risolvere il problema, è evidente che va incontro a difficoltà tipiche del procedimento, i.e. al fatto che la curva approssimante i dati sia, per l'appunto, una curva approssimante e non interpolante.
Riporto qui l'esercizio di mio interesse, dove evidenzio i valori riportati nel grafico.
Rappresentano i dati in uscita da una macchina a CN che sto analizzando per valutare differenze tra caso reale e quello pratico. Sul grafico stesso è riportata l'equazione polinomiale di 4°ordine che dovrebbe approssimare quanto meglio la curva dell'accelerazione, ma sostituendoci dentro i valori, i risultati non combaciano.
Sto forse commettendo io un errore che mi sta sfuggendo?
Rappresentano i dati in uscita da una macchina a CN che sto analizzando per valutare differenze tra caso reale e quello pratico. Sul grafico stesso è riportata l'equazione polinomiale di 4°ordine che dovrebbe approssimare quanto meglio la curva dell'accelerazione, ma sostituendoci dentro i valori, i risultati non combaciano.
Sto forse commettendo io un errore che mi sta sfuggendo?
@gugo: hai letto il mio intervento fino in fondo? Non ho mai pensato di fare un'interpolazione.
@luca: ti spiace fare almeno lo sforzo di leggere quello che stiamo scrivendo e, non dico capire, ma almeno rispondere con qualcosa di pertinente? Quel coso che hai allegato è incomprensibile in un tempo ragionevole senza una spiegazione più dettagliata.
@luca: ti spiace fare almeno lo sforzo di leggere quello che stiamo scrivendo e, non dico capire, ma almeno rispondere con qualcosa di pertinente? Quel coso che hai allegato è incomprensibile in un tempo ragionevole senza una spiegazione più dettagliata.
"Raptorista":
@gugo: hai letto il mio intervento fino in fondo? Non ho mai pensato di fare un'interpolazione.
@luca: ti spiace fare almeno lo sforzo di leggere quello che stiamo scrivendo e, non dico capire, ma almeno rispondere con qualcosa di pertinente? Quel coso che hai allegato è incomprensibile in un tempo ragionevole senza una spiegazione più dettagliata.
Non è uno sforzo per me Cercare di capire, perché è quello che sto facendo.
Ho già svolto calcoli con i metodi da voi proposti anche con ausilio di software online, senza però ottenere risultati soddisfacenti. Ora che ho il pomeriggio libero riprovo a farli con più calma.
Chiedo scusa per il file Excel precedentemente allegato, perché, sempre preso dalla fretta avevo deciso di metterlo li senza troppe spiegazioni. Ora l'ho modificato.
Nel file sono presenti dati in uscita da una macchina a CN quali: colonna dei tempi e colonna dell'accelerazione della macchina in direzione x. Il tempo non parte da zero perché prendo in considerazione solo il "tempo di rampa", cioè il tempo per passare da Velocità iniziale nulla, a velocità di lavoro.
Nel grafico è riportata l'equazione della curva che però, a seguito di una sostituzione, non riporta i valori rappresentati.
"lucalazza":
Non è uno sforzo per me Cercare di capire, perché è quello che sto facendo.
Ho già svolto calcoli con i metodi da voi proposti anche con ausilio di software online, senza però ottenere risultati soddisfacenti. Ora che ho il pomeriggio libero riprovo a farli con più calma.
Questo non è possibile: li ho appena fatti io in 3 minuti e mi viene un'approssimazione decente.
La soluzione ce l'hai, è quella che abbiamo scritto sopra.
"Raptorista":
@gugo: hai letto il mio intervento fino in fondo? Non ho mai pensato di fare un'interpolazione.
L'avevo letto, ma avevo letto $A^(-1)b$ al secondo membro. Sorry.

Ora modifico il post.
"gugo82":
L'avevo letto, ma avevo letto $A^(-1)b$ al secondo membro. Sorry.
Ora modifico il post.
No problem! L'importante è che non ho dimenticato come risolvere un problema ai minimi quadrati
