feat: 初始化自动控制原理AI+数智平台项目

- 添加时域分析、频域分析、根轨迹分析功能
- 集成 AI 智能问答(DeepSeek/Gemini API)
- 现代化 UI 设计,支持 LaTeX 公式渲染
- 完整的项目文档和配置文件
This commit is contained in:
2025-10-15 20:37:30 +08:00
parent 9b4b3072a5
commit 7edbda02f6
8 changed files with 979 additions and 0 deletions
+336
View File
@@ -0,0 +1,336 @@
# 🎛️ 自动控制原理AI+数智平台
> 交互式控制系统分析与设计工具 | 时域·频域·根轨迹·AI问答
一个基于 Gradio 构建的现代化自动控制原理学习平台,集成了系统分析工具和 AI 智能问答功能。
## ✨ 核心功能
### 📊 1. 时域分析 (Time Domain Analysis)
- **阶跃响应分析**:观察系统对单位阶跃输入的响应
- **脉冲响应分析**:观察系统对单位脉冲输入的响应
- **性能指标计算**
- 上升时间 (Rise Time)
- 峰值时间 (Peak Time)
- 超调量 (Overshoot)
- 调节时间 (Settling Time)
- 稳态值 (Steady State Value)
**知识要点**
- 二阶系统标准形式
- 阻尼比与自然频率参数说明
- 时域性能指标公式
- 稳态误差分析
### 🌊 2. 频域分析 (Frequency Domain Analysis)
- **Bode 图绘制**:幅频特性和相频特性
- **Nyquist 图绘制**:极坐标频率响应
- **稳定裕度计算**
- 增益裕度 (Gain Margin, GM)
- 相位裕度 (Phase Margin, PM)
- 增益交越频率
- 相角交越频率
- **稳定性评估**:自动判断系统稳定性
**知识要点**
- 增益裕度与相位裕度定义
- 稳定性判断准则
- 频域指标与时域性能的关系
- Bode 图读数技巧
### 🎯 3. 根轨迹分析 (Root Locus Analysis)
- **根轨迹绘制**:自动绘制完整根轨迹图
- **增益调节**:对数滑块精确调节增益 K
- **极点跟踪**:实时显示当前增益下的闭环极点位置
- **动态视角**:自动调整坐标范围,聚焦关键区域
**知识要点**
- 根轨迹法基本原理
- 幅值条件与相角条件
- 根轨迹的基本性质(起点、终点、渐近线、分离点)
- s 平面稳定性区域
- 阻尼比等值线
### 🤖 4. AI 智能问答 (Q&A)
- **专业教学助手**:精通自动控制原理的 AI 教授
- **流式响应**:实时显示 AI 回复过程
- **LaTeX 公式渲染**:完美支持数学公式显示
- **上下文记忆**:支持多轮对话
**支持的 API**
- DeepSeek API(推荐,国内网络友好)
- Google Gemini API
## 🚀 快速开始
### 环境要求
- Python 3.8+
- pip 包管理器
### 安装步骤
1. **克隆项目**
```bash
git clone <your-repo-url>
cd AutoControl
```
2. **安装依赖**
```bash
pip install gradio numpy control matplotlib aiohttp
```
或使用 conda
```bash
conda create -n autocontrol python=3.9
conda activate autocontrol
pip install gradio numpy control matplotlib aiohttp
```
3. **配置 API 密钥**
编辑 `app.py` 文件开头的配置区域:
```python
# ==================== API 配置 ====================
API_KEY = "your-api-key-here" # 填入您的 DeepSeek API 密钥
API_BASE_URL = "https://api.deepseek.com/v1"
API_MODEL = "deepseek-chat"
API_TYPE = "deepseek" # 或 "gemini"
# ==================================================
```
**获取 DeepSeek API 密钥**
- 访问 https://platform.deepseek.com/api_keys
- 注册并创建 API 密钥
- 复制密钥到配置文件
4. **运行应用**
```bash
python app.py
```
或使用 conda 环境:
```bash
conda run -n autocontrol python app.py
```
5. **访问应用**
浏览器自动打开,或手动访问:
```
http://localhost:7860
```
## 📖 使用指南
### 输入系统传递函数
在任意标签页的输入框中输入传递函数的分子和分母系数:
**示例 1:一阶系统**
```
分子: 1
分母: 1,1
传递函数: G(s) = 1/(s+1)
```
**示例 2:二阶系统**
```
分子: 4
分母: 1,2,4
传递函数: G(s) = 4/(s²+2s+4)
```
**示例 3:三阶系统**
```
分子: 1
分母: 1,6,11,6
传递函数: G(s) = 1/(s³+6s²+11s+6)
```
**输入格式**
- 系数从最高次项到常数项
- 用逗号分隔(支持中文或英文逗号)
- 支持小数和负数
- 例如:`1, 2.5, -3, 4` 表示 s³ + 2.5s² - 3s + 4
### 调节系统增益
频域分析和根轨迹分析都支持增益调节:
- **对数滑块**log₁₀(K) 范围 -1 到 3
- -1 对应 K = 0.1
- 0 对应 K = 1
- 1 对应 K = 10
- 2 对应 K = 100
- 3 对应 K = 1000
- **实时显示**:下方数字框显示实际增益值
- **松开更新**:滑块松开后才更新图表,避免卡顿
### AI 问答技巧
**高效提问方式**
**好的问题**
- "请解释 PID 控制器的三个参数如何影响系统性能?"
- "如何根据 Bode 图判断系统的稳定裕度?"
- "为什么阻尼比为 0.707 时系统响应最佳?"
- "推导二阶系统的超调量公式"
**避免的问题**
- "帮我做作业"(太模糊)
- "这个对吗?"(缺少上下文)
- "答案是什么?"(没有提供问题描述)
**公式显示**
AI 回复中的数学公式会自动渲染,支持以下格式:
- 行内公式:`$公式$``\(公式\)`
- 块级公式:`$$公式$$``\[公式\]`
## 🎨 界面特色
### 现代化设计
- **渐变色标题**:紫色渐变视觉效果
- **卡片式布局**:分组清晰,层次分明
- **可滚动知识卡片**:长文档不占据过多空间
- **可折叠章节**:按需展开知识点
### 响应式交互
- **实时更新**:参数改变即时反映在图表上
- **流式对话**:AI 回复逐字显示
- **标签页联动**:切换标签自动加载数据
- **平滑动画**:按钮悬停、卡片滚动效果
### 知识可视化
- **嵌入式公式**:页面内直接显示 LaTeX 公式
- **表格对比**:性能指标、稳定准则表格化
- **颜色编码**:稳定/不稳定用绿/红色标识
- **图标辅助**:emoji 增强视觉识别
## 🛠️ 技术栈
### 前端框架
- **Gradio 4.x**:快速构建机器学习 Web 界面
- **Custom CSS**:现代化样式定制
### 计算库
- **NumPy**:数值计算
- **python-control**:控制系统分析
- **Matplotlib**:图表绘制
### AI 集成
- **aiohttp**:异步 HTTP 请求
- **DeepSeek API**:智能问答后端
- **流式响应**:提升用户体验
## 📁 项目结构
```
AutoControl/
├── app.py # 主应用程序
├── README.md # 项目文档
├── API_CONFIG.md # API 配置详细说明(可选)
├── QUICK_START.md # 快速入门指南(可选)
└── requirements.txt # 依赖列表(可选)
```
## 🔧 高级配置
### 切换到 Gemini API
如果您想使用 Google Gemini API
```python
API_KEY = "your-gemini-api-key"
API_BASE_URL = "https://generativelanguage.googleapis.com/v1beta"
API_MODEL = "gemini-1.5-flash"
API_TYPE = "gemini"
```
### 自定义系统提示词
修改 `chat_with_ai` 函数中的 `system_prompt`
```python
system_prompt = """
你是一位[角色定义]。
请用[语言风格]来回答有关[领域]的问题。
[其他要求...]
"""
```
### 调整图表样式
`matplotlib` 绘图代码中修改:
```python
# 修改图表大小
fig, ax = plt.subplots(figsize=(12, 6))
# 修改颜色主题
ax.plot(x, y, color='#667eea', linewidth=2)
# 修改网格样式
ax.grid(True, alpha=0.3, linestyle='--')
```
## 📚 参考资料
### 经典教材
- 《自动控制原理》- 胡寿松
- 《现代控制工程》- Katsuhiko Ogata
- 《反馈控制理论》- John Doyle
### 在线资源
- [python-control 官方文档](https://python-control.readthedocs.io/)
- [DeepSeek API 文档](https://platform.deepseek.com/docs)
- [Gradio 官方文档](https://www.gradio.app/docs)
## 🤝 贡献指南
欢迎提交 Issue 和 Pull Request
### 贡献方向
- 🐛 修复 Bug
- ✨ 添加新功能(如状态空间分析)
- 📝 改进文档
- 🎨 优化界面设计
- 🧪 添加测试用例
## 📄 许可证
本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。
## 🙏 致谢
- **Gradio**:提供优秀的 Web 界面框架
- **python-control**:强大的控制系统分析库
- **DeepSeek**:高质量的 AI 服务
- 所有贡献者和使用者
## 📞 联系方式
- 项目地址:[GitHub Repository URL]
- 问题反馈:[Issues URL]
- 邮箱:[your-email@example.com]
---
**⭐ 如果这个项目对您有帮助,请给它一个 Star!**
最后更新:2025年10月15日