微分方程的解析解要求比较严苛,只有在特定的条件下才能写出解析解表达式,而在现实的科研问题当中,绝大多数情况我们会采用数值解(numeric solution)的方法来求解微分方程。这个时候就要用到ode方法了,ode是常微分方程英文名ordinary differential equation的缩写。我们将通过范德波尔方程为例演示求解的过程。大致可以分为2步:列方程和解方程。
一、列方程。
范德波尔方程用数学表达式可以写成一下形式:

由常微分理论可知,列方程需要给出两个条件
1.方程式:即带有未知数的等式
2.初始值:初始值不一样,解也不一样,这是解方程必须给出的数据。理论研究的时候,我们可以用C来表示常量,但是在做数值解的时候,必须给出具体的数值,比如上式中的2,0

如何把上面的数学表达式呢,需要在matlab中编写函数,本例中的范德波尔如下,特别要注意的是y和dy代表的意义,在代码的注释中有详细的解释:

function dy = vdp1000(t,y) %这个似乎是规定的范式,要记住,其中y是代表函数的解,y(1)就是需要求的解y,y(2)是y的微分y',相当于y(n)'=y(n+1)
dy = zeros(2,1); %作为函数返回值的列向量,我猜测里面存储的是解函数的微分,dy和y的区别在于相同索引的dy和y差一个微分d,相当于dy(1)=y(1)'=y(2)
dy(1)=y(2); %dy(1)存储的的是y',可以简单记忆dy(1)=y',dy(2)=y'',y(n)=dy(n-1)=y的n-1个'
dy(2)=1000*(1-y(1)^2)*y(2)-y(1); %注意到方恒的左边都是关于dy(n)的表达式,右边都是关于y(n)的表达式
end

二、解方程
在matlab中,我们使用ode系列方法来解方程,ode方法有很多,对于非刚性问题,我们可以使用ode45/ode23/ode113等方法,对于刚性问题,我们使用ode15s/ode23s/ode23t/ode23t等,对于范德波尔方程,我们使用ode15s来进行求解,代码如下。
注意方法的参数包括:方程@开头的句柄,求解时间范围tspan,以及解的初始值,具体的解释在代码的注释中有详细的说明

[T,Y] = ode15s(@vdp1000,[0 3000],[2,0]); %T和Y表示解,也就是Y关于T的函数,@vdp1000表示微分方程句柄,可以认为是方程的名字,比如这里就是范德波尔方程,[0,3000]代表的是时间范围,也就是限定了区间,显然区间越大,计算量越大,所以要想清楚自己要哪一段的数据,给多了也没用。[2,0]表示的是解的初始值,因为初始值不一样,解也不一样,这是解方程必须给出的数据。这里给出了两个初始值,2表示y的初始值,0表示dy的初始值。
plot(T,Y(:,1),'o')

我们在运行之后可以得到这个方程解的图像如下:

这样我们就完成了matlab中使用ode方法解范德波尔微分方程的数值解的任务。

matlab中使用ode方法解范德波尔微分方程的数值解相关推荐

  1. 在matlab中使用dsolve函数解范德波尔二阶微分方程

    荷兰物理学家范德波尔为了描述三极管的震荡效应创建了范德波尔方程,其数学表达式如下: 我们假设μ=0,并给给出初始变量的值,可以简化方程如下: 我们把以上数学公式转换成matlab语言并且做出图像如下: ...

  2. matlab中xcorr函数详解

    Matlab中xcorr函数详解 引言 在matlab中查找相关函数时,找到了xcov函数和xcorr函数,仔细看了帮助文档,发现虽然计算公式不一样,但是两个函数用法相同,计算出的值也相同,于是在翻了 ...

  3. matlab中并行条件,matlab中的并行方法

    // 文件转载自: http://blog.csdn.net/abcjennifer/article/details/17610705 /// 本文讲一下matlab中的并行方法与技巧,这里我们不涉及 ...

  4. Matlab中 pdist 函数详解

    学习笔记,仅供参考,有错必纠 转载自:Matlab中 pdist 函数详解(各种距离的生成); pdist Pairwise distance between pairs of objects. Sy ...

  5. MATLAB中的一些方法

    MATLAB中的一些方法 矩阵可视化,空值不显示颜色 时间序列重采样 判断是否为空值 插值 随机生成0-1矩阵 FFT变换转换成矩阵相乘 1 2 3 4 5 图片保存 记录自己常用到的一些功能,方便以 ...

  6. matlab中单独存图_[转载]matlab中保存图片的方法

    matlab中保存图片的方法 一.一种是出来图形窗口后手动保存(这儿又可以分两种): 1 直接从菜单保存,有fig,eps,jpeg,gif,png,bmp等格式. 2 edit------〉copy ...

  7. matlab 定义string_[整理]Matlab中函数定义方法

    Matlab中函数定义方法 Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n ...

  8. matlab中 三种方法计算 Ax b,在MATLAB中,方程Ax=B的解可以用哪个命令求得? matlab 求助 解方程组...

    matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法: (1)x=inv(A)*b - 采用求逆运算解方程组: (2)x=A\B - ...

  9. matlab中常微分方法,MATLAB解常微分方程组的解法(好东西要共享)

    1:问题 常微分方程的初值问题的标准数学表述为:y'=f(t,y),a<=t<=b,y(a)=y(0) :我们要求解的任何高阶常微分方程都可以用替换法化为上式所示的一阶形式,其中y为向量, ...

最新文章

  1. (6)解构赋值的用途
  2. python中怎么比较两个列表-python中如何比较两个列表不同
  3. VTK:相互作用之MoveAGlyph
  4. Shiro切入Spring的方式
  5. 今晚包饺子吗?会露馅的那种......
  6. 关于ecshop中jquery与js冲突解决的方案
  7. J2EE项目代码编写规范分享
  8. C# 在DbContext内通过DbSet名称来访问DbSet
  9. JAVA继承类phone_【Java基础】类-----继承
  10. 科技公司都是如何应对 COVID-19?
  11. CVPR 新规严禁审稿期间公开宣传论文,可发 arXiv,LeCun:疯了吧!
  12. 电脑有网络,但所有浏览器网页都打不开,是怎么回事?
  13. 纸牌游戏程序设计要点(C语言)
  14. 村长网推出用韩国论山特产草莓特制的低糖“村长草莓酱”
  15. 霍夫曼树和霍夫曼编码原理
  16. 手撸springmvc乞丐版
  17. 计算机启动显示不正确的分区表,电脑开机黑屏提示无效的分区表如何解决_电脑开不了机显示无效的分区表如何处理...
  18. 各大 IT 公司的架构图
  19. 烤地瓜(PYTHON 学习类和对象)
  20. HTML表格中实现自动换行

热门文章

  1. 【ironic】ironic介绍与原理
  2. 深度学习_21天实战Caffe.pdf
  3. bzoj 1477 青蛙的约会 拓展欧几里得(详细解析)
  4. 最新互联网乡镇综治云平台解决方案
  5. Android来电铃声默认设置的实现方法与如何设置语音来电的默认铃声
  6. linux 为执行程序添加一个交互确认执行的信息
  7. oss :Request has expired.
  8. ML之FE:风控场景之金融评分卡模型之利用LoR模型权重变量系数正负符号结合p-value/P值大小实现变量筛选
  9. 大数据时代——从谢顿计划说开去
  10. 基于单片机的空气检测系统的设计