Vous êtes sur la page 1sur 5

3/10/2015

[RISOLTO]Interpolazionecubicamonotona

Pythonit.org forum # share your knowledge! ;)


Ottobre 03, 2015, 00:05

Benvenuto! Accedi o registrati.


Hai dimenticato l'email di attivazione?
Per sempre
Accedi
Accesso con nome utente, password e durata della sessione

Notizie: [15/06/10] il conteggio dei messaggi nelle


sezioni non tecniche del forum stato disabilitato

HOME

GUIDA

REGOLAMENTO

RICERCA

ACCEDI

REGISTRATI

PYTHONIT.ORG

DOC

CHAT

Ricerca

Apri il forum in una pagina a parte possibile fornire/richiedere supporto anche presso i canali IRC #python su Azzurra e
#python.it su Freenode

Pythonit.org forum>Programmazione Python>Calcolo scientifico (Moderatore: riko)>[RISOLTO] Interpolazione cubica


monotona

precedente successivo
STAMPA

Pagine: [1] Vai gi

Autore

Discussione: [RISOLTO] Interpolazione cubica monotona (Letto 662 volte)

0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.

Stemby

python
unicellularis
Livello
reputazione: 0
Scollegato
Messaggi: 22

[RISOLTO] Interpolazione cubica monotona


inserito:: Dicembre 28, 2011, 06:10

Salve,
sto cercando di ottenere un'interpolazione cubica monotona in Python.
Mi servirebbe qualcosa di simile ai metodi FritschCarlson oppure Steffen (si vedano i
grafici verso la fine di questa pagina).
Ho trovato nei sorgenti di SciPy la funzione pchip(x, y), ma non ho trovato in giro
esempi applicativi.
Scopiazzando da un esempio trovato nella documentazione di SciPy, ho provato ad
adattarlo:
leggisorgente

01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.

copianegliappunti

stampa

importnumpyasnp
#fromscipy.interpolateimportinterp1d
fromscipy.interpolate.polyintimportpchip

x=np.array([0,1,5,10])
y=np.array([24,30,450,530])
#f=interp1d(x,y)
#f2=interp1d(x,y,kind='cubic')
f=pchip(x,y)

xnew=np.linspace(0,10,40)
importmatplotlib.pyplotasplt
#plt.plot(x,y,'o',xnew,f(xnew),'',xnew,f2(xnew),'')
plt.plot(x,y,'',xnew,f(xnew),'o')
#plt.legend(['data','linear','cubic'],loc='best')
plt.show()

Non funziona: ottengo "TypeError: array cannot be safely cast to required type".
Mi sapete dare qualche dritta?
http://www.pythonit.org/forum/index.php?topic=6344.0

1/5

3/10/2015

[RISOLTO]Interpolazionecubicamonotona

Grazie!
Ultima modifica: Dicembre 28, 2011, 17:48 da
Stemby

riko

Re: Interpolazione cubica monotona

moderatore
python deus
Livello
reputazione: 1
Scollegato

Registrato

Risposta #1 inserito:: Dicembre 28, 2011, 11:47

Leggi la documentazione della funzione con attenzione.


Leggi il messaggio di errore e' chiarissimo.
Hai un type error che ti dice che non puo' fare un safe cast.
Hai la documentazione che ti dice che prende array di reali.

Messaggi: 6660

2 + 2 fa 4
Anzi, 2. + 2. fa circa 4.0 .
Registrato
I don't believe in the nowin scenario.
http://www.enricofranchi.org/
http://rik0techtemple.blogspot.com/

Stemby

Re: Interpolazione cubica monotona

python
unicellularis

Risposta #2 inserito:: Dicembre 28, 2011, 16:53

Ciao riko, grazie per la risposta.


Livello
reputazione: 0
Scollegato
Messaggi: 22

Citazione di: riko Dicembre 28, 2011, 11:47

Leggi la documentazione della funzione con attenzione.

Fatto. L'unico passaggio che non mi chiarissimo questo:


Citazione

y's length along the interpolation axis must be equal to the length of x.

Citazione

Leggi il messaggio di errore e' chiarissimo.

Qui invece sono pi in difficolt: sinceramente non riesco a capirne appieno il senso.

Citazione

Hai un type error che ti dice che non puo' fare un safe cast.

Che cos' un safe cast?

Citazione

Hai la documentazione che ti dice che prende array di reali.

Questo l'avevo letto.

Citazione

2 + 2 fa 4

Ok.
http://www.pythonit.org/forum/index.php?topic=6344.0

2/5

3/10/2015

[RISOLTO]Interpolazionecubicamonotona

Citazione

Anzi, 2. + 2. fa circa 4.0 .

Mmmm... probabilmente mi sfugge qualcosa sul funzionamento di NumPy, mai usato


prima d'ora; davo per scontato che "2." fosse un float (e in effetti mi chiedevo perch
usasse questa strana sintassi) ma evidentemente non cos. Cosa significa
"upcasting"?
Grazie ancora per la pazienza
Registrato

Stemby

Re: Interpolazione cubica monotona

python
unicellularis
Livello
reputazione: 0
Scollegato

Risposta #3 inserito:: Dicembre 28, 2011, 17:44

Risolto leggendomi un tutorial su NumPy


Ecco l'esempio di prima, riveduto, corretto e ripulito:

Messaggi: 22

leggisorgente

01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.

copianegliappunti

stampa

importnumpyasnp
fromscipy.interpolate.polyintimportpchip

x=np.array([0,1,5,8,10])
y=np.array([24,30,450,300,530],float)
f=pchip(x,y)

xnew=np.linspace(0,10,40)
importmatplotlib.pyplotasplt
plt.plot(x,y,'',xnew,f(xnew),'o')
plt.show()

Grazie ancora!
Ultima modifica: Dicembre 29, 2011, 14:14 da
Stemby

riko

Registrato

Re: Interpolazione cubica monotona

moderatore
python deus

Risposta #4 inserito:: Dicembre 29, 2011, 01:47

Bravo!
Livello
reputazione: 1

In realta' bastava

Scollegato
Messaggi: 6660

leggisorgente

01.
02.

copianegliappunti

stampa

x=np.array([0.,1,5,8,10])
y=np.array([24.,30,450,300,530])

da cui il mio criptico suggerimento. Castare da int a float e' non safe, perche' c'e'
perdita di precisione, tutto qui.
Registrato
I don't believe in the nowin scenario.
http://www.pythonit.org/forum/index.php?topic=6344.0

3/5

3/10/2015

[RISOLTO]Interpolazionecubicamonotona

http://www.enricofranchi.org/
http://rik0techtemple.blogspot.com/

Stemby

Re: Interpolazione cubica monotona

python
unicellularis

Risposta #5 inserito:: Dicembre 29, 2011, 14:08


Citazione di: riko Dicembre 29, 2011, 01:47

Livello
reputazione: 0
Scollegato

Bravo!

Grazie

Messaggi: 22
Citazione

da cui il mio criptico suggerimento.

S, diciamocelo chiaramente che era piuttosto criptico

Aggiungo solo che i valori sull'asse x si possono tranquillamente lasciare interi:


leggisorgente

01.
02.

copianegliappunti

stampa

x=np.array([0,1,5,8,10])
y=np.array([24,30,450,300,530],float)

Sistemo anche l'esempio sopra, cos rimane pi pulito.


Ciao!
Ultima modifica: Dicembre 29, 2011, 14:12 da
Stemby

riko

moderatore
python deus

Registrato

Re: Interpolazione cubica monotona

Risposta #6 inserito:: Dicembre 30, 2011, 11:59

Criptico e' bene!


Livello
reputazione: 1
Scollegato

Comunque si, i valori non devono essere fp, perche' non prova a calcolarci la
derivata.
Non ci fa praticamente nulla, in realta'.

Messaggi: 6660

Registrato
I don't believe in the nowin scenario.
http://www.enricofranchi.org/
http://rik0techtemple.blogspot.com/

STAMPA
precedente successivo

Pagine: [1] Vai su

Vai a: => Calcolo scientifico

vai

PoweredbySMF1.1.18|SMF20062009,SimpleMachines
http://www.pythonit.org/forum/index.php?topic=6344.0

4/5

3/10/2015

http://www.pythonit.org/forum/index.php?topic=6344.0

[RISOLTO]Interpolazionecubicamonotona

5/5