AI数学启蒙:100天Python实践计划(小学水平起步)​【第22天:线性方程(y = mx + b) 直线方程】02

文章目录

太棒了!第22天我们将探索数学中一个非常基础和强大的概念:线性方程y = mx + b),并用Python把它直观地画出来。这对理解变量关系、图形和数据趋势至关重要,也是后续学习更复杂数学和编程的基础。

核心概念:线性方程 y = mx + b

  1. 这是什么? 这是一个描述直线的数学公式。它告诉我们,对于直线上的任何一个点(x, y),它的 y 值是怎么根据 x 值计算出来的。
  2. 字母代表什么?
    • x自变量。这是我们自己选择的输入值(比如:时间、数量、距离)。
    • y因变量。这是我们想要计算或预测的输出值(比如:花费的总钱数、跑过的总路程、温度)。y 的值依赖于我们选择的 x
    • m斜率。它告诉我们这条直线有多“陡峭”。
      • m > 0:直线向上倾斜(x增加,y也增加)。
      • m < 0:直线向下倾斜(x增加,y减少)。
      • m = 0:一条水平线(无论x怎么变,y都不变)。
      • 数值大小:|m| 越大,直线越陡峭;|m| 越小,直线越平缓。
      • 怎么算斜率?m = (y2 - y1) / (x2 - x1) (取直线上任意两点 (x1, y1)(x2, y2),计算y的变化量除以x的变化量)。
    • b截距。它告诉我们当 x = 0 时,直线与 y 轴相交的位置。
      • 例如,如果 b = 3,那么直线会穿过点 (0, 3)

为什么它很重要?

  • 描述现实世界:很多简单的关系是线性的(比如恒定速度下的距离-时间关系、固定单价下的总价-数量关系)。
  • 预测:知道一条直线的方程,我们可以预测任意 x 值对应的 y 值。
  • 基础:它是学习更复杂函数(如抛物线、指数函数)和更高阶数学(代数、微积分)的基石。

Python实践:用代码画出直线!

我们将使用 matplotlib 这个强大的绘图库来可视化直线方程。

代码详解:

# 【第22天:线性方程 y = mx + b】 - Python 绘制直线
# 目标:理解线性方程概念,并用Python画出不同斜率和截距的直线

# 1. 引入必要的帮手 (库)
import matplotlib.pyplot as plt  # 绘图库
import numpy as np  # 数值计算库,用来生成一组x值

# 2. 定义我们的直线方程函数
def linear_equation(x, m, b):
    """
    计算线性方程 y = m*x + b 的结果
    参数:
        x (数字或数组): 输入的自变量值
        m (数字): 直线的斜率
        b (数字): 直线的y轴截距
    返回:
        y (数字或数组): 计算得到的y值
    """
    y = m * x + b  # 这就是方程的核心!
    return y

# 3. 创建一组x值 (比如从 -10 到 10)
x_values = np.linspace(-10, 10, 100)  # 在-10和10之间均匀生成100个点

# 4. 定义不同的斜率和截距组合 (试试看效果!)
# 组合1: 平缓上升线 (m=0.5, b=2)
m1 = 0.5
b1 = 2
y_values1 = linear_equation(x_values, m1, b1)  # 计算对应的y值

# 组合2: 陡峭下降线 (m=-2, b=0)
m2 = -2
b2 = 0
y_values2 = linear_equation(x_values, m2, b2)

# 组合3: 水平线 (m=0, b=4)
m3 = 0
b3 = 4
y_values3 = linear_equation(x_values, m3, b3)

# 组合4: 通过原点快速上升 (m=1.8, b=0)
m4 = 1.8
b4 = 0
y_values4 = linear_equation(x_values, m4, b4)

# 5. 创建图形和坐标轴
plt.figure(figsize=(10, 6))  # 设置图形大小 (可选)
plt.xlabel('x - 自变量')    # 给x轴加标签
plt.ylabel('y - 因变量')    # 给y轴加标签
plt.title('探索线性方程: y = mx + b')  # 给图加标题
plt.grid(True, linestyle='--', alpha=0.7)  # 添加网格线 (更好看)
plt.axhline(y=0, color='k', linewidth=0.8)  # 画出x轴 (黑色细线)
plt.axvline(x=0, color='k', linewidth=0.8)  # 画出y轴 (黑色细线)

# 6. 绘制多条直线 (用不同颜色和标签)
plt.plot(x_values, y_values1, label=f'y = {m1}x + {b1}', color='blue')
plt.plot(x_values, y_values2, label=f'y = {m2}x + {b2}', color='red')
plt.plot(x_values, y_values3, label=f'y = {m3}x + {b3}', color='green')
plt.plot(x_values, y_values4, label=f'y = {m4}x + {b4}', color='purple')

# 7. 添加图例 (说明每条线是谁)
plt.legend()

# 8. 显示图形!
plt.show()

运行这段代码,你会看到什么?

你会看到一个坐标系,上面画着四条不同颜色、不同斜率和截距的直线!观察:

  1. 蓝线 (y = 0.5x + 2):
    • 斜率 m = 0.5 > 0,向右上方倾斜。
    • 截距 b = 2,穿过点 (0, 2)。相对平缓。
  2. 红线 (y = -2x + 0):
    • 斜率 m = -2 < 0,向右方倾斜,相当陡峭。
    • 截距 b = 0,穿过原点 (0, 0)
  3. 绿线 (y = 0*x + 4y = 4):
    • 斜率 m = 0,是一条完美的水平线
    • 无论 x 是多少,y 始终等于截距 b = 4
  4. 紫线 (y = 1.8x + 0):
    • 斜率 m = 1.8 > 0,向右上方倾斜,比蓝线陡峭 (1.8 > 0.5)。
    • 截距 b = 0,穿过原点 (0, 0)

动手实验 & 思考题 (作业):

  1. 修改参数: 在代码中找到定义 m1, b1, m2, b2 等的地方。试着改成你喜欢的数字(比如 m1 = 3, b1 = -1m2 = 0.2, b2 = 5)。重新运行代码,观察直线如何变化。斜率 m 变大变小会怎样?截距 b 变大变小会怎样?
  2. 添加新直线: 尝试在代码中添加第5条直线(模仿组合4的写法)。给它一个负的斜率和一个正的截距(比如 m5 = -1.5, b5 = 3)。记得计算 y_values5 并把它画出来 (plt.plot)。这条线会是什么样子?
  3. 生活应用:
    • 想象你每周存 5 块钱零花钱。设 x 代表周数,y 代表总存款。
      • 你能写出描述存款 (y) 和周数 (x) 关系的线性方程吗?(提示:斜率 m 就是每周存的钱,截距 b 是你一开始有多少钱(比如0))。
      • 用Python画出这条线(x范围0到10周)。第8周结束时你有多少钱?
    • 一辆小车以每小时 60 公里的速度匀速行驶。设 x 代表时间(小时),y 代表行驶的总距离(公里)。
      • 写出距离 (y) 和时间 (x) 关系的方程。
      • 画出这条线(x范围0到5小时)。3.5小时后车开了多远?
  4. 挑战: 你能修改代码,让用户输入斜率和截距 (mb),然后只画出用户指定的那一条直线吗?(提示:用 input() 获取用户输入,记得把输入转换成数字 float())。

总结:

今天你学到了:

  • 线性方程 y = mx + b 描述了所有直线的数学关系。
  • 斜率 m 控制直线的陡峭程度和方向(向上还是向下倾斜)。
  • 截距 b 控制直线在 y 轴上的起始位置。
  • 如何用Python(numpy生成数据,matplotlib绘图)直观地可视化不同 mb 组合下的直线。

理解 y = mx + b 是数学和编程中一个超级重要的里程碑!通过动手画图,你能真切感受到 mb 是如何影响直线的形状的。多做实验,多联系生活中的例子,这个方程会变得越来越清晰!明天我们可以继续探索直线相关的有趣问题!加油!

代码修正

# 【第22天:线性方程 y = mx + b】 - Python 绘制直线
# 目标:理解线性方程概念,并用Python画出不同斜率和截距的直线

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

# 修复PyCharm显示中文问题 - 第一步
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei', 'sans-serif']
mpl.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 定义直线方程函数
def linear_equation(x, m, b):
    """
    计算线性方程 y = m*x + b 的结果
    """
    return m * x + b

# 创建一组x值
x_values = np.linspace(-10, 10, 100)

# 定义不同的斜率和截距组合
slopes = [0.5, -2, 0, 1.8]
intercepts = [2, 0, 4, 0]
colors = ['blue', 'red', 'green', 'purple']
labels = [f'y = {m}x + {b}' for m, b in zip(slopes, intercepts)]

# 创建图形
plt.figure(figsize=(10, 6))

# 修复PyCharm显示问题 - 第二步
plt.rcParams['backend'] = 'TkAgg'  # 切换后端避免PyCharm专有后端的bug

# 设置中文字体兼容的标签
plt.xlabel('x - 自变量')    
plt.ylabel('y - 因变量')    
plt.title('探索线性方程: y = mx + b')

# 添加坐标轴和网格
plt.grid(True, linestyle='--', alpha=0.7)
plt.axhline(y=0, color='k', linewidth=0.8)
plt.axvline(x=0, color='k', linewidth=0.8)

# 绘制所有直线
for i in range(len(slopes)):
    y_values = linear_equation(x_values, slopes[i], intercepts[i])
    plt.plot(x_values, y_values, label=labels[i], color=colors[i])

# 添加图例
plt.legend()

# 修复PyCharm显示问题 - 第三步
try:
    plt.show()
except AttributeError:
    # 如果仍然报错,保存为图片文件
    plt.savefig('linear_equations.png')
    print("由于兼容性问题,图形已保存为 'linear_equations.png'")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩公子的Linux大集市

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值