当前位置: 首页 > news >正文

Python数学可视化——环境搭建与基础绘图

Python数学可视化——环境搭建与基础绘图

在这里插入图片描述


数学函数可视化入门(一次函数/三角函数)

本节将建立Python科学计算环境,并创建基础函数绘图工具,可生成一次函数和三角函数的可视化图像,同时结合物理中的匀速直线运动案例。

一、环境配置与工具准备

# 安装必要库(在命令行中执行)
# pip install numpy matplotlib

二、核心代码实现

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocatordef plot_function(func_type, params, x_range=(-10, 10), output_path="function_plot.png"):"""绘制函数图像并保存为PNG参数:func_type: 函数类型 ('linear' 或 'trig')params: 函数参数 - 一次函数: [k, b] (y = kx + b)- 三角函数: [a, b, c] (y = a*sin(bx + c))x_range: x轴范围 (start, end)output_path: 输出文件路径"""plt.figure(figsize=(10, 6), dpi=100)ax = plt.gca()# 设置网格和样式ax.grid(True, linestyle='--', alpha=0.7)ax.set_axisbelow(True)ax.spines['left'].set_position('zero')ax.spines['bottom'].set_position('zero')ax.spines['right'].set_visible(False)ax.spines['top'].set_visible(False)# 生成x值x = np.linspace(x_range[0], x_range[1], 500)# 根据函数类型计算y值if func_type == 'linear':k, b = paramsy = k * x + btitle = f"一次函数: $y = {k}x + {b}$" if b >= 0 else f"一次函数: $y = {k}x {b}$"elif func_type == 'trig':a, b, c = paramsy = a * np.sin(b * x + c)title = f"三角函数: $y = {a}\\sin({b}x + {c})$"# 绘制函数曲线plt.plot(x, y, 'b-', linewidth=2.5, label=title.split(': ')[1])# 设置标题和标签plt.title(title, fontsize=14, pad=20)plt.xlabel('x', fontsize=12, labelpad=-10, x=1.02)plt.ylabel('y', fontsize=12, labelpad=-20, y=1.02, rotation=0)# 设置刻度ax.xaxis.set_major_locator(MultipleLocator(2))ax.yaxis.set_major_locator(MultipleLocator(2))# 添加图例plt.legend(loc='upper right', frameon=True, shadow=True)# 保存图像plt.savefig(output_path, bbox_inches='tight', pad_inches=0.3)plt.close()print(f"图像已保存至: {output_path}")# 物理案例:匀速直线运动 (位移-时间图)
def plot_uniform_motion(velocity, initial_position, time_range=(0, 10), output_path="motion_plot.png"):"""绘制匀速直线运动的位移-时间图参数:velocity: 速度 (m/s)initial_position: 初始位置 (m)time_range: 时间范围 (s)output_path: 输出文件路径"""plt.figure(figsize=(10, 6), dpi=100)ax = plt.gca()# 设置网格和样式ax.grid(True, linestyle='--', alpha=0.7)ax.set_axisbelow(True)# 生成时间值t = np.linspace(time_range[0], time_range[1], 500)# 计算位移 (s = v*t + s0)s = velocity * t + initial_position# 绘制位移-时间曲线plt.plot(t, s, 'r-', linewidth=2.5, label=f"$s = {velocity}t + {initial_position}$")# 设置标题和标签plt.title(f"匀速直线运动: 速度={velocity}m/s, 初位置={initial_position}m", fontsize=14, pad=20)plt.xlabel('时间 (s)', fontsize=12)plt.ylabel('位移 (m)', fontsize=12)# 添加图例plt.legend(loc='upper left', frameon=True, shadow=True)# 保存图像plt.savefig(output_path, bbox_inches='tight', pad_inches=0.3)plt.close()print(f"物理运动图像已保存至: {output_path}")

三、使用示例

if __name__ == "__main__":# 示例1:绘制一次函数 y = 2x - 3plot_function('linear', [2, -3], x_range=(-5, 5), output_path="linear_function.png")# 示例2:绘制三角函数 y = 3*sin(2x + π/2)plot_function('trig', [3, 2, np.pi/2], x_range=(-2*np.pi, 2*np.pi), output_path="trig_function.png")# 物理案例:初位置5m,以2m/s速度匀速运动plot_uniform_motion(velocity=2, initial_position=5, time_range=(0, 10), output_path="uniform_motion.png")

四、生成图像说明

  1. 一次函数图像 (linear_function.png):

    • 清晰显示直线斜率和截距
    • 坐标轴经过零点,网格辅助观察
    • 函数公式显示在标题中
  2. 三角函数图像 (trig_function.png):

    • 展示正弦函数的周期性
    • 显示振幅、频率和相位变化
    • x轴以π为单位显示关键点
  3. 物理运动图像 (uniform_motion.png):

    • 展示匀速直线运动的位移-时间关系
    • 斜率表示速度,截距表示初位置
    • 包含物理量单位和实际意义

五、教学要点

  1. 数学概念:

    • 一次函数的斜率与截距意义
    • 三角函数振幅、周期和相位的几何表示
    • 函数图像与解析式的关系
  2. 物理联系:

    • 位移-时间图的物理意义
    • 斜率表示速度,截距表示初位置
    • 匀速运动的特点:直线图像
  3. 编程技巧:

    • NumPy数组操作与函数计算
    • Matplotlib绘图配置与样式定制
    • 函数封装与参数化设计

本节代码已完整实现基础函数可视化工具,可直接运行生成教学图像。生成的PNG图像适合插入课件、讲义或实验报告。

相关文章:

  • python汉语编程,将关键字与文言文对应
  • 源码解析(二):nnUNet
  • 03.MySQL表的操作详解
  • K3s简介、实战、问题记录
  • Java高效处理大文件:避免OOM的深度实践
  • 【STM32F1标准库】理论——外部中断
  • 用提示词写程序(3),VSCODE+Claude3.5+deepseek开发edge扩展插件V2
  • 纯汇编自制操作系统(四、应用程序等的实现)
  • vue3(入门,setup,ref,计算属性,watch)
  • 财管5-投资项目的评价指标现金流量构成
  • C# 类和继承(构造函数的执行)
  • Spring Ai 从Demo到搭建套壳项目(一)初识与实现与deepseek对话模式
  • YOLOv5-入门篇笔记
  • 鸿蒙OSUniApp声纹识别与语音验证:打造安全可靠的跨平台语音应用#三方框架 #Uniapp
  • Java并发编程实战 Day 3:volatile关键字与内存可见性
  • 3D Gaussian splatting 05: 代码阅读-训练整体流程
  • CSS篇-5
  • 箱式不确定集
  • 广东WordPress开发公司及服务
  • 搭建基于VsCode的ESP32的开发环境教程
  • 怎样做网站/深圳网络推广哪家好
  • 专业的网站开发公司电话/关键词点击价格查询
  • 做兼职比较专业靠谱的网站/中文域名的网站
  • 交易所网站建设教程/泰安seo网络公司
  • 做的网站在ie会乱码/北大青鸟
  • 大连中山区网站建设/网络营销专业是干嘛的