斜率
目录
引言:斜率就在我们身边
生活中的斜率
想象你正在爬山:
- 平缓的山坡:走起来轻松,斜率小
- 陡峭的山坡:走起来费力,斜率大
- 垂直的悬崖:几乎不可能爬,斜率非常大
斜率就是描述"有多陡"的数学工具!
斜率的本质
斜率 = 倾斜程度 = 变化率
就像:
- 楼梯的陡峭程度:每走一步,高度增加多少
- 道路的坡度:每前进一米,高度变化多少
- 价格的变化速度:每过一天,价格变化多少
第一部分:什么是斜率?
1.1 直观理解:爬楼梯的类比
想象你在爬楼梯:
楼梯 A:每走 1 步,高度增加 0.5 米 → 斜率 = 0.5
楼梯 B:每走 1 步,高度增加 1 米 → 斜率 = 1.0
楼梯 C:每走 1 步,高度增加 2 米 → 斜率 = 2.0
斜率越大,楼梯越陡!
1.2 数学定义
对于一条直线,斜率定义为:
$$\text{斜率} = \frac{\text{垂直变化}}{\text{水平变化}} = \frac{\Delta y}{\Delta x} = \frac{y_2 - y_1}{x_2 - x_1}$$
其中:
- $(x_1, y_1)$ 和 $(x_2, y_2)$ 是直线上的两个点
- $\Delta y$ = 垂直方向的变化(上升或下降)
- $\Delta x$ = 水平方向的变化(前进的距离)
1.3 可视化:理解斜率
让我们用图表来直观地理解斜率:

import numpy as np
import matplotlib.pyplot as plt
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
# 创建图形
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
# 示例1:平缓的斜率(斜率 = 0.5)
x1 = np.array([0, 4])
y1 = np.array([0, 2])
axes[0].plot(x1, y1, 'b-', linewidth=3, label='斜率 = 0.5')
axes[0].plot(x1, y1, 'ro', markersize=10)
axes[0].annotate('(0, 0)', (0, 0), xytext=(5, -10), textcoords='offset points')
axes[0].annotate('(4, 2)', (4, 2), xytext=(5, 5), textcoords='offset points')
axes[0].grid(True, alpha=0.3)
axes[0].set_xlim(-0.5, 5)
axes[0].set_ylim(-0.5, 3)
axes[0].set_xlabel('x (水平距离)', fontsize=11)
axes[0].set_ylabel('y (高度)', fontsize=11)
axes[0].set_title('平缓的斜率:每前进4米,上升2米', fontsize=12, fontweight='bold')
axes[0].legend(fontsize=10)
# 示例2:中等斜率(斜率 = 1)
x2 = np.array([0, 4])
y2 = np.array([0, 4])
axes[1].plot(x2, y2, 'g-', linewidth=3, label='斜率 = 1')
axes[1].plot(x2, y2, 'ro', markersize=10)
axes[1].annotate('(0, 0)', (0, 0), xytext=(5, -10), textcoords='offset points')
axes[1].annotate('(4, 4)', (4, 4), xytext=(5, 5), textcoords='offset points')
axes[1].grid(True, alpha=0.3)
axes[1].set_xlim(-0.5, 5)
axes[1].set_ylim(-0.5, 5)
axes[1].set_xlabel('x (水平距离)', fontsize=11)
axes[1].set_ylabel('y (高度)', fontsize=11)
axes[1].set_title('中等斜率:每前进4米,上升4米', fontsize=12, fontweight='bold')
axes[1].legend(fontsize=10)
# 示例3:陡峭的斜率(斜率 = 2)
x3 = np.array([0, 2])
y3 = np.array([0, 4])
axes[2].plot(x3, y3, 'r-', linewidth=3, label='斜率 = 2')
axes[2].plot(x3, y3, 'ro', markersize=10)
axes[2].annotate('(0, 0)', (0, 0), xytext=(5, -10), textcoords='offset points')
axes[2].annotate('(2, 4)', (2, 4), xytext=(5, 5), textcoords='offset points')
axes[2].grid(True, alpha=0.3)
axes[2].set_xlim(-0.5, 3)
axes[2].set_ylim(-0.5, 5)
axes[2].set_xlabel('x (水平距离)', fontsize=11)
axes[2].set_ylabel('y (高度)', fontsize=11)
axes[2].set_title('陡峭的斜率:每前进2米,上升4米', fontsize=12, fontweight='bold')
axes[2].legend(fontsize=10)
plt.suptitle('不同斜率的直观对比', fontsize=16, fontweight='bold')
plt.tight_layout()
plt.show()
1.4 斜率的符号意义
正斜率:向上倾斜
- 从左到右,y 值增加
- 就像上坡:越走越高
负斜率:向下倾斜
- 从左到右,y 值减少
- 就像下坡:越走越低
零斜率:水平线
- y 值不变
- 就像平地:高度不变
未定义斜率:垂直线
- x 值不变(Δx = 0 不能做为分母运算)
- 就像垂直的墙:无法用单一数值描述
让我们可视化这些情况:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
x = np.linspace(-3, 3, 100)
# 正斜率
y_positive = 2*x + 1
axes[0, 0].plot(x, y_positive, 'g-', linewidth=3, label='正斜率 = 2')
axes[0, 0].grid(True, alpha=0.3)
axes[0, 0].set_title('正斜率:向上倾斜(上坡)', fontsize=12, fontweight='bold')
axes[0, 0].set_xlabel('x', fontsize=11)
axes[0, 0].set_ylabel('y', fontsize=11)
axes[0, 0].legend(fontsize=11)
axes[0, 0].axhline(y=0, color='k', linestyle='--', alpha=0.3)
axes[0, 0].axvline(x=0, color='k', linestyle='--', alpha=0.3)
# 负斜率
y_negative = -2*x + 1
axes[0, 1].plot(x, y_negative, 'r-', linewidth=3, label='负斜率 = -2')
axes[0, 1].grid(True, alpha=0.3)
axes[0, 1].set_title('负斜率:向下倾斜(下坡)', fontsize=12, fontweight='bold')
axes[0, 1].set_xlabel('x', fontsize=11)
axes[0, 1].set_ylabel('y', fontsize=11)
axes[0, 1].legend(fontsize=11)
axes[0, 1].axhline(y=0, color='k', linestyle='--', alpha=0.3)
axes[0, 1].axvline(x=0, color='k', linestyle='--', alpha=0.3)
# 零斜率
y_zero = np.full_like(x, 3)
axes[1, 0].plot(x, y_zero, 'b-', linewidth=3, label='零斜率 = 0')
axes[1, 0].grid(True, alpha=0.3)
axes[1, 0].set_title('零斜率:水平线(平地)', fontsize=12, fontweight='bold')
axes[1, 0].set_xlabel('x', fontsize=11)
axes[1, 0].set_ylabel('y', fontsize=11)
axes[1, 0].legend(fontsize=11)
axes[1, 0].axhline(y=0, color='k', linestyle='--', alpha=0.3)
axes[1, 0].axvline(x=0, color='k', linestyle='--', alpha=0.3)
# 未定义斜率(垂直线)
x_vertical = np.full_like(np.linspace(-3, 3, 100), 2)
y_vertical = np.linspace(-3, 3, 100)
axes[1, 1].plot(x_vertical, y_vertical, 'm-', linewidth=3, label='未定义斜率(垂直)')
axes[1, 1].grid(True, alpha=0.3)
axes[1, 1].set_title('未定义斜率:垂直线(垂直墙)', fontsize=12, fontweight='bold')
axes[1, 1].set_xlabel('x', fontsize=11)
axes[1, 1].set_ylabel('y', fontsize=11)
axes[1, 1].legend(fontsize=11)
axes[1, 1].axhline(y=0, color='k', linestyle='--', alpha=0.3)
axes[1, 1].axvline(x=0, color='k', linestyle='--', alpha=0.3)
plt.suptitle('斜率的符号意义', fontsize=16, fontweight='bold')
plt.tight_layout()
plt.show()
第二部分:如何计算斜率?
2.1 基本公式
给定两个点 $(x_1, y_1)$ 和 $(x_2, y_2)$,斜率计算公式为:
$$m = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x}$$
记忆技巧:
- "上升除以前进":垂直变化除以水平变化
- "y的变化除以x的变化"
2.2 计算示例
例子 1:计算通过点 (2, 3) 和 (5, 9) 的直线的斜率
步骤:
- 确定两个点:$(x_1, y_1) = (2, 3)$,$(x_2, y_2) = (5, 9)$
- 计算垂直变化:$\Delta y = y_2 - y_1 = 9 - 3 = 6$
- 计算水平变化:$\Delta x = x_2 - x_1 = 5 - 2 = 3$
- 计算斜率:$m = \frac{6}{3} = 2$
答案:斜率 = 2
解释:每向右移动 1 个单位,y 值增加 2 个单位。
让我们可视化这个例子:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
# 两个点
x1, y1 = 2, 3
x2, y2 = 5, 9
# 计算斜率
slope = (y2 - y1) / (x2 - x1)
print(f"斜率 = {slope}")
# 绘制直线
x_line = np.array([x1, x2])
y_line = np.array([y1, y2])
# 延伸直线以便更好地观察
x_extended = np.linspace(0, 7, 100)
y_extended = slope * (x_extended - x1) + y1
fig, ax = plt.subplots(figsize=(10, 7))
# 绘制延伸的直线
ax.plot(x_extended, y_extended, 'b-', linewidth=2, label=f'直线(斜率 = {slope})')
# 标记两个点
ax.plot([x1, x2], [y1, y2], 'ro', markersize=12, label='给定点')
ax.annotate(f'({x1}, {y1})', (x1, y1), xytext=(10, 10),
textcoords='offset points', fontsize=12,
bbox=dict(boxstyle='round,pad=0.3', facecolor='yellow', alpha=0.5))
ax.annotate(f'({x2}, {y2})', (x2, y2), xytext=(10, 10),
textcoords='offset points', fontsize=12,
bbox=dict(boxstyle='round,pad=0.3', facecolor='yellow', alpha=0.5))
# 绘制变化量
ax.arrow(x1, y1, x2-x1, 0, head_width=0.3, head_length=0.2,
fc='green', ec='green', linewidth=2, length_includes_head=True)
ax.arrow(x2, y1, 0, y2-y1, head_width=0.3, head_length=0.2,
fc='red', ec='red', linewidth=2, length_includes_head=True)
# 标注
ax.text((x1+x2)/2, y1-0.5, f'Δx = {x2-x1}', fontsize=12,
ha='center', color='green', fontweight='bold')
ax.text(x2+0.3, (y1+y2)/2, f'Δy = {y2-y1}', fontsize=12,
ha='left', color='red', fontweight='bold')
ax.grid(True, alpha=0.3)
ax.set_xlim(0, 7)
ax.set_ylim(0, 10)
ax.set_xlabel('x', fontsize=14)
ax.set_ylabel('y', fontsize=14)
ax.set_title(f'计算斜率:m = Δy/Δx = {y2-y1}/{x2-x1} = {slope}',
fontsize=14, fontweight='bold')
ax.legend(fontsize=12)
ax.axhline(y=0, color='k', linestyle='-', alpha=0.2)
ax.axvline(x=0, color='k', linestyle='-', alpha=0.2)
plt.tight_layout()
plt.show()
例子 2:计算通过点 (-1, 4) 和 (3, -2) 的直线的斜率
步骤:
- $(x_1, y_1) = (-1, 4)$,$(x_2, y_2) = (3, -2)$
- $\Delta y = -2 - 4 = -6$
- $\Delta x = 3 - (-1) = 4$
- $m = \frac{-6}{4} = -\frac{3}{2} = -1.5$
答案:斜率 = -1.5
解释:这是负斜率,每向右移动 1 个单位,y 值减少 1.5 个单位(向下倾斜)。
2.3 注意事项
1. 点的顺序不影响结果
无论选择哪个点作为 $(x_1, y_1)$,结果都一样:
$$m = \frac{y_2 - y_1}{x_2 - x_1} = \frac{y_1 - y_2}{x_1 - x_2}$$
2. 避免除以零
如果 $x_1 = x_2$(两个点的 x 坐标相同),则直线是垂直的,斜率未定义。
3. 简化分数
斜率通常表示为最简分数或小数:
- $\frac{6}{3} = 2$
- $\frac{4}{8} = \frac{1}{2} = 0.5$
第三部分:斜率的几何意义
3.1 斜率与角度
斜率越大,直线越陡,与水平线的夹角越大。
类比:
- 斜率 = 0:完全水平(0度)
- 斜率 = 1:45度角
- 斜率 → ∞:接近垂直(90度)
让我们可视化斜率与角度的关系:

import numpy as np
import matplotlib.pyplot as plt
import math
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
fig, axes = plt.subplots(2, 3, figsize=(15, 10))
x = np.linspace(0, 5, 100)
slopes = [0, 0.5, 1, 2, -1, -2]
titles = ['斜率 = 0 (水平)', '斜率 = 0.5 (平缓)', '斜率 = 1 (45度)',
'斜率 = 2 (陡峭)', '斜率 = -1 (下坡)', '斜率 = -2 (陡峭下坡)']
for i, (slope, title) in enumerate(zip(slopes, titles)):
row = i // 3
col = i % 3
y = slope * x
axes[row, col].plot(x, y, 'b-', linewidth=3)
axes[row, col].grid(True, alpha=0.3)
axes[row, col].set_title(title, fontsize=11, fontweight='bold')
axes[row, col].set_xlabel('x', fontsize=10)
axes[row, col].set_ylabel('y', fontsize=10)
axes[row, col].set_xlim(0, 5)
axes[row, col].set_ylim(-5, 5)
axes[row, col].axhline(y=0, color='k', linestyle='--', alpha=0.3)
axes[row, col].axvline(x=0, color='k', linestyle='--', alpha=0.3)
# 标注角度(对于正斜率)
if slope > 0:
angle = math.degrees(math.atan(slope))
axes[row, col].text(2.5, slope*2.5 + 0.3, f'角度 ≈ {angle:.1f}°',
fontsize=10, ha='center',
bbox=dict(boxstyle='round', facecolor='yellow', alpha=0.5))
elif slope < 0:
angle = math.degrees(math.atan(slope))
axes[row, col].text(2.5, slope*2.5 - 0.5, f'角度 ≈ {angle:.1f}°',
fontsize=10, ha='center',
bbox=dict(boxstyle='round', facecolor='yellow', alpha=0.5))
plt.suptitle('不同斜率对应的角度', fontsize=16, fontweight='bold')
plt.tight_layout()
plt.show()
3.2 斜率与函数图像
对于线性函数 $y = mx + b$:
- $m$ = 斜率
- $b$ = y 轴截距(当 x = 0 时,y 的值)
类比:
- 斜率 m:决定直线的"陡峭程度"和"方向"
- 截距 b:决定直线在 y 轴上的"起始位置"
让我们可视化不同斜率和截距的影响:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-5, 5, 100)
fig, axes = plt.subplots(1, 2, figsize=(14, 6))
# 固定截距,改变斜率
b = 1
slopes = [0.5, 1, 2, -0.5, -1, -2]
colors = ['blue', 'green', 'red', 'orange', 'purple', 'brown']
for slope, color in zip(slopes, colors):
y = slope * x + b
axes[0].plot(x, y, linewidth=2, label=f'斜率 = {slope}', color=color)
axes[0].grid(True, alpha=0.3)
axes[0].set_title('固定截距 b=1,改变斜率', fontsize=12, fontweight='bold')
axes[0].set_xlabel('x', fontsize=11)
axes[0].set_ylabel('y', fontsize=11)
axes[0].legend(fontsize=9, loc='best')
axes[0].axhline(y=0, color='k', linestyle='--', alpha=0.3)
axes[0].axvline(x=0, color='k', linestyle='--', alpha=0.3)
axes[0].set_xlim(-5, 5)
axes[0].set_ylim(-5, 5)
# 固定斜率,改变截距
m = 1
intercepts = [-2, -1, 0, 1, 2]
colors2 = ['blue', 'green', 'red', 'orange', 'purple']
for b, color in zip(intercepts, colors2):
y = m * x + b
axes[1].plot(x, y, linewidth=2, label=f'截距 b = {b}', color=color)
axes[1].grid(True, alpha=0.3)
axes[1].set_title('固定斜率 m=1,改变截距', fontsize=12, fontweight='bold')
axes[1].set_xlabel('x', fontsize=11)
axes[1].set_ylabel('y', fontsize=11)
axes[1].legend(fontsize=9, loc='best')
axes[1].axhline(y=0, color='k', linestyle='--', alpha=0.3)
axes[1].axvline(x=0, color='k', linestyle='--', alpha=0.3)
axes[1].set_xlim(-5, 5)
axes[1].set_ylim(-5, 5)
plt.suptitle('斜率与截距对直线的影响', fontsize=16, fontweight='bold')
plt.tight_layout()
plt.show()
第四部分:不同类型的斜率
4.1 正斜率
特点:
- 从左到右,y 值增加
- 直线向上倾斜
- 斜率 > 0
例子:
- 收入增长:时间增加,收入增加
- 温度上升:时间增加,温度上升
- 距离增加:时间增加,距离增加
4.2 负斜率
特点:
- 从左到右,y 值减少
- 直线向下倾斜
- 斜率 < 0
例子:
- 价格下降:时间增加,价格下降
- 温度下降:时间增加,温度下降
- 库存减少:时间增加,库存减少
4.3 零斜率
特点:
- y 值保持不变
- 水平线
- 斜率 = 0
例子:
- 固定工资:无论工作多久,工资不变
- 恒定速度:无论时间多久,速度不变
- 固定价格:无论时间多久,价格不变
4.4 未定义斜率(垂直)
特点:
- x 值保持不变
- 垂直线
- 斜率未定义(或说无穷大)
例子:
- 固定位置:无论高度如何,x 坐标不变
- 垂直墙:无论高度如何,水平位置不变
让我们综合展示所有类型的斜率:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-3, 3, 100)
fig, ax = plt.subplots(figsize=(10, 8))
# 正斜率
y1 = 2*x + 1
ax.plot(x, y1, 'g-', linewidth=3, label='正斜率 = 2(向上倾斜)')
# 负斜率
y2 = -2*x + 1
ax.plot(x, y2, 'r-', linewidth=3, label='负斜率 = -2(向下倾斜)')
# 零斜率
y3 = np.full_like(x, 2)
ax.plot(x, y3, 'b-', linewidth=3, label='零斜率 = 0(水平线)')
# 未定义斜率(垂直)
x_vertical = np.full_like(np.linspace(-3, 3, 100), 0)
y_vertical = np.linspace(-3, 3, 100)
ax.plot(x_vertical, y_vertical, 'm-', linewidth=3, label='未定义斜率(垂直线)')
ax.grid(True, alpha=0.3)
ax.set_xlim(-3, 3)
ax.set_ylim(-3, 3)
ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_title('所有类型的斜率', fontsize=14, fontweight='bold')
ax.legend(fontsize=11, loc='best')
ax.axhline(y=0, color='k', linestyle='-', alpha=0.3)
ax.axvline(x=0, color='k', linestyle='-', alpha=0.3)
plt.tight_layout()
plt.show()
第五部分:斜率在实际中的应用
5.1 速度与斜率
物理意义:在位置-时间图中,斜率表示速度。
例子:汽车行驶
- 位置函数:$s(t) = 60t$(t 是时间,s 是位置)
- 斜率 = 60(速度 = 60 km/h)
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
t = np.linspace(0, 5, 100)
s = 60 * t # 位置 = 速度 × 时间
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(t, s, 'b-', linewidth=3, label='位置 s(t) = 60t')
ax.grid(True, alpha=0.3)
ax.set_xlabel('时间 t (小时)', fontsize=12)
ax.set_ylabel('位置 s (公里)', fontsize=12)
ax.set_title('位置-时间图:斜率 = 速度 = 60 km/h', fontsize=14, fontweight='bold')
ax.legend(fontsize=12)
# 标注斜率
ax.annotate('斜率 = 60 km/h', (2.5, 150), fontsize=12,
bbox=dict(boxstyle='round', facecolor='yellow', alpha=0.5))
plt.tight_layout()
plt.show()
5.2 成本与斜率
经济意义:在成本-数量图中,斜率表示单位成本。
例子:生产产品
- 总成本 = 固定成本 + 单位成本 × 数量
- $C(x) = 1000 + 50x$(1000 是固定成本,50 是单位成本)
- 斜率 = 50(每生产一个产品,成本增加 50)
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(0, 100, 100)
C = 1000 + 50 * x # 总成本
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(x, C, 'g-', linewidth=3, label='总成本 C(x) = 1000 + 50x')
ax.grid(True, alpha=0.3)
ax.set_xlabel('数量 x', fontsize=12)
ax.set_ylabel('总成本 C (元)', fontsize=12)
ax.set_title('成本-数量图:斜率 = 单位成本 = 50 元/个', fontsize=14, fontweight='bold')
ax.legend(fontsize=12)
# 标注
ax.plot(0, 1000, 'ro', markersize=10, label='固定成本 = 1000')
ax.annotate('固定成本 = 1000', (0, 1000), xytext=(20, 50),
textcoords='offset points', fontsize=11,
bbox=dict(boxstyle='round', facecolor='yellow', alpha=0.5))
ax.annotate('斜率 = 50 元/个', (50, 3500), fontsize=12,
bbox=dict(boxstyle='round', facecolor='lightblue', alpha=0.5))
plt.tight_layout()
plt.show()
5.3 温度变化与斜率
气象意义:在温度-时间图中,斜率表示温度变化率。
例子:一天中的温度变化
- 早上到中午:温度上升,正斜率
- 中午到晚上:温度下降,负斜率
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
# 模拟一天的温度变化
hours = np.array([6, 9, 12, 15, 18, 21, 24])
temps = np.array([10, 15, 25, 28, 22, 18, 15])
fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(hours, temps, 'b-o', linewidth=2, markersize=8, label='温度变化')
ax.grid(True, alpha=0.3)
ax.set_xlabel('时间 (小时)', fontsize=12)
ax.set_ylabel('温度 (°C)', fontsize=12)
ax.set_title('一天中的温度变化:斜率表示温度变化率', fontsize=14, fontweight='bold')
ax.legend(fontsize=12)
# 标注不同时段的斜率
# 早上到中午(6点到12点)
slope_morning = (temps[2] - temps[0]) / (hours[2] - hours[0])
ax.annotate(f'上升斜率 ≈ {slope_morning:.1f}°C/小时',
(9, 20), fontsize=11,
bbox=dict(boxstyle='round', facecolor='lightgreen', alpha=0.5))
# 中午到晚上(12点到21点)
slope_afternoon = (temps[4] - temps[2]) / (hours[4] - hours[2])
ax.annotate(f'下降斜率 ≈ {slope_afternoon:.1f}°C/小时',
(15, 25), fontsize=11,
bbox=dict(boxstyle='round', facecolor='lightcoral', alpha=0.5))
plt.tight_layout()
plt.show()
5.4 斜率与变化率
一般意义:斜率表示变化率——某个量相对于另一个量的变化速度。
类比:
- 位置-时间:斜率 = 速度
- 成本-数量:斜率 = 单位成本
- 温度-时间:斜率 = 温度变化率
- 价格-时间:斜率 = 价格变化率
总结与回顾
核心概念
-
斜率的定义:
$$m = \frac{\Delta y}{\Delta x} = \frac{y_2 - y_1}{x_2 - x_1}$$ -
斜率的类型:
- 正斜率:向上倾斜(m > 0)
- 负斜率:向下倾斜(m < 0)
- 零斜率:水平线(m = 0)
- 未定义斜率:垂直线
-
斜率的几何意义:
- 描述直线的"陡峭程度"
- 表示与水平线的夹角大小
-
斜率的实际意义:
- 表示变化率
- 在位置-时间图中 = 速度
- 在成本-数量图中 = 单位成本
- 在温度-时间图中 = 温度变化率
计算步骤
- 确定两个点:$(x_1, y_1)$ 和 $(x_2, y_2)$
- 计算垂直变化:$\Delta y = y_2 - y_1$
- 计算水平变化:$\Delta x = x_2 - x_1$
- 计算斜率:$m = \frac{\Delta y}{\Delta x}$
- 简化结果:约分到最简形式
记忆技巧
- "上升除以前进":垂直变化除以水平变化
- "y的变化除以x的变化"
- 正斜率 = 上坡,负斜率 = 下坡
常见错误
- 点的顺序:虽然不影响结果,但要保持一致性
- 除以零:如果 $\Delta x = 0$,斜率未定义(垂直线)
- 符号错误:注意正负号,负斜率表示下降
下一步学习
掌握了斜率后,你可以:
- 学习线性函数:$y = mx + b$
- 学习导数:曲线的斜率
- 学习切线:曲线在某点的斜率
- 学习变化率:更一般的变化率概念