相关文章推荐
不爱学习的柠檬  ·  视觉计算实验室参加第八届中国计算机学会生物信 ...·  6 月前    · 
谈吐大方的弓箭  ·  中国矿业大学(北京):助力瑶山职业教育,打造 ...·  8 月前    · 
大鼻子的鸡蛋  ·  Python通过云平台接口读取温度湿度传感器 ...·  1 年前    · 
烦恼的手术刀  ·  名单来了!中国旅游日,上海62家景区(点)限 ...·  1 年前    · 
暗恋学妹的鸵鸟  ·  MySQL 8.0 ...·  1 年前    · 
Code  ›  Matlab求解微分代数方程 (DAE)开发者社区
https://cloud.tencent.com/developer/article/2058057
个性的小蝌蚪
1 年前
用户9925864

Matlab求解微分代数方程 (DAE)

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
用户9925864
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > Matlab求解微分代数方程 (DAE)

Matlab求解微分代数方程 (DAE)

作者头像
用户9925864
发布 于 2022-07-27 08:26:25
1.2K 0
发布 于 2022-07-27 08:26:25
举报
文章被收录于专栏: 算法工程师的学习日志 算法工程师的学习日志

周末有位同学请教了一个问题,他要求解一个微分方程组,但微分方程变量之间还有个线性方程组关系,这个就是典型的微分代数方程 ,Matlab里面有专门的求解方法,

什么是微分代数方程?

微分代数方程是一类微分方程,其中一个或多个因变量导数未出现在方程中。方程中出现的未包含其导数的变量称为代数变量,代数变量的存在意味着不能将这些方程记为显式形式 y′=f(t,y)。

ode15s 和 ode23t 求解器可以使用奇异质量矩阵 M(t,y)y′=f(t,y) 来解算微分指数为1的线性隐式问题,包括以下形式的半显式 DAE

y′0=f(t,y,z)

0 =g(t,y,z)

在此形式中,由于主对角线存在一个或多个零值,因此代数变量的存在会产生奇异质量矩阵。

默认情况下,求解器会自动检验质量矩阵的奇异性,以检测 DAE 方程组。如果提前知道奇异性,则可将 odeset 的 MassSingular 选项设为 'yes'。对于 DAE,还可以使用 odeset 的 InitialSlope 属性为求解器提供 y′(0) 的初始条件估计值。

举个例子

其中x1(0)=0.8;x2(0)=x3(0)=0.1;

1)方程写成DAE形式

2)编程求解

代码语言: javascript
复制
%% 
clear
close all
odefun = @(t,x)[-0.2*x(1)+x(2)*x(3)+0.3*x(1)*x(2);
                2*x(1)*x(2)-5*x(2)*x(3)-2*x(2)^2;
                x(1)+x(2)+x(3)-1]; %微分方程
M = [1 0 0;0 1 0;0 0 0]; % 质量矩阵
options=odeset('mass',M); % 定义mass属性
 
推荐文章
不爱学习的柠檬  ·  视觉计算实验室参加第八届中国计算机学会生物信息学会议
6 月前
谈吐大方的弓箭  ·  中国矿业大学(北京):助力瑶山职业教育,打造产教融合“同心圆” - 中华人民共和国教育部政府门户网站
8 月前
大鼻子的鸡蛋  ·  Python通过云平台接口读取温度湿度传感器的实时监控数据_消息_读取_Python
1 年前
烦恼的手术刀  ·  名单来了!中国旅游日,上海62家景区(点)限时门票半价_文旅要闻_上海市文化和旅游局
1 年前
暗恋学妹的鸵鸟  ·  MySQL 8.0 InnoDB全文索引可用于生产环境吗(续)-腾讯云开发者社区-腾讯云
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号