Bei der Differenzierung durch Programmierung ist die zentrale Differenz der Vorwärtsdifferenz vorzuziehen. Der Grund ist, dass der Mittendifferenz weniger Fehler aufweist.
import numpy as np
#Vorwärtsdifferenz
def numerical_diff_forward(f,x):
h = 1e-4
return (f(x+h) - f(x)) / h
#Zentraler Unterschied
def numerical_diff_center(f,x):
h = 1e-4
return (f(x+h) - f(x-h)) / (h*2)
np.float32(1e-3)
def function(x):
return 0.01*x**2+0.1*x
print(abs(0.2 - numerical_diff_forward(function,5)))
print(abs(0.2 - numerical_diff_center(function,5)))
#9.999991725240243e-07
#9.102163467389346e-13
Referenz [Deep Learning von Grund auf neu - die Theorie und Implementierung des in Python erlernten Deep Learning]
Recommended Posts