拓冰建站拓冰建站
首页 / 资讯中心 / 正文

SimuPy矩阵工具进阶:用矩阵表达式快速构造向量动力系统

SimuPy矩阵工具进阶用矩阵表达式快速构造向量动力系统【免费下载链接】simupyA framework for modeling and simulating dynamical systems项目地址: https://gitcode.com/gh_mirrors/si/simupySimuPy 是一个基于 Python 的动力系统建模与仿真框架而它的矩阵工具simupy/matrices.py能让工程师用矩阵表达式快速构造向量动力系统写出一行矩阵微分方程就能自动生成可仿真、可互联的系统对象。本文以 Riccati 微分方程为例带你走通从定义符号矩阵到块图仿真的完整流程告别逐元素手写状态方程的繁琐工作。为什么矩阵表达式更适合描述动力系统在控制工程和数学建模中我们习惯用矩阵书写系统方程例如$$\dot{X}(t) F\big(X(t)\big)$$如果 $X$ 是一个 $2\times 2$ 矩阵直接展开就要写 4 条状态方程矩阵越大越痛苦。SimuPy 的思路是保留矩阵表达式的数学形态在构造系统时自动展平为向量形式仿真结束后再还原回矩阵。这样既符合直觉又不用手写展开代码。matrices 模块的3个核心函数矩阵工具位于simupy/matrices.py官方 API 说明见docs/api/matrices.rst。共 3 个函数各司其职1️⃣ construct_explicit_matrix批量生成符号矩阵传入一个前缀名和维度即可自动生成全符号矩阵每个元素命名为前缀_行号列号如s_11、s_22。symmetricTrue强制矩阵对称上下三角复用同一符号适合惯量、质量矩阵diagonal0只保留对角线元素构造对角矩阵dynamicTrue生成时变符号如 $s(t)$表示该矩阵随时间变化。2️⃣ matrix_subs矩阵级批量替换常系数矩阵如系统矩阵 $A$、$B$不需要参与符号推导用matrix_subs可一次把符号矩阵中每个元素替换为数值矩阵的对应元素比逐项替换干净得多。它支持三种传参方式单个矩阵对、矩阵对列表、字典形式。3️⃣ system_from_matrix_DE矩阵微分方程 → 向量动力系统这是整个模块的核心。给它传入矩阵右端表达式mat_DE和矩阵状态mat_var它会自动把矩阵状态展平为向量去重按相同顺序组装状态方程右端向量调用DynamicalSystem定义在simupy/systems/symbolic.py生成符号系统并自动生成状态方程、输出方程与 Jacobian 的可调用函数。整个过程你只需要提供矩阵表达式向量展开全部由工具完成 ✨实战用矩阵表达式模拟 Riccati 微分方程项目自带一个经典示例examples/riccati_system.py求解有限时域 LQR 跟踪问题中的 Riccati 微分方程。核心代码只有几行矩阵运算# 符号矩阵S 随时间变化dynamicTrueA、B、Q、R 为常系数 Ss construct_explicit_matrix(s, 2, 2, symmetricTrue, dynamicTrue) As construct_explicit_matrix(a, 2, 2, dynamicFalse) # 矩阵微分方程一行写完 Ssdot Qs As.T*Ss Ss*As - Ss*Bs*Rs.inv()*Bs.T*Ss # 展平为向量动力系统并替换常系数矩阵的数值 SG_sys system_from_matrix_DE(SGdot, SG, rxs, dict(matrix_subs((As, An), (Bs, Bn), (Qs, Qn), (Rs, Rn))))随后用BlockDiagramsimupy/block_diagram.py把系统接入参考输入调用simulate()即可得到 $s_{ij}(t)$、$g_i(t)$ 的完整解再据此构造最优控制器闭环仿真。整个流程从矩阵公式到仿真曲线一气呵成。小贴士 变量名规则construct_explicit_matrix生成的元素名是前缀_ij维度建议小于 10命名才清晰对称性优先于对角线diagonal参数的优先级高于symmetric非方阵不能设为对称或对角无直接前馈SimuPy 的数学约定见docs/math.rst假设输入输出间无直接通路以避免代数环带前馈的模型可通过增广状态处理想深入符号系统DynamicalSystem还支持自定义代码生成器替换默认的sympy.lambdify包装。小结SimuPy 的矩阵工具让矩阵语言直接成为建模语言construct_explicit_matrix定义符号矩阵matrix_subs批量代入数值system_from_matrix_DE一键展平为向量动力系统。对于状态维度较高、结构具有矩阵对称性的模型Riccati 方程、多体动力学、状态空间方程族这套组合能显著减少手写代码量也更贴近工程师的推导习惯。动手跑一遍examples/riccati_system.py是上手的最佳捷径 【免费下载链接】simupyA framework for modeling and simulating dynamical systems项目地址: https://gitcode.com/gh_mirrors/si/simupy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门