27.1_sin函数的实现

27.1 sin函数的实现

sin\sin 函数的导数能够以解析方式求出。若 y=sin(x)y = \sin (x) ,其导数就为 yx=cos(x)\frac{\partial y}{\partial x} = \cos (x) 。因此,Sin类和sin函数可以按如下方式实现。

steps/step27.py

import numpy as np   
fromdezero import Function   
class Sin(Functions): def forward(self,x): y = np.sin(x) return y def backward(self,gy): x = selfinputs[0].data gx  $=$  gy \* np.cos(x) returngx   
defsin(x): return Sin()x

上面的代码利用NumPy内置的np.sin函数和np.cos函数轻松地完成了实现。这样一来,我们就能在DeZero中使用sin函数进行计算了。下面是计算在 x=π4x = \frac{\pi}{4}y=sin(x)y = \sin (x) 的导数的代码示例。

steps/step27.py

fromdezeroimportVariable   
 $\mathbf{x} =$  Variable(np.array(np.pi/4))   
y  $=$  sin(x)   
y.backup()   
print(y.data)   
print(x.grad)

运行结果

0.7071067811865476

0.7071067811865476

计算得到的y的值和x的导数均为0.7071067811865476。这个值约等于 1np.sqrt(2)\frac{1}{\mathrm{np.sqrt}(2)} (即 12\frac{1}{\sqrt{2}} )。由 sin(π4)=cos(π4)=12\sin \left(\frac{\pi}{4}\right) = \cos \left(\frac{\pi}{4}\right) = \frac{1}{\sqrt{2}} 可知,计算结果是正确的。