weixin_51543864
weixin_51543864
采纳率0%
2021-05-04 17:19

Python得到函数切线问题

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


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


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


def tangent_line(f, x):
    d = numerical_diff(f, x)
    print(d)
    y = f(x) - d*x
    return lambda t: d*t + y
     
x = np.arange(0.0, 20.0, 0.1)
y = function_1(x)
plt.xlabel("x")
plt.ylabel("f(x)")

tf = tangent_line(function_1, 5)
y2 = tf(x)

plt.plot(x, y)
plt.plot(x, y2)
plt.show()
想请问一下这里的切线方程是怎么得到的为什么
def tangent_line(f, x):
    d = numerical_diff(f, x)
    print(d)
    y = f(x) - d*x
    return lambda t: d*t + y

加上

tf = tangent_line(function_1, 5)
y2 = tf(x)

就能得到切线了呢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • xufive 天元浪子 3天前

    这里的曲线方程是f(x) = 0.01x^2 + 0.1x,要绘制在x=5这一点的曲线的切线y = kx + b,需要计算该切线的斜率k和截距b。函数numerical_diff(f, x)返回的就是函数f在x处的切线斜率,不过这里用的是微分法,也就是取一个很小的dx,计算dy,斜率k就等于dy/dx。有了斜率,函数tangent_line计算截距b之后,返回了lambda函数,该lambda函数返回的就是kx+b。

    点赞 评论 复制链接分享

相关推荐