Il mio modo preferito per approssimare una derivata è la differenza centrale, è più accurata della differenza in avanti o della differenza all'indietro, e sono troppo pigro per passare all'ordine superiore. Ma la differenza centrale richiede un punto dati su entrambi i lati del punto che si sta valutando. Normalmente questo significa che non si ottiene una derivata su entrambi gli endpoint. Per risolverlo, voglio che passi alla differenza avanti e indietro ai bordi:
In particolare, voglio che tu usi una differenza in avanti per il primo punto, una differenza all'indietro per l'ultimo punto e una differenza centrale per tutti i punti nel mezzo. Inoltre, puoi presumere che i valori di x siano equidistanti e che si concentrino solo su y. Usa queste formule:
Buona fortuna, non vedo l'ora di vedere se qualcuno troverà una semplice regola che riproduce tutti e 3 i derivati nei posti giusti!
INGRESSO EX:
0.034 9.62 8.885 3.477 2.38
Userò FD, CD e BD per indicare l'algoritmo da utilizzare in quale punto, quindi sopra i 5 punti vengono usati per approssimare i derivati usando
FD CD CD CD BD
E quindi i valori calcolati sarebbero:
9.586 4.4255 -3.0715 -3.2525 -1.097
Puoi presumere che ci saranno sempre almeno 3 punti di input e puoi calcolare usando la precisione singola o doppia.
E come sempre, la risposta più breve vince.
[a,b,c,d,e] -> [b-a,(c-a)/2,(d-b)/2,(e-c)/2,e-d]. Possono esserci meno di 3 punti di input?
