MATLAB中的代数环概念

        在 Simulink® 模型中,当存在信号环并且信号环中只存在直接馈通模块时,将出现代数环。直接馈通表示 Simulink 需要模块输入信号的值来计算当前时间步的输出。这种信号循环会在同一时间步中产生模块输出和输入的循环依存关系。这会导致一个需要在每个时间步求解的代数方程,从而增加仿真的计算成本。

下面是具有直接馈通输入的模块的一些示例:

·Math Function

·Gain

·Product

·State-Space,当 D 矩阵系数为非零时

·Sum

·Transfer Fcn,当分子和分母同阶时

·Zero-Pole,当模块的零值与极点一样多时

非直接馈通模块维护一个 State 变量。其中两个示例是 Integrator 和 Unit Delay 模块。

提示

        要确定一个模块是否具有直接馈通,请阅读模块参考页的特性部分。

        下图显示代数环的一个示例。Sum 模块是一个代数变量 xa,该变量必须等于第一个输入 u 减去 xa(例如 xa = u – xa)。

 此简单循环的解为 xa = u/2。

数学解释

        Simulink 包含一套用于对常微分方程 (ODE) 进行仿真的数值求解器,它们是您可以写为以下形式的方程组:

其中 x 是状态向量,t 是时间自变量。       

         某些方程组包含涉及自变量和状态向量,但不涉及状态向量的导数的其他约束。此类方程组称为微分代数方程 (DAE)。

        代数一词是指不涉及任何导数的方程。您可以用半显式格式来表示工程中出现的 DAE

其中:

  • f 和 g 可以是向量函数。

  • 第一个方程是微分方程。

  • 第二个方程是代数方程。

  • 微分变量的向量是 x

  • 代数变量的向量是 xa

        在 Simulink 模型中,代数环是代数约束。具有代数环的模型定义微分代数方程组。在 ODE 求解器的每个步长中,Simulink 以数值方式求解代数方程(代数环)的 xa。

图窗中的模型等同于此方程组的半显式形式:

在 ODE 求解器的每个步长中,代数环求解器必须先求解代数约束的 xa,然后再计算导数 ˙x。

物理解释

代数约束:

  • 在对物理系统建模时发生,通常是守恒定律所致,例如质量与能量守恒

  • 当您为模型选择特定坐标系时发生

  • 对动态系统中的系统响应的设计进行约束

        使用 Simscape™ 将跨越机械、电气、液压和其他物理领域的系统建模为物理网络。Simscape 构造描述模型行为的 DAE。软件将这些方程与模型的其余部分集成,然后直接解算 DAE。Simulink 同时对不同物理领域中的组件变量求解,从而避免代数环问题。

人为代数环

        当原子子系统或 Model 模块导致 Simulink 检测到代数环时,将发生人为代数环,即使该子系统的内容不包含从输入到输出的直接馈通也是如此。当您创建原子子系统时,所有 Inport 模块都将是直接馈通,从而导致代数环。

        以包含的模型为例,该模型表示被控对象的简单比例控制,其描述如下

它可以重写为以下状态空间形式: 

该方程组既没有代数变量也没有直接馈通,因此不包含代数环。

 按照以下步骤中的说明修改模型:

  1. 将 Controller 和 Plant 模块包含在子系统中。

  2. 在子系统对话框中,选择视为原子单元使子系统成为原子子系统。

  3. 在模型配置参数的诊断窗格中,将代数环参数设置为 error

        在对此模型进行仿真时,会出现代数环,因为该子系统是直接馈通,即使原子子系统内的路径不是直接馈通也是如此。仿真停止并出现代数环错误。

代数环求解器的工作原理

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

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

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

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

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

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

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

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

xa(t) = u(t) /2.(1)

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

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

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

  • 信赖域

  • 行搜索

        默认情况下,Simulink 选择最佳代数环求解器,并可能在仿真期间在两种方法之间切换。要为模型显式启用自动代数环求解器选项,请在 MATLAB® 命令行中输入:

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

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

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

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

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

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

代数环求解器的限制

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

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

  • 带有离散值输出的模块

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

  • 不连续点

  • Stateflow® 图

模型中代数环的影响

如果模型包含代数环:

  • 不能为模型生成代码。

  • Simulink 代数环求解器可能无法解算代数环。

  • 由于 Simulink 会尝试解算代数环,因此仿真执行速度可能很缓慢。

    对于大多数模型,代数环求解器的第一个时间步会耗费大量计算资源。Simulink 能够快速解算后续时间步,因为上一个时间步为 xa 提供了良好的起点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/41766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【【verilog典型电路设计之流水线结构】】

verilog典型电路设计之流水线结构 下图是一个4位的乘法器结构,用verilog HDL 设计一个两级流水线加法器树4位乘法器 对于流水线结构 其实需要做的是在每级之间增加一个暂存的数据用来存储 我们得到的东西 我们一般来说会通过在每一级之间插入D触发器来保证数据的联…

OpenCV-Python中的图像处理-图像特征

OpenCV-Python中的图像处理-图像特征 图像特征Harris角点检测亚像素级精度的角点检测Shi-Tomasi角点检测SIFT(Scale-Invariant Feature Transfrom)SURF(Speeded-Up Robust Features)FAST算法BRIEF(Binary Robust Independent Elementary Features)算法ORB (Oriented FAST and R…

python编程中有哪些方便的调试方法

大家好,给大家分享一下一个有趣的事情,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 对于每个程序开发者来说,调试几乎是必备技能。常用Pycharm编辑器里的方法有Print大法、log大法,但缺少类似Matlab的…

怎么开通Tik Tok海外娱乐公会呢?

TikTok作为全球知名的社交媒体平台,吸引了数亿用户的关注和参与。许多公司和个人渴望通过开通TikTok直播公会进入这一领域,以展示自己的创造力和吸引更多粉丝。然而,成为TikTok直播公会并非易事,需要满足一定的门槛和申请找cmxyci…

【日常积累】Linux之init系统学习

init系统简介: Linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 bootloader 载入内核,进行内核初始化。内核初始化的最后一步就是启动 pid 为 1 的 init 进程,这个进程是系统的第一个进程,它负责产生…

银河麒麟服务器v10 sp1 .Net6.0 上传文件错误

上一篇:银河麒麟服务器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 .NET 6之前,在Linux服务器上安装 libgdiplus 即可解决,libgdiplus是System.Drawing.Common原生端跨平台实现的主要提供者,是开源mono项目。地址…

ubuntu 部署 ChatGLM-6B 完整流程 模型量化 Nvidia

ubuntu 部署 ChatGLM-6B 完整流程 模型量化 Nvidia 初环境与设备环境准备克隆模型代码部署 ChatGLM-6B完整代码 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术&#x…

力扣 322. 零钱兑换

题目来源:https://leetcode.cn/problems/coin-change/description/ C题解(来源代码随想录):题目中说每种硬币的数量是无限的,可以看出是典型的完全背包问题。动规五部曲分析如下: 确定dp数组以及下标的含义…

原码、反码、补码,进制转换,有符号数和无符号数转换

计算机底层存储数据时,存储的是数据对应的二进制数字。对于整型数据,其二进制表示形式有三种,分别是:原码、反码、补码,而实际存储的是整型数据的补码。 原码、反码以及补码都是有符号的,其中最高位存放符…

带你掌握Stable Diffution商业级玩法

课程介绍 学习地址 《Stable Diffusion商业级玩法》通过详细讲解AI绘画技巧、实操演示和个性化指导,帮助您从零基础成为绘画高手,帮助您有效推广产品或服务,提升市场份额。教您掌握稳定扩散绘画技巧,开启艺术创作新篇章。

Opencv 之ORB特征提取与匹配API简介及使用例程

Opencv 之ORB特征提取与匹配API简介及使用例程 ORB因其速度较快常被用于视觉SLAM中的位姿估计、视觉里程、图像处理中的特征提取与匹配及图像拼接等领域本文将详细给出使用例程及实现效果展示 1. API 简介 创建 static Ptr<ORB> cv::ORB::create (int nfeatures 500…

无涯教程-Perl - use函数

描述 此函数将MODULE导出的所有功能(或仅LIST引用的功能)导入当前包的名称空间。有效等效于- BEGIN { require "Module.pm"; Module->import(); }也用于在当前脚本上强加编译器指令(编译指示),尽管从本质上讲它们只是模块。 请注意,use语句在编译时进行判断。在…

springcloud3 hystrix实现服务熔断的案例配置3

一 hystrix的熔断原理 1.1 hystrix的熔断原理 在springcloud的框架里&#xff0c;熔断机制是通过hystrix实现&#xff0c;hystrix会监控服务之间的调用。当失败调用达到一定的阈值&#xff0c;默认是5s内失败20次&#xff0c;就会启用hystrix的熔断机制&#xff0c;使用命Hy…

【C++ 记忆站】缺省参数

文章目录 缺省参数的概念缺省参数的分类1、全缺省参数2、半缺省参数 缺省参数实际应用场景 缺省参数的概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实参则采用该形参的缺省值&#xff0c;否则使用指定的实参 正常调用一…

Docker部署ES服务,canal全量同步的时候内存爆炸,ES/Canal Adapter自动关闭,CPU100%

文章目录 问题解决方案1. 对ES的限制2. 对Canal-Adapter的限制 问题 使用canal-adapter全量同步&#xff08;参考Canal Adapter1.1.5版本API操作服务&#xff0c;手动同步数据&#xff08;4&#xff09;&#xff09;的时候 小批量数据可以正常运行&#xff08;几千条&#xf…

Llama 2免费托管及API提供

Llama 2 是 Meta 最新的文本生成模型&#xff0c;目前其性能优于所有开源替代方案。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 1、强大的Llama 2 它击败了 Falcon-40B&#xff08;之前最好的开源基础模型&#xff09;&#xff0c;与 GPT-3.5 相当&#xff0c;仅低…

【uni-app】 .sync修饰符与$emit(update:xxx)实现数据双向绑定

最近在看uni-app文档&#xff0c;看到.sync修饰符的时候&#xff0c;觉得很有必要记录一下 其实uni-app是一个基于Vue.js和微信小程序开发框架的跨平台开发工具 所以经常会听到这样的说法&#xff0c;只要你会vue&#xff0c;uni-app就不难上手 在看文档的过程中&#xff0c;发…

.netcore grpc客户端工厂及依赖注入使用

一、客户端工厂概述 gRPC 与 HttpClientFactory 的集成提供了一种创建 gRPC 客户端的集中方式。可以通过依赖包Grpc.Net.ClientFactory中的AddGrpcClient进行gRPC客户端依赖注入AddGrpcClient函数提供了许多配置项用于处理一些其他事项&#xff1b;例如AOP、重试策略等 二、案…

miniExcel 生成excel

一、nuget dotnet add package MiniExcel --version 1.31.2 二、新建表及数据 ExampleProducts 三、这里我用了Dapper.Query方法 读取excel public virtual async Task<IActionResult> Anonymous(){try{//using (var connection _dbContext.GetDbConnection())//{//…

linux中的ifconfig和ip addr

在linux操作系统中ifconfig和ip addr都是显示网卡配置信息的命令&#xff0c;好多人有疑惑它们有什么区别呢 区别1&#xff1a;对于linux发行的版本不一样 ip addr是对新发行版本的linux使用会比较多&#xff1b;而ifconfig是老版本遇到使用的会比较多。 区别2&#xff1a;显…