[PYTHON] Differenzierung im Computer

Referenz: [Deep Learning von Grund auf neu (S. 98 4.3.1)](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82 % 89% E4% BD% 9C% E3% 82% 8BDeep-Learning-% E2% 80% 95Python% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82% A3% E3% 83% BC% E3% 83% 97% E3% 83% A9% E3% 83% BC% E3% 83% 8B% E3% 83% B3% E3% 82% B0% E3% 81% AE% E7% 90% 86% E8% AB% 96% E3% 81% A8% E5% AE% 9F% E8% A3% 85-% E6% 96% 8E% E8% 97% A4-% E5% BA% B7% E6% AF% 85 / dp / 4873117585)

Was soll ich tun, wenn ich die Funktion f am x-Punkt unterscheiden möchte? Wenn Sie versuchen, wie die mathematische Formel zu berechnen, ist dies wie folgt.

> Ideal, wenn diese Berechnung durchgeführt werden kann
> Aber wegen Rundungsfehler np.fload32(10e-50)=0.Es wird 0 sein.
def numerical_diff(f, x):
  h = 10e-50
  return ( f(x+h) - f(x) ) / h

Gehen Sie also wie folgt vor.

def numerical_diff(f, x):
  h = 1e-4 # 0.00001
  return ( f(x+h) - f(x) ) / h

In diesem Fall beträgt die Differenz zwischen x Punkten und (x + h / 2) Punkten jedoch 0,00001. Es wird die Unterscheidung des Punktes (x + 0,000005) zwischen ihnen sein. Da der Unterschied zwischen x und x + h nicht minimiert wurde, gibt es einen Unterschied. Es kann nicht gesagt werden, dass es sich um eine Differenzierung am Punkt x handelt. Das Folgende ist die Differenzierung der Funktion f am x-Punkt.

def numerical_diff(f, x):
  h = 1e-4 # 0.00001
  return ( f(x+h) - f(x-h) ) / (2*h)

Das Finden der Differenzierung durch die Differenz, wenn ein Minutenwert angegeben wird, wird übrigens als numerische Differenzierung bezeichnet.

Bonus: Wie viel Unterschied macht es?

import numpy as np
import matplotlib.pylab as plt

def function(x):
  return 0.01*x**2 + 0.1*x

def nd1(f, x):
  h = 1e-4 # 0.00001
  return ( f(x+h) - f(x) ) / h

def nd2(f, x):
  h = 1e-4 # 0.00001
  return ( f(x+h) - f(x-h) ) / (2*h)

#0 in wahrer Differenzierung.2,0.Es wird 3 sein. Je näher es ist, desto besser.
#Für nd1
print(nd1(function, 5))  # => 0.20000099999917254
print(nd1(function, 10)) # => 0.3000009999976072
#Für nd2
print(nd2(function, 5))  # => 0.1999999999990898
print(nd2(function, 10)) # => 0.2999999999986347

Recommended Posts

Differenzierung im Computer
Lesen Sie "Quantencomputer hergestellt in 14 Tagen". Dritter Tag
Lesen Sie "Quantencomputer hergestellt in 14 Tagen". Erster Tag