常微分方程和常微分方程组的求解

?

一、实验目的:

熟悉Matlab软件中关于求解常微分方程和常微分方程组的各种命令,掌握利用Matlab软件进行常微分方程和常微分方程组的求解。

?

二、相关知识

在MATLAB中,由函数dsolve()解决常微分方程(组)的求解问题,其具体格式如下:

X=dsolve(‘eqn1’,’eqn2’,…)

函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解。

例1:求解常微分方程的MATLAB程序为:dsolve('Dy=1/(x+y)','x'),注意,系统缺省的自变量为t,因此这里要把自变量写明。

结果为:-lambertw(-C1*exp(-x-1))-x-1

其中:Y=lambertw(X)表示函数关系Y*exp(Y)=X。

例2:求解常微分方程的MATLAB程序为:Y2=dsolve('y*D2y-Dy^2=0’,’x’)

结果为:

Y2 =[ exp((x+C2)/C1)]

[ C2]

我们看到有两个解,其中一个是常数。

例3:求常微分方程组通解的MATLAB程序为:

[X,Y]=dsolve('Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t)','t')

例4:求常微分方程组通解的MATLAB程序为:

[X,Y]=dsolve('Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-2*t)','x(0)=2','y(0)=0')

以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。但是,我们知道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB具有丰富的函数,我们将其统称为solver,其一般格式为:

[T,Y]=solver(odefun,tspan,y0)

该函数表示在区间tspan=[t0,tf]上,用初始条件y0求解显式常微分方程。

solver为命令ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一,这些命令各有特点。我们列表说明如下:

求解器

ODE类型

特点

说明

ode45

非刚性

一步算法,4,5阶Runge-Kutta

方法累积截断误差

大部分场合的首选算法

ode23

非刚性

一步算法,2,3阶Runge-Kutta

方法累积截断误差

使用于精度较低的情形

ode113

非刚性

多步法,Adams算法,高低精度均可达到

计算时间比ode45短

ode23t

适度刚性

采用梯形算法

适度刚性情形

ode15s

刚性

多步法,Gear’s反向

数值积分,精度中等

若ode45失效时,

可尝试使用

ode23s

刚性

一步法,2阶Rosebrock算法,

低精度。

当精度较低时,

计算时间比ode15s短

odefun为显式常微分方程中的

tspan为求解区间,要获得问题在其他指定点上的解,则令(要求单调),

y0初始条件。

例5:求解常微分方程,,的MATLAB程序如下:fun=inline('-2*y+2*x*x+2*x');[x,y]=ode23(fun,[0,0.5],1)

结果为:

x = 0,0.0400,0.0900,0.1400,0.1900,0.2400,0.2900,0.3400,0.3900,0.4400,0.4900,0.5000

y = 1.0000,0.9247,0.8434,0.7754,0.7199,0.6764,0.6440,0.6222,0.6105,0.6084,0.6154,0.6179

例6:求解常微分方程的解,并画出解的图形。

分析:这是一个二阶非线性方程,用现成的方法均不能求解,但我们可以通过下面的变换,将二阶方程化为一阶方程组,即可求解。

令:,,,则得到:

接着,编写vdp.m如下:

function fy=vdp(t,x)

fy=[x(2);7*(1-x(1)^2)*x(2)-x(1)];

再编写m文件sy12_6.m如下:

y0=[1;0]

[t,x]=ode45(@vdp,[0,40],y0);

y=x(:,1);dy=x(:,2);

plot(t,y,t,dy)

?

?

三、实验内容

1.利用MATLAB求常微分方程的初值问题,的解。

2.利用MATLAB求常微分方程的初值问题,,的解。

3.利用MATLAB求常微分方程的解。

4.利用MATLAB求常微分方程组的特解。

5.求解常微分方程,,,的特解,并做出解函数的曲线图。

6.完成实验报告。

非线性常微分方程组 matlab,matlab常微分方程和常微分方程组求解.doc相关推荐

  1. matlab求解非线性常微分方程组,Matlab数值求解非线性常微分方程 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...

    我最近也在用牛顿迭代解一个非线性方程组 Newton迭代有程序 我拷给你你 编写Newton迭代法的M文件NewtonIterate.如下: function s=NewtonIterate(x,ep ...

  2. matlab求解非线性常微分方程组,求一道用matlab编程解非线性方程组

    满意答案 a67211123t 2013.05.10 采纳率:53%    等级:12 已帮助:9981人 对于非线性方程组F(X)=0,用fsolve函数求其数值解.fsolve函数的调用格式为: ...

  3. Fortran | 普通差分法解非线性常微分方程组(洛伦兹对流方程组)

    0.写在前面 今天上机,老师直接让解方程组,我们上节课只教了龙格-库塔解法,我直接一脸懵逼......好在想到了,就是用最一般的差分解. 1.待求方程组 2.初始条件和要求 σ=10,ρ=28,β=8 ...

  4. matlab 数学建模 一阶常微分方程ode45

    ode45是求常微分方程的数值解的首选方法. matlab提供了求常微分方程数值解的函数.当难以求得微分方程的解析解时,可以求其数值解. matlab中求微分方程数值解的函数有七个:ode45,ode ...

  5. matlab求解不等式方程组解集,matlab求不等式方程组的可行解

    求高手用matlab解一个三元的方程组 我算的你这个解都是无穷大.具体过程如下:第一步:建立M文件函数myf.mfunctionf=myf(x)f(1)=600+x(1)*cos(10)+x(2)*s ...

  6. MATLAB阶段性方程组,[转载]matlab 解方程组

    1.解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法: (1)x=i ...

  7. 简单迭代法、牛顿法、弦割法、布洛依登法求解方程或方程组【Matlab】

    利用迭代法求解定非线性方程及方程组,使得误差不超过10^(-8).同时应用迭代加速技术,提交迭代运算效率. 此题需要用到的MATLAB代码及附录: 附录6 二分法作根的隔离 % 附录6 二分法作根的隔 ...

  8. 龙格库塔法解微分方程组的matlab程序,MATLAB实例源码教程:龙格库塔法求解微分方程组源代码实例.doc...

    MATLAB实例源码教程:龙格库塔法求解微分方程组源代码实例.doc MATLAB实例源码教程龙格库塔法求解微分方程组源代码实例题目用经典 Runge-Kutta方法求下列一阶微分方程组的近似解y1 ...

  9. 用matlab解方程组例子,Matlab求解超定方程组实例

    Matlab求解超定方程组实例 对于超定方程组,特别是非线性方程组,可以用Matlab基于最小二乘算法来进行求解,例如,求解下列方程组: 一个三个未知数,九个方程的非线性方程组: cos(x3)*si ...

最新文章

  1. Linux绝对权限和相对权限法,Linux基础学习笔记
  2. spring 链接池
  3. Valentine's Day Round hdu 5176 The Experience of Love [好题 带权并查集 unsigned long long]
  4. linux服务器静态ip,Ubuntu Linux系统下设置静态IP的方法
  5. 使用固态存储SSD或PCIe卡
  6. lua进入压缩包_使用lua语言制作贪吃蛇游戏(love2d)(一)开发环境的搭建
  7. sql查询中使用in和exits比较和区别
  8. NLP论文 -《Distributed Representations of Sentences and Documents》-句子和文档的分布式表示学习
  9. Oracle 11g 频繁遭遇 CheckPoint incomplete问题分析(直播预告)
  10. Python学习 资料[转]
  11. jquery on()方法off()方法
  12. gps nmea数据格式解析与生成
  13. 51单片机波特率计算c语言,8051单片机波特率计算公式(配套C语言例程
  14. bobsmith电路阻抗原理_网络变压器的介绍分类及工作原理
  15. 什么是自签名证书?自签名SSL证书的优缺点?
  16. tensorboard可视化问题projector无法展示
  17. 总结了Linux系统中常用的命令
  18. Android Studio Emulator 报错 detected adb
  19. 从鹿晗关晓彤恋情事件看运维的节假日准备工作
  20. 3大基础模型,搞掂互联网产品分析

热门文章

  1. Spring Bean init-method 和 destroy-method实例
  2. Java——遍历List过程中添加和删除元素的问题(亲测第二种)
  3. sublime text2 用ctags插件实现方法定位(转)
  4. linux下安装oracle集群,【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)...
  5. html文件怎么改为php,请问你们怎么将html的文件的内容改变为php
  6. mysql 多表查询 优化_Mysql 多表联合查询效率分析及优化
  7. python 30分钟_一张图30分钟快速Python入门
  8. 搜索python代码的软件_用python编写一个高效搜索代码工具
  9. SpringBoot整合Shiro(认证+授权)
  10. 计算机教学反思博,博文25教学反思