
我用了好几个方法打出来,要么是图像不行,要么就是ploat啥的不匹配
关注引自免费微信小程序:皆我百晓生
要解决这个问题,你需要在Python中使用matplotlib库来绘制曲线以及其在某一点的切线和法线。这里是一个详细的步骤和示例代码:
首先,确保已经安装了matplotlib库。如果没有,可以使用以下命令进行安装:
pip install matplotlib numpy
接下来,我们将使用Python编写一个函数,计算给定函数在特定点的导数(即切线斜率),然后绘制曲线、切线和法线。
import numpy as np
import matplotlib.pyplot as plt
def function(x):
return np.sin(x) / x
def derivative(x):
return (np.cos(x) * x - np.sin(x)) / x**2
# 定义曲线上的点
x = 2
# 计算在x=2处的函数值和导数值
y = function(x)
dy_dx = derivative(x)
# 切线斜率
m = dy_dx
# 切线截距,使用点斜式公式 y - y1 = m(x - x1)
b = y - m * x
# 法线斜率,与切线垂直,斜率为-1/m
n = -1 / m
# 法线截距,同理
bn = y + n * x
# 创建x轴范围
x_range = np.linspace(-2*np.pi, 2*np.pi, 400)
# 计算x轴范围内的函数值
y_values = function(x_range)
# 绘制曲线
plt.plot(x_range, y_values, label='f(x) = sin(x)/x')
# 绘制切线
plt.plot(x_range, m*x_range + b, 'r--', label='tangent line at x={:.2f}'.format(x))
# 绘制法线
plt.plot(x_range, n*x_range + bn, 'g:', label='normal line at x={:.2f}'.format(x))
# 添加坐标轴标签和图例
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
# 在x=2处标记点
plt.scatter(x, y, color='black', marker='o', s=100, label='P({:.2f}, {:.2f})'.format(x, y))
# 设置图形标题
plt.title('Graph of f(x) and its tangent & normal lines at x={:.2f}'.format(x))
plt.grid(True)
# 显示图形
plt.show()
这段代码会创建一个图形,显示函数 y = sin(x)/x 的图像,以及在点 (2, f(2)) 处的切线和法线。注意,由于 sin(x)/x 在 x=0 处没有定义,我们选择了 x=2 这个点作为例子。如果你需要在其他点绘制切线和法线,请替换上述代码中的 x 值。