1:问题

常微分方程的初值问题的标准数学表述为:y'=f(t,y),a<=t<=b,y(a)=y(0)

;我们要求解的任何高阶常微分方程都可以用替换法化为上式所示的一阶形式,其中y为向量,yo为初始值。

2:Matlab中解决以上问题的步骤

(1):化方程组为标准形式。

例如:y'''-3y''-y’y=0,y(0)=0,y'(0)=1,y''(0)=-1.

把微分方程的高阶导数写为低阶导数的算式,即:

y'''=3y''+y'y,设:y1=y,y2=y',y3=y'',则原方程化为下列等价的方程组:

满足初值条件: 已把该方程化成了标准形式。

其中:y'->(y1’,y2’,y3’),a->(0,0,0),y0->(0,1,-1),f(t,y)->(y2,y3,3y3+y2y1).

(2):把微分方程组编成m函数文件。

如:function

dy=F(t,y)

dy=[y(2);y(3);3*y(3)+y(2)*y(1)];

注意:A:在函数文件里,虽然写微分方程时并不同时包含参数t和y,但第一行必须包含这两个输入变量。B:向量dy必须为列向量。

(3):调用一个微分方程的求解函数求解。

[T,Y]=solver(‘F’,tspan,y0);

其中:solver:求解函数名;

F:包含微分方程的m文件;

tspan为积分的数据范围,其格式为:[t0,tfinal];

y0为t0时刻的初值列向量。

输出参数T和Y为列向量

T为时刻向量。

Y表是不同时刻的函数值。

3:一个求解常微分方程初值问题的完整过程。

问题:求解方程y’’-3(1-y^2)y’+y=0在初值y’(0)=3,y(0)=2的解。

1化成标准形式:

设y1=y,y2=y’,则: 初值为:

2编写函数文件ode.m,类容为:

function dy=ode(t,y)

dy=[y(2);3*(1-y(1)^2)*y(2)-y(1)];

3调用函数ode45求解,时间区间为[0,20]:

[T,Y]=ode45(‘ode’,[0,20],[2;3]);

输出结果[T,Y]中T为时间点组成的向量。Y为对应于T中时间点的y(1)和y(2)的值。

4绘制解的曲线,结果如图。

plot(T,Y(:,1),’-’,T,Y(:,2),’--’)

title(‘Solution of ODE Equation’);

xlabel(‘time T’)

ylabel(‘solution Y’);

legend(‘Y1’,’Y2’)

Matlab利用数值方法来求解常微分方程的解,其思路如下:把求解的时间区间划分成有限步,对应于每一步将计算出一个解,如果求得的解不满足误差限制,则减少步长,再求解。如此重复,直到满足误差限为止。

a刚性问题(stiff):方程组的解不同分量的数量级差别较大,对于数值求解是一大困难。Matlab既能解决非刚性问题,也能解决刚性问题。

b三个解决非刚性问题的函数:ode45,ode23,ode113

c两个解刚性问题的函数:ode15s和ode23s

matlab中常微分方法,MATLAB解常微分方程组的解法(好东西要共享)相关推荐

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

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

  2. matlab中dist的命令,matlab dist函数

    dist--欧式距离加权函数(Euclidean distance weight function) 语法: Z = dist(W,P) df = dist('deriv') D = dist(pos ...

  3. matlab中使用ode方法解范德波尔微分方程的数值解

    微分方程的解析解要求比较严苛,只有在特定的条件下才能写出解析解表达式,而在现实的科研问题当中,绝大多数情况我们会采用数值解(numeric solution)的方法来求解微分方程.这个时候就要用到od ...

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

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

  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. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  8. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  9. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

最新文章

  1. 阿里二面:为什么要分库分表?
  2. Linux 操作系统原理 — 系统启动流程
  3. 重裝系統,磁盤消失解決方法
  4. JavaScript验证正则表达式大全
  5. 机器学习(十一)谱聚类算法
  6. ApI、toString方法、equals方法、Scanner方法基本知识
  7. Android TextView多行文本滚动实现
  8. 为什么说容器的崛起预示着云原生时代到来?
  9. 360 快视频疑似盗取 B 站数据,暂无最新回应
  10. Project Euler Problem 92 Square digit chains
  11. 递归的Fibonacci在数羊
  12. AutoViz:用一行代码自动可视化任何大小的任何数据集
  13. python安装grpcio的心路历程
  14. 根据银行卡账号获取所属银行php
  15. (z)无杂散动态范围SFDR--影响通信机性能的因素
  16. Activiti实现流程定义的控制与修改
  17. 苹果支付Java服务器实现
  18. win7右键计算机没有注册类,win7系统提示没有注册类别的解决方法
  19. 切图教程,app切图命名总结
  20. 字符串大小比较的规则?

热门文章

  1. 数据包络分析方法与maxdea软件_SEM常用的4种数据分析方法,让你的优化工作事半功倍!...
  2. java框架mangedv,Spring集成JPA后,报“Not an managed type: class x.x.x
  3. java栈的内存_JVM的栈内存
  4. mysql 去重后拼接_mysql学习笔记(三)—— 查询select
  5. 手机服务器共享信息,手机云共享服务器
  6. python param_python发送带param的post请求
  7. 牛津词典电子版txt_英语启蒙:推荐一款超火的英文词典app
  8. android button layoutparams,使用LayoutParams设置布局
  9. C++11多线程创建的三种方法
  10. C++新特性探究(七):初始化列表(Initialization List)