微分方程求解Matlab详解

   在matlab求解微分方程有很多中,ode45是最常见的,当然,ode45求解有一定条件,就是需要把高阶微分方程转化为1阶微分方程。即使用降阶法。降阶法原理就是引入中间变量,然后实现降阶。例如:F(t,y,y′,y′′)=0F(t,y,y^{'},y^{''})=0F(t,y,y′,y′′)=0   令x1=yx_1=yx1​=y, x2=y′x_2=y^{'}x2​=y′,那么就可以将原来的二阶微分方程降阶为两个一阶微分方程。
dx1dt=x2dx2dt=G(t,x1,x2)\begin{matrix} \frac{dx_1}{dt}=x_2 \\ \frac{dx_2}{dt}=G(t,x_1,x_2) \end{matrix} dtdx1​​=x2​dtdx2​​=G(t,x1​,x2​)​
   高阶微分方程组同理!!!

例子

   这里以一个简单的例子演示ode45,以及包括之后使用的均为这个例子:
y′−2t=0y^{'}-2t = 0y′−2t=0
   并且指定时间区间 [0,5][0,5][0,5]和初始条件 y0=0y_{0} = 0y0​=0。

ODE45求解

使用匿名函数的方式
clc;clear all;
tspan = [0 5];
y0 = 0;figure(1)
[t,y] = ode45(@(t,y) 2*t, tspan, y0);
plot(t,y,'-o')
使用.m文件的方式
function dy = Fcn(t,y)%FCN dy=2*t;
end
clc;clear all;
tspan = [0 5];
y0 = 0;figure(2)
[t1,y2] = ode45(@Fcn, tspan, y0);
plot(t1,y2,'-o')

隐式微分方程求解

   ODE45使用最困难的一步就是微分方程的降阶,对于一个含有最高阶耦合项的微分方程来说,根本无法手动将其化简为一阶微分方程,例如:
ty′′3+y′y′′+y=0ty^{''3}+y^{'}y^{''}+y = 0ty′′3+y′y′′+y=0
   那对于这种该如何求解呢?

方法1-使用solve()求解高阶表达式

   以上面的例子为例,将F(t,y,y′)=0F(t,y,y^{'})=0F(t,y,y′)=0看做是y′y^{'}y′的方程,利用solve()函数求解出y′y^{'}y′的表达式。这种方法是省去了手动的降阶,而使用计算机代替我们计算,我将这个封装了一个函数,可以通用,源码和参考在这里;

clc;clear all;
syms dy t y
eq = dy-2*t;dy = solve(eq,dy) matlabFunction(dy,'File','Fcn','Vars',[t,y]);tspan = [0 5];
y0 = 0;figure(1)[t,y] = ode45(@Fcn, tspan, y0);plot(t,y,'-o')

方法2-使用求解高阶变量的数值解,再使用ode45

   然而,对于上述的方法,不是所有的微分方程都能算出最高阶的解析解。那么我们就么有办法了吗?观察ode45所传入的函数句柄,例如F(t,y,y′)=0F(t,y,y^{'})=0F(t,y,y′)=0,输入是t,y,输出是y′y^{'}y′,也就是说,我们要通过变量的低阶值和时间t求解变量的最高阶的值,因此,对于任意复杂的F(t,y,y′)=0F(t,y,y^{'})=0F(t,y,y′)=0或者是高阶微分方程组,我们在函数句柄,利用fsolve求解出最高阶的值,将其返回即可。

function dy = Fcn(t,y)
fun = @(dy)dy-2*t;
options=optimset('display','off');
dy = fsolve(fun,0,options) ;
clc;clear all;
tspan = [0 5];
y0 = 0;figure(2)
[t1,y2] = ode45(@Fcn, tspan, y0);
plot(t1,y2,'-o')

方法3-使用ode15i

   matlab在后续版本提供了ode15i,其求解思路类似上面方法2。具体使用:

function fcn = Fcn(t,y,dy)
%WEISSINGER  Evaluate the residual of the Weissinger implicit ODE
%
%   See also ODE15I.
%   Jacek Kierzenka and Lawrence F. Shampine
%   Copyright 1984-2014 The MathWorks, Inc.fcn = dy - t.*2.0;
clc;clear all;
t0 = 0;
tspan = [t0 5];
y0 = 0;
yp0 =1;% 计算一致的初始条件
% ode15i 求解器需要一致的初始条件,即提供给求解器的初始条件必须满足
% 这个就是需要满足微分方程
[y0,dy0] = decic(@Fcn,t0,y0,1,yp0,0);
[t,y] = ode15i(@Fcn, tspan, y0,dy0);
figure(1)
plot(t,y,'-o')

源码gtihub

    GitHub传送门!!!

隐式微分方程求解Matlab相关推荐

  1. 几类常微分方程的matlab求解方法 | 刚性微分方程、隐式微分方程、微分代数方程

    目录 微分方程的转换 一.单个高阶常微分方程 二.高阶常微分方程组 刚性微分方程求解 隐式微分方程求解 微分代数方程求解 微分方程的转换 根据微分方程求解的标准型,要得到微分方程的数值解,应该先将该方 ...

  2. 2.4 一阶隐式微分方程与参数表示

    文章目录 类型一:y=f(x,dydx)y=f(x,\frac{dy}{dx})y=f(x,dxdy​) 类型二:x=f(y,dydx)x=f(y,\frac{dy}{dx})x=f(y,dxdy​) ...

  3. 从拉格朗日乘子--约束优化到五元齐次线性方程求解

    从拉格朗日乘子--约束优化到五元齐次线性方程求解 引入 问题导入(事情起源) 三层循环 数学神器--Wolfwarm alpha 拉格朗日乘子 五元齐次线性方程 自坑三连--被伤的体无完肤 Win t ...

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

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

  5. 基于人工蜂群算法的线性规划求解matlab程序

    基于人工蜂群算法的线性规划求解matlab程序 1 人工蜂群算法概述 2005年D. Karaboga教授仿照蜜蜂集群采蜜生物行为,提出了人工蜂群仿生算法,可以有效解决有关函数优化等相关难题.ABC算 ...

  6. 视频教程-三课时精通matlab常微分方程求解-Matlab

    三课时精通matlab常微分方程求解 图像和算法等领域有多年研究和项目经验:指导发表科技核心期刊经验丰富:多次指导数学建模爱好者参赛. 宋星星 ¥12.00 立即订阅 扫码下载「CSDN程序员学院AP ...

  7. 微分方程求解 matlab,4MATLAB常微分方程求解.ppt

    4MATLAB常微分方程求解 MATLAB微分方程 1 求简单微分方程的解析解 2 求微分方程的数值解 3 建模实例 1 求简单微分方程的解析解 求微分方程(组)的解析解命令: dsolve('方程1 ...

  8. 基于沙猫群优化算法的线性规划求解matlab程序

    基于沙猫群优化算法的线性规划求解matlab程序 1 沙猫群优化算法 沙猫的中文学名叫沙丘猫,俗名沙漠猫,与荒漠猫名字相似,但却是两种不同的猫科动物.沙猫生活在茫茫沙漠里,主要分布在分布于非洲北部,阿 ...

  9. 微分方程求解matlab冲激信号,用Matlab求冲激响应的几种方法

    ·实验技术与方法· 用 Matlab 求冲激响应的几种方法 贺富堂,应柏青,张 锋,孙 敏 ( 西安交通大学 电工电子教学实验中心,陕西 西安 710049) 摘 要: 用 Matlab 软件求冲激响 ...

  10. 数学建模微分方程导弹问题matlab求解,Matlab建模—导弹追踪问题

    数学建模期末复习,撰写博客做总结之用,主要侧重于算例的模型建立与部分代码的实现,其中不足之处望读者多多指正. Matlab微分求解工具箱使用 求数值解 dsolve('方程1','方程2',-,'方程 ...

最新文章

  1. Spring Boot注册Servlet三大组件(Servlet, Filter, Listener)
  2. 杭电1430康托 bfs(java)
  3. Log4j的layout配置
  4. 玩够了没,开始奋斗吧?
  5. DateTime和字符串转换问题
  6. php如何加密图片,php实现图片加密解密,支持设置密码 (两年后版本!)
  7. Java生产环境下性能监控与调优详解 第3章 基于JVisualVM的可视化监控
  8. 第一章:了解SQL_数据库基础
  9. linux 提取有效源码,MPSOC之4——petalinux提取源码
  10. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_15maven工程servlet实例之导入项目依赖...
  11. windows自带黑体_win10黑体,windows10里的黑体
  12. uniapp中引入colorUI
  13. Oracle或关闭中国研发中心,裁员1600 人
  14. 最快的 Hexo 博客搭建方法
  15. 小米3刷android 6.0,安卓6.0版MIUI7曝光:小米3/小米4/小米Note将尝鲜
  16. Android WebView支持文件下载之调起浏览器下载(Java与Kotlin版)
  17. 蒙特卡洛方法 matlab 实现
  18. Flutter 打包iOS包出现 ld: bitcode bundle could not be generated because
  19. Algorithm - Bubble Sort(Java)
  20. 逆向微信Mac客户端:微信情话助手初版

热门文章

  1. 基于图的广度优先搜索策略(耿7.11)
  2. Exchange会议室邮箱4种常见会议预定场景的介绍和设置
  3. FedEx v20.0.7654的CData驱动程序
  4. 易生信:临床基因组学数据分析实战(11月12-14开课)
  5. 沈阳打铁记录+暑假训练开始分界线
  6. ccpc2016长春站打铁记(后记)
  7. 你的知识需要管理PKM
  8. 第七章产品生命周期管理
  9. Google SketchUp Cookbook: (Chapter 3) Intersection Edges: Cutting and Trimming
  10. 【AI视野·今日CV 计算机视觉论文速览 第158期】Mon, 23 Sep 2019