Minha maneira preferida de aproximar uma derivada é a diferença central, é mais precisa do que a diferença direta ou a reversa, e estou com preguiça de ir em uma ordem superior. Mas a diferença central requer um ponto de dados em cada lado do ponto que você está avaliando. Normalmente, isso significa que você acaba não tendo uma derivada em nenhum dos pontos de extremidade. Para resolvê-lo, quero que você mude para a diferença para frente e para trás nas bordas:
Especificamente, quero que você use uma diferença para a frente no primeiro ponto, uma diferença para trás no último ponto e uma diferença central para todos os pontos no meio. Além disso, você pode assumir que os valores x estão espaçados igualmente e se concentrar apenas em y. Use estas fórmulas:
Boa sorte, estou ansioso para ver se alguém cria uma regra simples que reproduza todos os três derivados nos lugares certos!
ENTRADA EX:
0.034 9.62 8.885 3.477 2.38
Usarei FD, CD e BD para indicar qual algoritmo usar em qual ponto, portanto, acima de 5 pontos são usados para aproximar derivadas usando
FD CD CD CD BD
E os valores calculados seriam:
9.586 4.4255 -3.0715 -3.2525 -1.097
Você pode assumir que sempre haverá pelo menos 3 pontos de entrada e pode calcular usando precisão simples ou dupla.
E, como sempre, a resposta mais curta vence.
[a,b,c,d,e] -> [b-a,(c-a)/2,(d-b)/2,(e-c)/2,e-d]
. Pode haver menos que 3 pontos de entrada?