Re: Interpolazioni

From: Paolo Russo <paolrus_at_libero.it>
Date: Fri, 30 Aug 2002 22:04:50 GMT

[Ugo Bottari:]
>Ponendo A=61.8 (un valore intermedio fra il 50 e l'80 dell'esempio
>soprastante) quanto vale P ?

La domanda e` indeterminata. C'e` un'infinita` di curve che
passa per i punti assegnati. Certo a fini di interpolazione
alcune sono migliori di altre, ma non credo si possa dire che
ce n'e` una migliore di ogni altra, se prima non si da` una
definizione esatta di cosa voglia dire "migliore".

>Probabilmente mi sarebbe sufficiente capire se si tratta di un
>problema di
>risoluzione di equazioni lineari.

Questo dipende da te. SE sei convinto per ragioni teoriche
che la legge dietro quei punti sia una retta, allora puoi
trovare la retta che minimizza lo scarto quadratico medio tra
lei stessa e i punti assegnati. Se chiamiamo (x1,y1)
(x2,y2)... gli N punti assegnati nel piano cartesiano, la
retta del tipo y=mx+q che interpola meglio i dati e` data da:

m=(NSxy-SxSy)/(NSxx-SxSx)
q=(SxxSy-SxSxy)/(NSxx-SxSx)

Dove:
Sx=sommatoria per i da 1 a N di xi
Sy=sommatoria per i da 1 a N di yi
Sxx=sommatoria per i da 1 a N di (xi al quadrato)
Sxy=sommatoria per i da 1 a N di (xi per yi)

La retta e` solo un caso particolare. Se sai a priori che
tipo di legge ti aspetti di trovare, puoi usare i dati per
trovarne i parametri ottimali, quelli che minimizzano lo
scarto quadratico medio. Se invece non hai idea di che legge
si tratti, la cosa migliore da fare e` interpolare tra coppie
di punti con curve ad hoc. In questo caso, pero`, penso che
tu debba almeno partire dal presupposto che i punti sono
corretti; intendo dire che otterrai una curva che serpeggia
un po' in modo da passare esattamente per tutti i punti
assegnati. In questi casi di solito si usano le spline: se
cerchi "spline interpolation" dovresti ottenere un po' di
materiale. Il concetto generale e` di decidere a priori un
tipo di curva (es. retta, parabola, cubica) con cui collegare
ogni punto al successivo e poi ricavarne i parametri
imponendo delle restrizioni. Ogni restrizione ti da`
un'equazione di primo grado; quanto hai tante equazioni
quanti sono i parametri di quel tipo di curva devi solo
risolvere il sistema lineare di n equazioni in n incognite
per trovare i parametri della curva. Piu' complessa e` la
curva, piu' parametri ha, piu' restrizioni puoi imporre. Per
esempio una retta ha equazione y=mx+q, quindi ha solo due
parametri e tutto cio` che puoi imporre e` che passi per la
coppia di punti che ti interessa. Una parabola y=ax�+bx+c ha
tre parametri e puoi imporre, per esempio, che oltre a
passare per la coppia di punti scelta abbia anche nel primo
dei due punti la stessa pendenza con cui terminava la curva
precedente, cosi' non hai gli spigoli tipici
dell'interpolazione a segmenti di retta; comunque non credo
che questo tipo di condizione funzioni molto bene, darebbe
luogo a oscillazioni. Se usi una cubica y=ax�+bx�+cx+d hai
ben quattro parametri con cui giocare; imposto il passaggio
per la coppia di punti te ne restano due.
La volta che mi serviva fare questo tipo di interpolazione
non sono riuscito a trovare rapidamente in rete materiale
chiaro sulle spline, cosi' mi sono stufato e ho usato le
cubiche nel seguente modo: se (x1,y1), (x2,y2), (x3,y3) e
(x4,y4) sono quattro punti consecutivi, la curva che
interpola da (x2,y2) a (x3,y3) l'ho ottenuta imponendo il
passaggio per i suddetti punti: f(x2)=y2 f(x3)=y3 (ossia
y2=ax2�+bx2�+cx2+d y3=ax3�+bx3�+cx3+d) e anche imponendo
pendenze agli estremi pari alla pendenza media in quel
tratto:
f'(x2)=(y3-y1)/(x3-x1)
f'(x3)=(y4-y2)/(x4-x2)
dove f'(x) e` ovviamente y'=3ax�+2bx+c.
Per la prima e l'ultima coppia di punti non avevo una
pendenza da imporre al punto piu' esterno, quindi ho usato
una parabola, che risulta definita imponendo una condizione
in meno rispetto alla cubica. Non so se tutta questa
procedura coincida con un qualche tipo noto di spline; forse
si', forse no. Nel mio caso ha funzionato benino.

Per il resto, forse se chiedi su it.scienza.matematica ti
sanno rispondere meglio.

Ciao
Paolo Russo
Received on Sat Aug 31 2002 - 00:04:50 CEST

This archive was generated by hypermail 2.3.0 : Fri Nov 08 2024 - 05:10:32 CET