相关文章推荐
神勇威武的豆浆  ·  《辛普森一家》长寿秘诀是“神预言”?·  3 月前    · 
害羞的黄瓜  ·  光武大帝刘秀(世界伟人传记丛书)·  1 年前    · 
豪情万千的芹菜  ·  C#读取资源文件的两种方法_getmanif ...·  1 年前    · 
坏坏的帽子  ·  超详细的JS映射(Map)总结 - 掘金·  2 年前    · 
乖乖的书包  ·  《想爱就爱》百度云网盘下载.阿里云盘.泰语中 ...·  2 年前    · 
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属性
 
推荐文章
神勇威武的豆浆  ·  《辛普森一家》长寿秘诀是“神预言”?
3 月前
害羞的黄瓜  ·  光武大帝刘秀(世界伟人传记丛书)
1 年前
豪情万千的芹菜  ·  C#读取资源文件的两种方法_getmanifestresourcestream-CSDN博客
1 年前
坏坏的帽子  ·  超详细的JS映射(Map)总结 - 掘金
2 年前
乖乖的书包  ·  《想爱就爱》百度云网盘下载.阿里云盘.泰语中字.(2010)_人人电影网,百度云盘,阿里网盘下载
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号