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

什么是微分代数方程?

微分代数方程是一类微分方程,其中一个或多个因变量导数未出现在方程中。方程中出现的未包含其导数的变量称为代数变量,代数变量的存在意味着不能将这些方程记为显式形式 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)编程求解

%% clcclearclose allodefun = @(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属性x0=[0.8;0.1;0.1];[t,x]=ode15s(odefun,[0 10],x0,options);figureplot(t,x(:,1),t,x(:,2),t,x(:,3))grid onlegend('x1','x2','x3')

2021-01-13 Matlab求解微分代数方程 (DAE)相关推荐

  1. matlab求解微分代数方程组,微分代数方程(DAE)的Matlab 解法.PDF

    微分代数方程(DAE)的Matlab 解法 微分代数方程(DAE)的Matlab解法 所谓微分代数方程,是指在微分方程中,某些变量满足某些代数方程的约束.假 设微分方程的更一般形式可以写成 前面所介绍 ...

  2. 用matlab求解线性代数方程

    用matlab求解线性代数方程 % 功能:线性代数方程求解:AX=B % 解的判定矩阵:C=[A B] % 求解方法分三种情况讨论: % 唯一解:A为非奇异方阵,x=inv(A)*B % 无穷解:ra ...

  3. 龙格库塔法matlab求解微分方程组,微分方程组的龙格库塔公式求解matlab版.pdf

    微分方程组的龙格库塔公式求解matlab版 微分方程组的龙格-库塔公式求解matlab版 南京大学 王寻 1. 一阶常微分方程组 考虑方程组     y'f x,y,z , y x y ...

  4. 基于MATLAB的微分代数方程解法(附完整代码)

    目录 一. 微分代数方程求解 例题1 二. 全隐式微分方程 三. 延迟微分方程求解 例题2 一. 微分代数方程求解 例题1 初始条件: 求数值解: 解: ①方法1求解 矩阵形式表示该微分代数方程: ( ...

  5. Matlab求解微分方程组

    我们采用ode方法: (1)求解普通微分方程组:使用ode45方法 1. 创建一个函数文件eq2.m,在函数文件中描述这个解的微分方程组: %eq2.m文件 %描述微分方程组function dy=e ...

  6. 数学建模学习(29):matlab求解微分方程组详细讲解,代码+案例讲解,学不会找我!

    文章目录 前言 求解微分方程组 求解矩阵微分方程组 总结 前言 上一篇我已经详细讲过求微分方程,这一篇是对上一篇的补充,也就是变得稍微复杂一点,就是要求方程组了,如果你学会了上一篇,那么求解方程组其实 ...

  7. python解隐式方程_求解隐式ODE(微分代数方程DAE)

    如果代数操作失败,可以对约束进行数值求解,例如在每个时间步运行fsolve:import sys from numpy import linspace from scipy.integrate imp ...

  8. MATLAB怎么解方程解,怎么用MATLAB求解微分方程组并画出解函数图?

    !using["XSLSF"];                //使用命名空间XSLSF //数组xArray存放x的值:ti为当前有效值的个数:tmax为ti对应的时间:tmi ...

  9. (三十七:2021.01.13)Pre-MICCAI 2019学习(二)《前列腺近距离放射治疗中,检测粒子在CT中的3D位置和方向》

    <Automatic 3D seed location and orientation in CT images for prostate brachytherapy> 讲在前面 摘要 论 ...

最新文章

  1. mysql send-q_MYSQL---初识
  2. Java 链接MySQL数据库时报的connect和denied错解决方法
  3. android-----带你一步一步优化ListView(一)
  4. socket层内容详解二
  5. 平面设计师必备的十个技能
  6. Pyrex也许是一个好东西
  7. 截取图片生成头像插件
  8. JAVA多线程和并发基础面试问答(转载)
  9. SpringBoot2 整合 AXIS 服务端和客户端
  10. WEB编程学习之Wordpress发送邮件
  11. 从无到有整合SpringMVC-MyBatis项目(1):搭建JavaWeb项目
  12. 用express搭建网站
  13. 胡学纲数据结构c语言PDF,数据结构精品课程参考书目
  14. 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof
  15. LeetCode 16. 3Sum Closest(最接近的三数之和)
  16. 如何通过项目周报获取项目信息-周报模板
  17. 获取棋盘格与标准模板在扫描仪上不同位置图片
  18. Django自学笔记之admin中设置App名称为中文
  19. 古剑奇谭ol服务器位置,古剑奇谭ol大区选择 去哪个区好各大区分析
  20. 在哪里能看到计算机缓存大小,怎么查看电脑硬盘缓存大小

热门文章

  1. 模板使用自定义类型_「Shopify模板」Shopify模板编辑Shopify模板代码更改教程
  2. c++vector替换元素_从发展来看Vector与Hashtable的淘汰
  3. LeetCode题组:第121题-买卖股票的最佳时机
  4. 数据分析利器--Pandas
  5. Jupyter notebook与Spyder,以及Jupyter notebook与Spyder集成插件
  6. 【LeetCode从零单排】No.135Candy(双向动态规划)
  7. 分组密码的工作模式--wiki
  8. 项目中遇到的Integer问题--转
  9. quartz 报错:java.lang.classNotFoundException
  10. spring mvc DispatcherServlet详解之一---处理请求深入解析(续)