python - 如何绘制任意一点抛物线的斜率(切线)?

标签 python matplotlib plot

我想绘制一个简单的图示,说明如何使用导数找出函数在任意点的斜率。它看起来有点像这样:

我已经使用这段代码绘制了一个简单的抛物线:

import numpy as np
from matplotlib import pyplot as plt

inputs = 0.2
weights = np.arange(-6,14)
target_prediction = 0.7

prediction = inputs*weights
errors = (prediction - target_prediction) ** 2
plt.xlabel("Weight")
plt.ylabel("Error")
plt.plot(weights, error)

现在我想添加这样的东西:

current_weight = 5
# draw a short fraction of a line to represent slope
x = np.arange(optimal_weight - 3, optimal_weight + 3)
# derivative
slope = 2 * (inputs*current_weight - target_prediction)
y = slope*x # How should this equation look like?
plt.plot(x, y)

绘制一条穿过 current_weight 的切线。

但我似乎无法弄清楚,你能帮忙吗?

最佳答案

一旦在所需点处获得斜率,就需要使用点斜率形式编写切线方程:

# Define parabola
def f(x): 
    return x**2

# Define parabola derivative
def slope(x): 
    return 2*x

# Define x data range for parabola
x = np.linspace(-5,5,100)

# Choose point to plot tangent line
x1 = -3
y1 = f(x1)

# Define tangent line
# y = m*(x - x1) + y1
def line(x, x1, y1):
    return slope(x1)*(x - x1) + y1

# Define x data range for tangent line
xrange = np.linspace(x1-1, x1+1, 10)

# Plot the figure
plt.figure()
plt.plot(x, f(x))
plt.scatter(x1, y1, color='C1', s=50)
plt.plot(xrange, line(xrange, x1, y1), 'C1--', linewidth = 2)

Parabola with tangent line

您可以对任何可微函数执行此操作,并且可以使用导数近似方法(例如有限差分)来消除提供解析导数的需要。

关于python - 如何绘制任意一点抛物线的斜率(切线)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54961306/

相关文章:

python - django-recaptcha 不验证输入

python - 访问通过 pandas 调用的绘图中绘图对象的句柄

matlab - 显示集群 kmeans 数据上的行

javascript - Three.js 中的插值曲面

image-processing - Keras:可视化 ImageDataGenerator 输出

Python:让 Pickle 文件更安全?

python - 实现 while 循环超时的最佳方法

python - RS-485串口波特率性能效率

qt - IPython shell with %matplotlib : the qt windows displaying figures disappear after stepping away from the terminal application. 这个问题可以修复吗?

python - matplotlib 中的 get_yticklabels 问题