Skip to content

fuze22439-ai/physics_simulation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

交互式物理实验模拟器 (Interactive Physics Experiment Simulator)

项目简介

这是一个基于 Python 的交互式物理实验模拟平台,旨在帮助用户直观地理解经典物理现象。 项目实现了以下三个经典实验的模拟:

  1. 单摆运动:模拟单摆的周期性运动,支持大角度摆动(数值积分)。
  2. 自由落体:模拟物体在重力作用下的下落过程,验证能量守恒。
  3. 抛体运动:模拟抛体在重力和空气阻力作用下的运动轨迹。

项目使用 Streamlit 构建 Web 交互界面,用户可以实时调整实验参数并观察结果。

功能特性

  • 交互式参数调整:实时修改质量、长度、角度、初速度等参数。
  • 实时可视化:动态显示运动轨迹和物理量(速度、能量等)的变化曲线。
  • 数据导出:支持将模拟数据导出为 CSV 格式,便于进一步分析。
  • Web 界面:简洁友好的浏览器界面。

安装步骤

本项目使用 uv 进行依赖管理。请确保已安装 uv

  1. 克隆项目

    git clone <your-repo-url>
    cd physics_simulator
  2. 同步依赖

    uv sync

使用方法

运行模拟器

在项目根目录下运行以下命令启动应用:

uv run python main.py

或者直接使用 streamlit 运行:

uv run streamlit run src/physics_sim/app.py

启动后,浏览器将自动打开模拟器界面(默认地址:http://localhost:8501)。

操作指南

  1. 在左侧侧边栏选择要进行的实验(单摆、自由落体、抛体运动)。
  2. 调整侧边栏中的参数滑块(如长度、质量、角度等)。
  3. 主界面将实时更新运动轨迹图和物理量图表。
  4. 点击底部的 "下载 CSV 数据" 按钮保存模拟数据。

运行示例

1. 单摆模拟

调整绳长和初始角度,观察相图(Theta vs Omega)的变化。

2. 抛体运动

开启空气阻力(设置 k > 0),观察轨迹如何偏离理想抛物线。

结果截图

(此处应包含运行时的截图,例如单摆的轨迹图和抛体运动的界面)

代码结构

physics_simulator/
├── pyproject.toml      # 项目配置和依赖
├── uv.lock             # 依赖锁定文件
├── README.md           # 项目文档
├── .python-version     # Python 版本
├── main.py             # 程序入口
├── src/
│   └── physics_sim/
│       ├── __init__.py
│       ├── app.py      # Streamlit 界面逻辑
│       └── experiments.py # 物理模型实现
└── tests/              # 测试代码

依赖库

  • numpy: 数值计算
  • pandas: 数据处理
  • matplotlib: 绘图
  • scipy: 科学计算
  • streamlit: Web 界面框架

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages