# 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)
就能得到切线了呢
这里的曲线方程是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。