--- name: formula-normalizer description: 智能公式规范化技能,提供数学公式格式标准化、符号一致性检查、公式风格转换等功能,以及学位论文中经典算法对比描述的通用模板生成。适用于:Markdown文档中数学公式的规范化处理、全文符号一致性检查、算法对比描述的学术写作等场景。 metadata: version: 0.1.0 license: Apache-2.0 topics: [codex, thesis, latex, formula] --- # Formula Normalizer ## Overview 本技能提供两大核心功能:(1)数学公式格式标准化与符号一致性检查;(2)学位论文中经典算法对比描述的通用模板生成。通过系统化的规范化流程和结构化模板,确保学术文档中数学表达的专业性和一致性。 ## Workflow Decision Tree ``` 用户请求处理 ↓ 识别请求类型(公式规范化 / 算法对比描述) ↓ ┌─────────────────┴─────────────────┐ │ │ 公式规范化 算法对比描述 │ │ ↓ ↓ 分析文档中公式 收集算法信息 ↓ ↓ 询问风格偏好 生成结构化描述 ↓ ↓ 应用规范化规则 输出学术级对比 ↓ ↓ 检查符号一致性 质量检验 ↓ ↓ 返回规范化结果 返回对比描述 └─────────────────┬─────────────────┘ ↓ 输出最终结果 ``` ## Part 1: 公式格式标准化 ### 适用场景 - Markdown文档中数学公式的规范化处理 - 学位论文中公式格式的统一 - LaTeX语法错误检查和修正 - 全文数学符号一致性检查 ### 核心规则 #### 1. 独立显示公式标准化 **格式要求**: - 所有独立显示的数学公式(单独成行、居中显示)必须使用双美元符包裹 - 格式:`$$ ... $$` - 公式前后必须有适当的空行 **禁止格式**: - `\[ ... \]` - LaTeX display math - `$$...$$`(无空格)- 不规范的格式 - `\begin{equation}...\end{equation}` - LaTeX equation环境 - 其他非标准LaTeX环境 **正确示例**: ```markdown 牛顿迭代法的迭代公式为: $$ x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)} \tag{2} $$ 其中:$x_k$ 为第 $k$ 次迭代的近似解。 ``` #### 2. 行内公式标准化 **格式要求**: - 所有行内数学公式(嵌入在段落文字中)必须使用单美元符包裹 - 格式:`$ ... $` **正确示例**: ```markdown 函数 $f(x)$ 在区间 $[a, b]$ 上连续。 当 $|x_{k+1} - x_k| < \varepsilon$ 时,算法收敛。 ``` #### 3. LaTeX语法正确性 **要求**: - 公式内部的LaTeX语法应保持正确 - 包括上下标、分数、希腊字母、运算符等 **常见修正**: - 上下标:`x^2` → `x^{2}`, `x_i` → `x_{i}` - 分数:`a/b` → `\frac{a}{b}` - 希腊字母:`\alpha`, `\beta`, `\gamma` 等 - 运算符:`\neq`, `\leq`, `\geq`, `\times` 等 #### 4. 语义保持原则 **要求**: - 保留原文的语义与内容不变 - 仅修改格式,不增删文字 - 不改写句子或调整公式含义 ### 公式风格模式 在执行规范化前,必须询问用户的风格偏好: #### Professional(专业化风格) **特点**: - 使用完整LaTeX语法 - 包含所有必要的括号和分隔符 - 公式表达严谨、规范 - 适合正式学术出版物 **示例**: ```markdown $$ x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)} $$ ``` #### Concise(简洁化风格) **特点**: - 简化公式表达 - 移除冗余括号和分隔符 - 公式表达简洁、直观 - 适合技术文档和讲义 **示例**: ```markdown $$ x_{k+1} = x_k - f(x_k)/f'(x_k) $$ ``` #### Standard(标准风格) **特点**: - 保持原文风格 - 仅进行格式规范化 - 不改变公式表达方式 - 适合一般性文档 ### 符号一致性检查 #### 检查维度 1. **变量命名一致性** - 统一全文变量命名(如 `x_i` vs `x_{i}`) - 统一上下标格式 - 统一向量/矩阵表示(如 `\mathbf{x}` vs `\vec{x}`) 2. **运算符格式一致性** - 统一乘法运算符(`\times` vs `*`) - 统一除法运算符(`\frac` vs `/`) - 统一比较运算符(`\leq` vs `<=`) 3. **希腊字母一致性** - 统一使用LaTeX命令(`\alpha` vs `α`) - 统一大小写格式 - 统一斜体/正体使用 4. **函数命名一致性** - 统一函数表示(如 `\sin` vs `sin`) - 统一自定义函数格式 - 统一缩写和全称 ### 处理流程 #### Phase 1: 文档分析 1. **公式识别** - 识别所有独立显示公式 - 识别所有行内公式 - 识别未正确包裹的数学表达式 2. **格式检查** - 检查公式格式是否符合规范 - 识别非标准格式 - 检查LaTeX语法错误 3. **符号统计** - 统计变量使用频率 - 统计运算符使用情况 - 统计希腊字母使用情况 #### Phase 2: 风格确认 **询问用户**: ``` 请问您希望采用哪种公式风格? 1. Professional(专业化)- 使用完整LaTeX语法,适合正式学术出版物 2. Concise(简洁化)- 简化公式表达,适合技术文档 3. Standard(标准)- 保持原文风格,仅进行格式规范化 ``` #### Phase 3: 规范化应用 1. **格式转换** - 将非标准格式转换为标准格式 - 修正LaTeX语法错误 - 添加必要的空行和分隔符 2. **符号统一** - 统一变量命名格式 - 统一运算符格式 - 统一希腊字母格式 3. **一致性检查** - 验证全文符号一致性 - 识别不一致的符号使用 - 提供统一建议 #### Phase 4: 结果输出 1. **规范化文档** - 输出规范化后的完整文档 - 保持原文语义和内容 2. **修改报告** - 列出所有修改内容 - 显示修改前后的对比 - 提供规范化统计 3. **一致性报告** - 列出符号使用情况 - 识别不一致的符号 - 提供统一建议 ### 处理示例 #### 输入示例 ```markdown 函数 f(x) = x^2 在区间 [a,b] 上连续。 牛顿迭代公式为: \[ x_{k+1} = x_k - f(x_k)/f'(x_k) \] 其中 x_k 为第 k 次迭代的近似解。 ``` #### 输出示例(专业化风格) ```markdown 函数 $f(x) = x^{2}$ 在区间 $[a,b]$ 上连续。 牛顿迭代公式为: $$ x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)} $$ 其中:$x_k$ 为第 $k$ 次迭代的近似解。 ``` #### 输出示例(简洁化风格) ```markdown 函数 $f(x) = x^2$ 在区间 $[a,b]$ 上连续。 牛顿迭代公式为: $$ x_{k+1} = x_k - f(x_k)/f'(x_k) $$ 其中:$x_k$ 为第 $k$ 次迭代的近似解。 ``` --- ## Part 2: 算法对比描述生成 ### 适用场景 在硕士/博士论文的以下章节中,需对两种或多种基础算法/数值方法/求解策略进行正式、结构化、可比较的介绍: - **引言** - 介绍研究背景和相关方法 - **研究背景** - 阐述领域内常用方法 - **相关工作** - 回顾和对比现有方法 - **方法论** - 详细描述所采用的方法 **应用领域**: - 计算力学、控制工程、金融数学 - 地球物理、生物建模、能源系统 - 机器学习底层优化器等任何涉及数值计算的学科 **核心特征**:问题导向 + 方法分述 + 公式支撑 + 对比总结 ### 输入要素 为生成高质量的算法对比描述,需要用户提供以下结构化信息: | 要素 | 说明 | 示例 | |------|------|------| | **研究问题** | 所要解决的具体数值/计算问题 | "求解稳态热传导偏微分方程的隐式离散系统" | | **变量性质** | 强调是**连续值**(实数域)求解 | "状态变量 $u \in \mathbb{R}^n$ 为连续场量" | | **待描述方法列表** | 明确需介绍的算法名称(2–3种为宜) | "共轭梯度法、雅可比迭代法" 或 "二分法、牛顿法" | | **是否需公式** | 是否包含关键公式及符号说明 | "是,所有公式需编号并附符号注释" | | **结构偏好** | 是否要求"原理→公式→步骤→对比"流程 | "按方法逐一展开,最后统一比较" | ### 输出规范 生成内容须满足以下标准: #### 语言风格 - 正式、客观、逻辑严密 - 符合中文学术论文规范 - 使用准确的学术术语 #### 整体结构 1. **总起段** - 阐明研究问题背景 - 说明连续性特征 - 引入所述方法的必要性 2. **方法A描述** - 自然段阐述**基本原理与思想来源** - 给出**核心公式或迭代格式**(带编号) - **紧接公式下方**提供**符号说明表** - 自然段概述**关键实施步骤与终止条件** 3. **方法B描述** - 同方法A的结构 - 可扩展至方法C 4. **对比分析段** - 从以下维度进行客观比较: - 收敛性(全局/局部、阶数) - 计算复杂度(每步成本、内存需求) - 鲁棒性(对初值、参数、噪声的敏感性) - 适用前提(如光滑性、可导性、单调性) - 在当前应用领域的适配性 #### 数学表达 - 使用LaTeX格式 - 变量首次出现时应有语义定义 - 避免未解释的缩写(如首次出现"PDE"应写"偏微分方程(Partial Differential Equation, PDE)") #### 领域融合 - 将方法动机与应用场景自然结合 - 避免"方法孤岛" - 体现问题驱动的动机 ### 内容结构模板 ```markdown 在[研究领域]中,[具体问题,如"非线性系统的稳态响应计算"]通常归结为对连续变量 [变量符号] ∈ ℝⁿ 的求解任务,其数学形式常表现为[方程类型,如"非线性代数方程组 F(x) = 0"或"变分问题"]。针对此类问题,[方法A]与[方法B]作为两类具有代表性的数值策略,因其[各自优势],被广泛应用于[领域名称]的相关研究中。 [方法A名称]是一种[定性分类,如"基于区间收缩的确定性方法"或"基于梯度信息的一阶优化器"],其核心思想是[自然语言描述原理,可引用数学基础如介值定理、不动点原理、能量最小化等]。该方法特别适用于[说明适用场景,如"函数不可导但连续"或"大规模稀疏系统"]的情形。 [方法A]的关键更新规则/迭代公式如下: $$ [公式] \tag{1} $$ 其中: - [符号₁]:[物理/数学含义]; - [符号₂]:[单位或约束条件]; - ⋯ 其实现通常包含以下步骤:(1)[初始化,如设定初始区间或初值];(2)[主循环中的计算操作];(3)[收敛判据,如 ‖rₖ‖ < ε 或 |xₖ₊₁ − xₖ| < δ];(4)[输出结果或失败处理]。该方法具有[收敛性质,如"全局线性收敛"],其主要优势在于[鲁棒性/无需导数等],但[局限性,如"收敛速度慢"]。 相比之下,[方法B名称]则属于[另一类方法,如"基于局部近似的高阶方法"或"利用二阶信息的牛顿型算法"],其设计动机源于[思想来源,如"泰勒展开"、"KKT条件"等]。在[应用场景]中,当[前提条件,如"目标函数二阶可微"或"雅可比矩阵非奇异"]成立时,该方法能够显著提升求解效率。 [方法B]的迭代格式可表示为: $$ [公式] \tag{2} $$ 其中: - [符号₁]:[说明]; - [符号₂]:[说明]; - ⋯ 典型实施流程包括:(1)[初值选取策略];(2)[每步所需计算量,如函数值、梯度、Hessian];(3)[更新规则];(4)[收敛性监控]。在满足[理论假设]的前提下,该方法具备[收敛特性,如"局部超线性收敛"],但对[敏感因素,如初值质量、病态性]较为敏感。 综合而言,[方法A]与[方法B]在解决[研究问题]时呈现出明显的互补性。[方法A]以[优点]见长,适合[使用场景];而[方法B]则在[条件满足时]展现出[性能优势],但需承担[风险或成本]。因此,在实际工程或科研实践中,常采用[混合策略,如"外层用A保证收敛,内层用B加速"],以在**稳定性**与**效率**之间取得平衡。 ``` ### 输出示例 #### 示例:二分法 vs 牛顿法 ```markdown 在数值计算领域,非线性方程求根问题通常归结为对连续变量 $x \in \mathbb{R}$ 的求解任务,其数学形式常表现为非线性代数方程 $f(x) = 0$。针对此类问题,二分法与牛顿迭代法作为两类具有代表性的数值策略,因其各自的优势,被广泛应用于科学计算和工程应用的相关研究中。 二分法是一种基于区间收缩的确定性方法,其核心思想是利用连续函数的介值定理,通过不断缩小包含根的区间来逼近真实解。该方法特别适用于函数不可导但连续的情形,对函数的光滑性要求较低。 二分法的关键更新规则如下: $$ [a_{k+1}, b_{k+1}] = \begin{cases} [a_k, c_k] & \text{if } f(a_k) \cdot f(c_k) < 0 \\ [c_k, b_k] & \text{if } f(c_k) \cdot f(b_k) < 0 \end{cases} \tag{1} $$ 其中: - $[a_k, b_k]$ 为第 $k$ 次迭代的区间,满足 $f(a_k) \cdot f(b_k) < 0$; - $c_k = \frac{a_k + b_k}{2}$ 为区间中点; - $f(\cdot)$ 为目标函数。 其实现通常包含以下步骤:(1)选取初始区间 $[a_0, b_0]$,确保函数在区间端点异号;(2)计算区间中点 $c_k$ 及其函数值 $f(c_k)$;(3)根据函数值符号更新区间;(4)判断收敛条件(如 $|b_k - a_k| < \varepsilon$ 或 $|f(c_k)| < \delta$),若满足则终止,否则继续迭代。该方法具有全局线性收敛性,其主要优势在于鲁棒性强、无需导数信息,但收敛速度较慢,每次迭代仅将区间长度减半。 相比之下,牛顿迭代法则是一种基于局部线性化思想的高阶数值方法,适用于函数光滑且导数可计算的情形。其核心在于利用函数在当前近似点处的一阶泰勒展开构造切线,并以切线与横轴的交点作为下一轮迭代的估计值。在车辆动力学中,当涉及如纵向加速度平衡、稳态转向角求解等可导非线性方程时,牛顿法能显著提升收敛效率。 牛顿迭代法的迭代公式为: $$ x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)} \tag{2} $$ 其中: - $x_k$ 为第 $k$ 次迭代的近似解; - $f(x_k)$ 为函数在 $x_k$ 处的取值; - $f'(x_k)$ 为函数在 $x_k$ 处的一阶导数,且要求 $f'(x_k) \neq 0$。 该方法的关键步骤包括:(1)选取初始猜测值 $x_0$,通常基于物理先验知识(如车辆稳态运行工况下的合理参数范围);(2)在每一步迭代中计算函数值 $f(x_k)$ 及其导数 $f'(x_k)$;(3)利用公式 (2) 更新近似解;(4)判断收敛条件(如 $|x_{k+1} - x_k| < \varepsilon$ 或 $|f(x_{k+1})| < \delta$),若满足则终止,否则继续迭代。在函数 $f$ 二阶连续可导且初值 $x_0$ 充分接近真实根的条件下,牛顿法具有局部二次收敛性,即误差平方级衰减,远快于二分法。 综合而言,二分法与牛顿迭代法在解决非线性方程求根问题时呈现出明显的互补性。二分法以全局收敛和鲁棒性见长,适合初值未知或函数性质复杂的场景;而牛顿法则在初值质量良好且函数光滑时展现出超线性收敛优势,但需承担对初值敏感和导数计算成本的风险。因此,在实际工程或科研实践中,常采用混合策略(如外层用二分法保证收敛,内层用牛顿法加速),以在稳定性与效率之间取得平衡。 ``` ### 快速定制关键词替换表 | 占位符 | 可替换内容示例 | |---------|---------------| | `[研究领域]` | 计算流体力学、结构健康监测、量化金融、神经动力学 | | `[研究问题]` | 非线性方程求根、无约束优化、线性系统求解、特征值计算 | | `[变量性质]` | 连续状态向量、实值控制参数、时空场函数 | | `[方法A/B]` | 二分法 / 牛顿法;梯度下降 / 共轭梯度;显式欧拉 / 隐式龙格-库塔 | | `[收敛性]` | 全局线性收敛、局部二次收敛、Q-超线性收敛、仅在凸条件下收敛 | ### 注意事项与最佳实践 - **术语准确性**:区分相似概念(如"二分查找"用于离散数组 vs "二分法"用于连续求根) - **收敛性表述严谨**:明确"全局收敛"需额外条件(如凸性、Lipschitz连续),避免过度承诺 - **领域贴合技巧**:在描述方法动机时,加入一句领域语境,例如:"在电池管理系统中,由于开路电压-荷电状态映射常呈非光滑特性,二分法成为可靠选择" - **可扩展性**:本模板可轻松扩展至三方法对比,只需复制"方法描述"模块 - **避免绝对优劣**:强调"适用条件决定性能",而非"方法A优于方法B" --- ## Resources ### references/ - [formula-rules.md](references/formula-rules.md) - 详细的公式格式规范和LaTeX语法规则 - [algorithm-template.md](references/algorithm-template.md) - 算法对比描述的完整模板和示例 - [symbol-consistency.md](references/symbol-consistency.md) - 符号一致性检查的详细规则和方法 这些参考文件包含详细的实施指南、具体规则和示例,在执行规范化任务时应根据需要查阅。