基于MATLAB的微分代数方程解法(附完整代码)
目录
一. 微分代数方程求解
例题1
二. 全隐式微分方程
三. 延迟微分方程求解
例题2
一. 微分代数方程求解
例题1
初始条件:
求数值解:
解:
①方法1求解
矩阵形式表示该微分代数方程:
(1)函数文件
function dx=c7eqdae(t,x)
dx=[-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)*x(2);x(1)+x(2)+x(3)-1];
(2)主运行文件
clc;clear;
M=[1 0 0;0 1 0; 0 0 0];
options=odeset;
options.Mass=M; %Mass微分代数方程中的质量矩阵(控制参数)
x0=[0.8;0.1;0.1];
[t,x]=ode15s(@c7eqdae,[0,20],x0,options);
plot(t,x)
运行结果:
②方法2:转换成常微分方程求解
从约束式子可得:
代入原式子可得:
(1)函数文件
function dx=c7eqdae1(t,x)
dx=[-0.2*x(1)+x(2)*(1-x(1)-x(2))+0.3*x(1)*x(2);...2*x(1)*x(2)-5*x(2)*(1-x(1)-x(2))-2*x(2)*x(2)];
(2)主运行文件
clc;clear;
x0=[0.8;0.1];
[t1,x1]=ode45('c7eqdae1',[0,20],x0);
plot(t1,x1,t1,1-sum(x1'))
运行结果:
二. 全隐式微分方程
ode15i可解算全隐式微风方程。格式:
%格式1
[t,y]=ode15i(odefun,tspan,y0,yp0,options)%格式2
[y0_new,yp0_new]=decic(odefun,t0,y0,fixed_y0,yp0,fixed_yp0,options)
%decic 为ode15i计算一致的初始条件
可以使用以下命令看具体函数细节:
edit hbldae.medit ihbldae.m
三. 延迟微分方程求解
延迟微分方程组的一般形式如下:
隐式Runge-Kutta算法dde23()格式如下:
sol=dde23(f1,τ,f2,[t0,tf])
%sol为结构体数据,sol.x为时间向量,sol.y为状态向量
%f1为延迟微分方程
%τ=[τ1,···,τn]
%f2为t≤t0时的状态变量值函数
例题2
求延迟微分方程组的数值解:
解:
选择状态变量:
得出一阶微分方程组:
定义两个时间常数:
(1)编写函数
function dx=c7exdde(t,x,z)
xlag1=z(:,1); %第一列表示提取x(τ1)
xlag2=z(:,2);
dx=[1-3*x(1)-xlag1(2)-0.2*xlag2(1)^3-xlag2(1);...x(3);4*x(1)-2*x(2)-3*x(3)];
(2)主运行文件
clc;clear;
lags=[1 0.5];
tx=dde23('c7exdde',lags,zeros(3,1),[0,10]);
plot(tx.x,tx.y(2,:)) %与ode45()等返回的x矩阵不一样,这是按行排列的
运行结果:
也可以调用以下命令来查看函数的具体信息:
edit ddex1
%具体的例子,编辑器的代码
另外边值问题的也可以利用计算机来求解
二阶微分方程的边值问题的数学描述如下:
给定区间[a;b]上研究该方程的解,且在这两个边界条件下,满足:
基于MATLAB的微分代数方程解法(附完整代码)相关推荐
- 基于MATLAB的求解线性方程组(附完整代码和例题)
目录 前言 一. 直接求解:矩阵除法 例题1 例题2 例题3 二. 直接求解:判断求解 2.1 m=n且rank(A)=rank(C)=n 2.2 rank(A)=rank(C)=r<> ...
- 【通信】基于Matlab实现延时波束形成附完整代码
1 内容介绍 现代社会发展要求通信系统功能越来越强,性能越来越高,构成越来越复杂;另一方面,要求通信系统技术研究和产品开发缩短周期,降低成本,提高水平.这样尖锐对立的两个方面的要求,只有通过使用强大的 ...
- 基于MATLAB计算MIMO信道容量(附完整代码与分析)
目录 一.介绍 二. 代码 三. 运行结果及分析 3.1 MIMO信道容量:固定发射天线数为4 3.2 MIMO信道容量:固定接收天线数为4 3.3 AWGN信道与瑞利信道容量 四. 总结 一.介绍 ...
- Matlab深度学习入门实例:基于AlexNet的红绿灯识别(附完整代码)
AlexNet于2012年出现在ImageNet的图像分类比赛中,并取得了当年冠军,从此卷积神经网络开始受到人们的强烈关注.AlexNet是深度卷积神经网络研究热潮的开端,也是研究热点从传统视觉方法过 ...
- 基于matlab模拟心电信号,附赠代码
matlab官方链接:https://www.mathworks.com/matlabcentral/fileexchange/10858-ecg-simulation-using-matlab 心电 ...
- 基于Opencv的虚拟键盘(附完整代码及报告)
用到的库:opencv.cvzone.pynput 一.从Opencv到计算机视觉领域: Opencv是传统计算机视觉库,OpenCV用C++语言编写,它具有C ++,Python,Java和MATL ...
- 基于Opencv-python人脸口罩检测(附完整代码)
目录 一.开发环境 二.设计要求 三.设计原理 四.程序代码 五.结果展示 六.结论 一.开发环境 python 3.6.6 opencv-python 4.5.1 二.设计要求 · 1.使用open ...
- 还发愁项目经验吗?基于Netty实现分布式RPC框架[附完整代码]
写给大家的话 最近我收到很多读者的来信,对如何学习分布式.如何进行项目实践和提高编程能力,存在很多疑问. 分布式那么难,怎么学?为什么看了那么多书还是掌握不了? 开源的框架比如Dubbo代码太多了,完 ...
- 基于MATLAB的三维数据插值拟合与三次样条拟合算法(附完整代码)
目录 一. 三维插值 例题1 二. 高维度插值拟合 格式一 格式二 格式三 格式四 格式五 例题2 三. 单变量三次样条插值 例题3 例题4 四. 多变量三次样条插值 例题6 一. 三维插值 首先三维 ...
最新文章
- python画出心形图-python画出心形图
- 多种语言《九九乘法表》荟萃:C、C++、C#、JavaScript、SQL、VB、VBA、Python
- uC/GUI 在Cortex-M3 内核上的移植
- golang mysql封装_自己封装的golang 操作数据库方法
- c++《VS2008 快捷键大全》
- python找第二大的数索引_python – 在numpy数组中查找多个值的行索引
- 基于Haproxy的高可用实战
- C++ tbb::atomic<bool> 声明、读取load、重新赋值store
- c语言进程调度报告,操作系统C进程调度算法实验报告
- 通过经纬度获取地理位置
- 一款强大的网站在线客服聊天系统:whisper搭建教程
- 《怦然心动》(Flipped) 观后感
- Mac系统一键下载网页图片
- 如何使用计算机还原魔方?
- java学生成绩统计
- 快速排序: 使用快速排序算法对数组进行排序
- Android 轻松连接 Usb Device —— UsbConnector
- python制作购物网站_django搭建简单购物网站(功能不完整)
- 服务器中毒重装系统,电脑中毒如何重装系统 轻松解决有诀窍
- 可自动调节OpenCV弹出窗口大小