当前位置: 首页 > 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图像适合插入课件、讲义或实验报告。

http://www.xdnf.cn/news/757513.html

相关文章:

  • 力扣刷题(第四十四天)
  • 主数据编码体系全景解析:从基础到高级的编码策略全指南
  • GEE:获取研究区的DEM数据
  • RocketMQ 学习
  • 性能优化 - 案例篇:数据一致性
  • 清理 pycharm 无效解释器
  • CVE-2021-28164源码分析与漏洞复现
  • DDD架构
  • 历年西安邮电大学计算机保研上机真题
  • 鸿蒙OS基于UniApp的区块链钱包开发实践:打造支持鸿蒙生态的Web3应用#三方框架 #Uniapp
  • 基于Dify实现各类报告文章的智能化辅助阅读
  • 攻防 FART 脱壳:特征检测识别 + 对抗绕过全解析
  • C++输入与输出技术详解
  • hot100 -- 5.普通数组系列
  • CFTel:一种基于云雾自动化的鲁棒且可扩展的远程机器人架构
  • Domain Adaptation in Vision-Language Models (2023–2025): A Comprehensive Review
  • 2022—2025年:申博之路及硕士阶段总结
  • 小明的Java面试奇遇之智能家装平台架构设计与JVM调优实战
  • 什么是子查询?相关子查询的性能问题?
  • GpuGeek 618大促引爆AI开发新体验
  • Redis缓存存储:从基础到高阶的深度解析
  • STM32G4 电机外设篇(三) TIM1 发波 和 ADC COMP DAC级联
  • 软件无线电关键技术之正交调制技术
  • Java进阶---JVM
  • GraphQL 入门篇:基础查询语法
  • Cinnamon开始菜单(1):获取应用数据
  • Debian上安装PostgreSQL的故障和排除
  • 2023年电赛C题——电感电容测量装置
  • Mixly1.0/2.0/3.0 (windows系统) 安装教程及使用常见问题解决
  • Python 训练营打卡 Day 41