代数环求解器的工作原理

当模型中包含代数环时,Simulink 在每个时间步使用非线性求解器解算代数环。求解器执行迭代以确定代数约束的解(如果存在)。因此,有代数环的模型的运行速度可能比没有代数环的模型的运行速度慢。

Simulink 使用折线信赖域算法解算代数环。使用的容差小于 ODE 求解器 Reltol 和 Abstol。这是因为 Simulink 使用“显式 ODE 方法”来解算指数为 1 的微分代数方程 (DAE)。

要使代数环求解器发挥作用,

必须存在一个模块,在该模块中,代数环求解器可以中断循环并尝试解算该循环。

模型应该具有双精度实信号。

基础代数约束必须是一个平滑函数。

例如,假设您的模型中有一个带两个输入的 Sum 模块:一个相加,另一个相减。如果您将 Sum 模块的输出馈送给其中一个输入,则会创建一个代数环,其中的所有模块都包括直接馈通。

Sum 模块无法在不知道输入的情况下计算输出。Simulink 会检测代数环,代数环求解器将使用迭代循环解算代数环。在 Sum 模块示例中,该软件通过以下方式计算正确的结果:xa(t) = u(t) /2.(1)

代数环求解器使用基于梯度的搜索方法,这需要与代数环相对应的代数约束的连续一阶导数。因此,如果代数环包含不连续性,代数环求解器可能会失败。

有关详细信息,请参阅 Solving Index-1 DAEs in MATLAB and Simulink(在 MATLAB 和 Simulink 中解算指数为 1 的 DAE)

[1]代数环求解器中的信赖域算法和行搜索算法

Simulink 代数环求解器使用下面两种算法之一来解算代数环:

信赖域

行搜索

默认情况下,代数环求解器使用信赖域算法。

如果代数环求解器不能解算使用信赖域算法的代数环,请尝试使用行搜索算法对模型进行仿真。

要切换到行搜索算法,请在 MATLAB® 命令行中,输入:

set_param(model_name, 'AlgebraicLoopSolver', 'LineSearch');

要切换回信赖域算法,请在 MATLAB 命令行中,输入:

set_param(model_name, 'AlgebraicLoopSolver', 'TrustRegion');

有关详细信息,请参阅:

Shampine 和 Reichelt 的 nleqn.m 代码

User Guide for MINPACK-1(MINPACK-1 用户指南)中的 Fortran 程序 HYBRD1[2]

Numerical Methods for Nonlinear Algebraic Equations(非线性代数方程的数值方法)中 Powell 的“A Fortran subroutine for solving systems in nonlinear equations”(用于解算非线性方程组的 Fortran 子例程)[3]

非线性最小化信赖域方法(Optimization Toolbox).

线搜索(Optimization Toolbox).代数环求解器的限制

代数环解算是一个迭代过程。仅当代数环收敛到一个明确的答案时,Simulink 代数环求解器才会成功。当代数环无法收敛,或收敛速度太慢时,仿真将退出并显示错误。

代数环求解器无法解算包含以下任何一项的代数环:

带有离散值输出的模块

带有非双精度或复数输出的模块

不连续点

Stateflow® 图

matlab memory 代数环,代数环概念 - MATLAB Simulink - MathWorks 中国相关推荐

  1. matlab对信号积分,对信号求积分 - Simulink - MathWorks 中国

    说明 Integrator 模块输出其输入信号相对于时间的积分值. Simulink® 将 Integrator 模块作为具有一种状态的动态系统进行处理.模块动态由以下方程指定: {x˙(t)=u(t ...

  2. matlab 低级图形错误,解决低级图形问题 - MATLAB Simulink - MathWorks 中国

    选择适合您的系统的渲染器实现 MATLAB 显示所用的图形渲染器实现是硬件加速.基础硬件加速还是软件.默认情况下,MATLAB 会尝试使用硬件加速实现(如果您的图形硬件支持).您可以通过切换到软件实现 ...

  3. matlab 数字转化为文字,将文本转换为数值 - MATLAB Simulink - MathWorks 中国

    双精度值 将文本转换为双精度值的推荐方法是使用 str2double 函数.它可以转换字符向量.字符串数组和字符向量元胞数组. 例如,使用单引号创建字符向量,并将其转换为它所表示的数字. X = st ...

  4. 如何建立分类模型matlab,创建简单模型 - MATLAB Simulink - MathWorks 中国

    创建简单模型 您可以使用 Simulink® 来对系统建模,然后仿真该系统的动态行为.本教程中创建简单模型所使用的基本方法也适用于创建更复杂的模型.此示例对简化的汽车运动进行仿真.当踩下油门踏板时,汽 ...

  5. 初始化稀疏矩阵 matlab,访问稀疏矩阵 - MATLAB Simulink - MathWorks 中国

    稀疏矩阵运算中的索引 由于稀疏矩阵是以压缩稀疏列格式存储的,因此为稀疏矩阵进行索引的相关成本与为满矩阵进行索引的相关成本不同.在只需更改稀疏矩阵中的若干元素时,这类成本可忽略不计,因此,在这类情况下, ...

  6. matlab目标支持包安装问题,配置系统目标文件 - MATLAB Simulink - MathWorks 中国

    配置系统目标文件 要对模型进行配置以用于代码生成,请按照选择支持代码生成的求解器和从 STF 浏览器中选择系统目标文件中的步骤进行操作.选择系统目标文件时,其他模型配置参数会相应更改,以满足执行环境的 ...

  7. matlab表达式,表达式 - MATLAB Simulink - MathWorks 中国

    数组运算符 如果矩阵不用于线性代数运算,则成为二维数值数组.数组的算术运算按元素执行.这意味着,加法和减法运算对数组和矩阵都是相同的,但乘法运算不相同.MATLAB 的乘法数组运算表示法中包含点,也就 ...

  8. matlab 的字符类型转换,数据类型转换 - MATLAB Simulink - MathWorks 中国

    将文本转换为数值数组.文本可以表示浮点值.日期和时间,以及十六进制和二进制数字.如果文本表示日期和时间,则可以将文本转换为日期时间或持续时间值. 将数值转换为文本.文本可以表示浮点值,其格式可以使用或 ...

  9. matlab怎么没有编辑器,实时编辑器介绍 - MATLAB Simulink - MathWorks 中国

    添加人口统计数据 将实时脚本划分为多个节.每一节均可以包含文本.代码和输出.MATLAB 代码显示为灰色背景,输出显示为白色背景.要创建新的节,请转至实时编辑器选项卡,然后点击分节符按钮. 添加 19 ...

最新文章

  1. 悬浮球 / 悬浮按钮 / 辅助按钮
  2. 第四范式:现代存储架构下的系统优化实践
  3. TensorFlow的一些基本概念
  4. autogen.sh 的使用
  5. 在苹果Mac中将 WEBP 图片转成 JPG、PNG 格式的 2 种方法
  6. Windows屏幕保护程序的制作
  7. M3DGIS三维电子沙盘大数据人工智能元宇宙地理信息系统第5课
  8. mysql5.0基础语句_mysql基础语句
  9. JAVA简介及视频教程
  10. DNS服务详解(解析+搭建)
  11. 新媒体运营如何入门?
  12. Rails启动项一些参数的调整
  13. color demura原理_一种消除液晶屏高温MURA的工艺研究
  14. R语言使用epiDisplay包的kap函数(kap.m.raters)计算Kappa统计量的值(总一致性、期望一致性)、对多个评分对象的结果进行一致性分析、评分的类别为多个类别
  15. 公共WIFI短信认证功能的实现原理
  16. WSS、SSL 和 https 之间的关系
  17. Mac 设置允许任何来源软件运行
  18. python 常用函数
  19. 市场调研报告-全球与中国溶剂净化器市场现状及未来发展趋势
  20. Iceberg 合并小文件并删除历史(Flink)

热门文章

  1. 经典案例重点案例:点名表,JS正则验证全选、全不选、反选,点击可以实现三个功能,轮播图 字符串截取以及替换,图片切换
  2. 好记性不如烂笔头、多记笔记、多总结、多反思
  3. 集成QQ钱包---踩坑
  4. RGB颜色与16进制色以及透明色
  5. chinapay支付接口php,php的chinapay扩充安装 - chinapay
  6. 使用TinyProxy搭建代理服务器
  7. JavaScript 删除对象中的某一项
  8. 拉新、促活、留存、付费转化
  9. 十进制转化成二、八、十六进制的一个小程序
  10. 老主板并口安装串口硬盘总攻略!~