深度学习入门——数值微分,求导数

# coding: utf-8
import numpy as np
import matplotlib.pylab as plt


# ------------------定义微分函数-------------------------------------------------------------
def numerical_diff(f, x):
    h = 1e-04 # 0.0001 利用极小值,但不能产生舍入误差
    return (f(x + h) - f(x - h)) / (2 * h) # 利用中心微分,减小误差


# ---------------------------定义 y=0.01x^2+0.1x 函数----------------------------------------
def function_1(x):
    return 0.01 * x ** 2 + 0.1 * x


# -------------------------定义切线导数-------------------------------------------------------
def tangent_line(f, x):
    d = numerical_diff(f, x) # function_1不打括号则直接返回函数
    print(d)
    b = f(x) - d * x # 与y轴的交点
    return lambda t: d*t + b # 切线函数,t为参量


# ------------------------画图------------------------------------------------------------------
"""注意:tangent_line函数在画图时,调用numerical_diff函数是为了求得导数,故不能将数组x带入function_1中"""
x = np.arange(0, 20, 0.1)

y = function_1(x)
plt.plot(x, y)
plt.xlabel('x', fontsize=14)
plt.ylabel('f(x)', fontsize=14)
plt.title('y=0.01x^2+0.1x')


tf = tangent_line(function_1, 5) # 返回的函数还缺少参量t
y2 = tf(x) # 赋值参量t
plt.plot(x, y2)

tf2 = tangent_line(function_1, 10)
y3 = tf2(x)
plt.plot(x, y3)

plt.show()

在这里插入图片描述

tf = tangent_line(function_1, 5) # 返回的函数还缺少参量t
y2 = tf(x) # 赋值参量t
  • 这段代码很重要,不能采用function_1(x),因为x为数组,而这里得函数要在特定点求导数
  • tf获得函数形式
  • y2 = tf(x): 还需要给函数的参量t赋值形成图形
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值