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

article/2025/8/4 11:07:03

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.hkcw.cn/article/ExlWHKvPaP.shtml

相关文章

mask2former训练自己的语义分割数据集

一、环境配置 1.1下载源码 mask2former: https://github.com/facebookresearch/Mask2Former/tree/maindetectron2: https://github.com/facebookresearch/detectron2下载完后,新建一个文件夹,起个名字(我起的Mask2Former-main&#xff09…

如何使用1panel部署linux网站

找到官网,尝试一下在线安装 如果在线不成功,试一下离线安装 按照指令一步步执行即可,注意换成新版本的名称即可 如果成功,你会看到这个页面 1Panel Log]: [1Panel Log]: 感谢您的耐心等待,安装已完成 [1Panel Log]:…

个人用户进行LLMs本地部署前如何自查和筛选

一、个人用户硬件自查清单(从核心到次要) 1. 显卡(GPU)——决定性因素 显存容量(关键指标): 入门级(8~12GB):可运行7B模型(4bit量化)…

java Map双列集合

单列集合:一次只能添加一个元素 双列集合:一次添加两个元素,左边的叫键(唯一的不能重复),右边叫值(可以重复),键和值一一对应。这样一对叫:键值对/键值对对象…

在IIS上无法使用PUT等请求

错误来源: chat:1 Access to XMLHttpRequest at http://101.126.139.3:11000/api/receiver/message from origin http://101.126.139.3 has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. 其实我的后…

FastVLM: Efficient Vision Encoding for Vision Language Models——为视觉语言模型提供高效的视觉编码

这篇文章的核心内容是介绍了一种名为 FastVLM 的新型视觉语言模型(VLM),它通过一种高效的视觉编码器 FastViTHD,在高分辨率图像输入下实现了显著的性能提升和延迟降低。以下是文章的主要研究内容总结: 1. 研究背景与动…

关于开发板连接电脑找不到CH340解决方法大全(附ch340驱动下载链接)

一、一般开发板只需要一根支持传输数据的usb线就可以,找不到就是驱动没安装,一般win11系统会自动后台安装,如果没安装需要手动 ch340驱动官网:南京沁恒微电子股份有限公司 安装还失败就用这个(安装之后重启电脑就可以了…

Flask文件处理全攻略:安全上传下载与异常处理实战

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…

机器学习有监督学习sklearn实战二:六种算法对鸢尾花(Iris)数据集进行分类和特征可视化

本项目代码在个人github链接:https://github.com/KLWU07/Machine-learning-Project-practice 六种分类算法分别为逻辑回归LR、线性判别分析LDA、K近邻KNN、决策树CART、朴素贝叶斯NB、支持向量机SVM。 一、项目代码描述 1.数据准备和分析可视化 加载鸢尾花数据集&…

Vim 支持多种编程语言编辑器

软件简介 Vim是Vi编辑器的增强版,它提供了更多的功能和快捷键。Vim是一款自由软件,它是由Bram Moolenaar在1991年创建的。Vim支持多种编程语言,包括C、C、Java、Python、Perl等等。它是一款轻量级的编辑器,可以快速打开和编辑大型…

CppCon 2014 学习:Unicode in C++

在 Unicode 出现之前,计算机使用各种 单字节编码(Single-Byte Encodings) 来表示文本。理解这些编码对于学习字符集的演变过程很有帮助,以下是关键点的解释: 什么是单字节编码(Single-Byte Encoding&#…

【计算机网络】第3章:传输层—面向连接的传输:TCP

目录 一、PPT 二、总结 TCP(传输控制协议)详解 1. 概述 核心特性: 2. TCP报文段结构 关键字段说明: 3. TCP连接管理 3.1 三次握手(建立连接) 3.2 四次挥手(终止连接) 4. 可…

python打卡 DAY 18 推断聚类后簇的类型

目录 聚类结果分析与簇类型推断学习笔记 一、聚类后分析基础流程 1.1 基本分析步骤 1.2 常用可视化工具 二、簇特征分析方法 2.1 数值型特征分析 簇中心对比 雷达图展示 2.2 类别型特征分析 频数统计 卡方检验 三、簇类型推断技术 3.1 基于统计特征的推断 关键指标…

【RocketMQ 生产者和消费者】- 生产者发送同步、异步、单向消息源码分析(2)

文章目录 1. 前言2. InvokeCallback#operationComplete3. onExceptionImpl 异常处理4. 定时任务扫描 responseTable5. 小结 本文章基于 RocketMQ 4.9.3 1. 前言 【RocketMQ】- 源码系列目录【RocketMQ 生产者消费者】- 同步、异步、单向发送消费消息【RocketMQ 生产者和消费者…

【大模型DA】Unified Language-driven Zero-shot Domain Adaptation

Motivation 本文动机在于解决现有方法对 domain-ID 和多模型的依赖问题,提出一个更实用、更通用的新设定 ULDA,使模型仅通过语言描述就能在不访问目标图像的前提下一次性适应多个未知目标域 这篇文章的方法部分提出了一个统一框架来解决Unified Language…

Tomcat 线程模型详解性能调优

1. Tomcat I/O模型详解**(了解)** 1.1 Linux I/O模型详解 I/O要解决什么问题 I/O:在计算机内存与外部设备之间拷贝数据的过程。 程序通过CPU向外部设备发出读指令,数据从外部设备拷贝至内存需要一段时间,这段时间CPU就…

Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory

文章目录 摘要Abstract1. 引言2. Mem03. graph-based Mem0参考总结 摘要 Mem0是一种针对AI智能体的长时记忆架构,旨在解决大型语言模型固定上下文窗口导致的跨会话连贯性问题。其基础版本采用两阶段处理范式:提取阶段通过结合对话摘要、近期消息序列和新…

C++构造函数详解:从基础到高级

文章目录 1. 摘要2. 默认构造函数3. 无参构造函数4. 带参构造函数5. 拷贝构造函数6. 移动构造函数 (C11)7. 委托构造函数 (C11)8. 转换构造函数9. 默认拷贝构造函数10. 总结 1. 摘要 构造函数是C类的重要组成部分,负责对象的初始化工作。本文将详细讲解8种构造函数…

day16 leetcode-hot100-32(链表11)

138. 随机链表的复制 - 力扣(LeetCode) 1.哈希表 思路 第一次遍历创建新节点并将原节点与新节点同时放入哈希表中 第二次遍历为新节点加入next与random 具体代码 /* // Definition for a Node. class Node {int val;Node next;Node random;public N…

52. N-Queens II

题目描述 52. N-Queens II 回溯法 这道题与第51题是一样的。51. N-Queens-CSDN博客 class Solution {int columns; //从低位到高位起算,第i位为0表示棋盘第i列可以放置皇后,第i位为1表示棋盘第i列不能放置皇后//边长为n的棋盘分别有2n-1条正斜线和反…