2013-08-01 7 views
7

Sto cercando di generare polinomi ortogonali in R, ma continuo a ricevere un errore non capiscoPerché `poly` si lamenta di un grado inferiore al numero di punti univoci?

> poly(1:1000, 50) 
Error in poly(1:1000, 50) : 
    'degree' must be less than number of unique points 

Sicuramente il numero di punti unici è 1000? Cosa significa? È un bug, e se così fosse qualcuno sa che lavoro?

Modifica: Questo sembra prendere il grado> 27 per un numero qualsiasi di punti - si tratta di un limite non documentato?

+3

Per curiosità, perché vuoi generare un polinomio del 50 ° ordine? Spero sinceramente che non sia per la modellazione ... – Justin

+0

No, non è per la modellazione, ma ora la metti così, mi sento meno sorpreso che non funzioni per 50! Ero così assorto in quello che stavo facendo e mi sono dimenticato di quello che la maggior parte delle persone probabilmente usa per questa funzione. (È un po 'complicato da spiegare brevemente, ma si tratta di generare funzioni analitiche casuali su un intervallo) – Corone

risposta

12

Overflow numerico. Se si guarda il codice per poly, vedrete che sta generando i singoli termini polinomiali come un passaggio intermedio:

X <- outer(x, seq_len(n) - 1, "^") 

e quando n (il grado del polinomio che si desidera) è 50, i termini risultanti vanno fino a 1e132.

+0

Great thanks - Non posso lamentarmi, come Justin ha sottolineato sopra, questo non è proprio l'utilizzo di destinazione per questa funzione ! – Corone

Problemi correlati