matlab求解常微分方程.docx

合集下载

matlab解常微分方程例题

matlab解常微分方程例题

matlab解常微分方程例题当涉及到使用MATLAB解常微分方程(ODE)的例题时,我们可以采用MATLAB中的ode45函数来进行求解。

ode45是一种常用的ODE求解器,它基于龙格-库塔方法。

下面我将以一个简单的例题来说明如何使用MATLAB解常微分方程。

假设我们要解决以下的常微分方程:dy/dt = -2y + 4t.初始条件为y(0) = 1。

首先,我们需要定义一个匿名函数来表示方程右侧的表达式,即-2y + 4t。

在MATLAB中,可以这样定义这个函数:f = @(t, y) -2y + 4t.接下来,我们需要定义时间范围和初始条件:tspan = [0 5] % 时间范围从0到5。

y0 = 1 % 初始条件y(0) = 1。

然后,我们可以使用ode45函数进行求解:[t, y] = ode45(f, tspan, y0)。

最后,我们可以绘制出解的图像:plot(t, y)。

xlabel('t')。

ylabel('y')。

title('Solution of dy/dt = -2y + 4t')。

这样,我们就得到了常微分方程的数值解,并用图像表示出来。

需要注意的是,这只是一个简单的例题,实际应用中可能会涉及更复杂的常微分方程。

但是使用MATLAB的ode45函数求解常微分方程的基本步骤是相似的,定义方程右侧的函数,设定时间范围和初始条件,然后使用ode45函数进行求解,并绘制出解的图像。

希望以上的解答能够满足你的需求。

如果你有更多关于MATLAB 解常微分方程的问题,欢迎继续提问。

matlab-常微分方程

matlab-常微分方程

Events
含义 为‘on’时,控制解向量 有效值: 范数的相对误差,使每 on、off 步计算中,满足: 缺省值: norm(e)<=max(RelTol*n off orm(y),AbsTol) 有效值: 为‘on’时,返回相应的 on、off 事件记录
取值
参数设置
属性名 含义 若无输出参量,则solver 将执行下面操作之一: 有效值: 画出解向量中各元素随 odeplot、 时间的变化; odephas2、画出解向量中前两个分 odephas3、量构成的相平面图; odeprint 画出解向量中前三个分 缺省值: 量构成的三维相空间图 odeplot ; 随计算过程,显示解向 量 取值
使用于精度较低 的情形
OD 求解器 E类 Solver 型 非 ode113 刚 性 适 度 ode23t 刚 性 刚 ode15s 性
特点
说明
多步法;Adams算 计算时间比ode45 法;高低精度均可 短 -3~10-6 到10 采用梯形算法 适度刚性情形
多步法;Gear’s反 若ode45失效时, 向数值微分;精度 可尝试使用 中等
• (6)若没有给定输出参量,则在命令窗口显 示解列表。若该命令找不到解析解,则返 回一警告信息,同时返回一空的sym对象。 这时,用户可以用命令ode23或ode45求解 方程组的数值解。
y ′′ = −a y ′ y ( 0) = 1 y ′(π / a ) = 0
2
例1
例2
• >> [u,v] = dsolve('Du=v,Dv=u') u= C1*exp(-t)+C2*exp(t) V= -C1*exp(-t)+C2*exp(t)

常微分方程(ODEs)的MATLAB数值解法

常微分方程(ODEs)的MATLAB数值解法
Matlab 中常微分方程数值解法讲解©
1.ODE 解算器简介 ..............................................................................................................................................................3 2.微分方程转换 ...................................................................................................................................................................5 3.刚性/非刚性问题 ..............................................................................................................................................................8 4.隐式微分方程(IDE) ........................................................................................................................................................10 5.微分代数方程(DAE)....................................................................................................................................................... 15 6.延迟微分方程(DDE)....................................................................................................................................................... 18 7.边值问题(BVP) ...............................................................................................................................................................20

第14章常微分方程的MATLAB求解

第14章常微分方程的MATLAB求解

因此,方程 ,设其通解为
就成为 ,又
,这是一个关于变量 的一阶微分方程 因此又得到一个一阶微分方程
对它进行积分,便得到方程 的通解为 型的微分方程:方程中不显含自变量x ,为了求出它的解,我们令 ,并利用复合函数求导法则把 化为对 的导数,即 这样,方程 ,设它的通解为 就成为 这是一个关于变量 分离变量并积分,便得方程 的一阶微分方程 的通解为
14.6 边值问题的数值解
1.打靶法
打靶法也称为试射法,其基本思想是把边值问题作初值问题来求解,从满足 左端边界条件的解曲线中寻找也满足右端边界条件的解。
线性方程边值问题的打靶法:
考虑如下给出的二阶线性边值问题 该边值问题的打靶法求解过程可以由如下步骤完成:(1)计算下面齐次微分方程在区间 上的数值解 , ,初值条件: ;(2)计算下面齐 次微分方程在区间 上的数值解 , ,初值条件: ;(3)计算下面初值问题在区间 ,初值条件 : 计算 题的数值解 上的数值解 , ;(4)若
微分方程:一般的,凡表示未知函数、未知函数的导数与自变量之间的关系的方程,叫做微 分方程,有时也简称方程。 微分方程的阶:微分方程中所出现的未知函数的最高阶导数的阶数,叫做微分方程的阶 微分方程的解:找出这样的函数,把这函数代入微分方程能使该方程成为恒等式。这个函数 就叫做微分方程的解。 微分方程的通解:如果微分方程的解中含有任意常数,且任意常数的个数与微分方程的阶数 相同,这样的解叫做微分方程的通解。 初始条件:设微分方程中的未知函数为 ,如果微分方程是一阶的,通常用来确定任 意常数的条件是 时, 或写成 其中 都是给定的值;如果微分方程是二阶的,通常用来确定任意常数的条件是
其中 和 都是给定的值,上述这种条件叫做初始条件。 确定了通解中的任意常数以后,就得到微分方程的特解。求微分方程 件 的特解是这样一个问题,叫做一阶微分方程的初值问题,记作

MATLAB常微分方程的数值解法

MATLAB常微分方程的数值解法

MATLAB常微分⽅程的数值解法MATLAB常微分⽅程的数值解法⼀、实验⽬的科学技术中常常要求解常微分⽅程的定解问题,所谓数值解法就是求未知函数在⼀系列离散点处的近似值。

⼆、实验原理三、实验程序1. 尤拉公式程序四、实验内容选⼀可求解的常微分⽅程的定解问题,分别⽤以上1, 4两种⽅法求出未知函数在节点处的近似值,并对所求结果与分析解的(数值或图形)结果进⾏⽐较。

五、解答1. 程序求解初值问题取n=10源程序:euler23.m:function [A1,A2,B1,B2,C1,C2]=euler23(a,b,n,y0)%欧拉法解⼀阶常微分⽅程%初始条件y0h = (b-a)/n; %步长h%区域的左边界a%区域的右边界bx = a:h:b;m=length(x);%前向欧拉法y = y0;for i=2:my(i)=y(i-1)+h*oula(x(i-1),y(i-1));A1(i)=x(i);A2(i)=y(i);endplot(x,y,'r-');hold on;%改进欧拉法y = y0;for i=2:my(i)=y(i-1)+h/2*( oula(x(i-1),y(i-1))+oula(x(i),y(i-1))+h*(oula(x(i-1),x(i-1))));B1(i)=x(i);B2(i)=y(i);endplot(x,y,'m-');hold on;%欧拉两步公式y=y0;y(2)=y(1)+h*oula(x(1),y(1));for i=2:m-1y(i+1)=y(i-1)+2*h*oula(x(i),y(i));C1(i)=x(i);C2(i)=y(i);endplot(x,y,'b-');hold on;%精确解⽤作图xx = x;f = dsolve('Dy=-3*y+8*x-7','y(0)=1','x');%求出解析解y = subs(f,xx); %将xx代⼊解析解,得到解析解对应的数值plot(xx,y,'k--');legend('前向欧拉法','改进欧拉法','欧拉两步法','解析解');oula.m:function f=oula(x,y)f=-3*y+8*x-7;2. 运算结果A1,A2为前向欧拉法在节点处的近似值,B1,B2为改进的欧拉法在节点处的近似值,C1,C2为欧拉公式法在节点处的近似值。

matlab_常微分方程数值解法

matlab_常微分方程数值解法
d2x 2x2 0
dt 2
简朴问题可以求得解析解,多数实际问题靠数值求解 。
第4页
一阶常微分方程(ODE )初值问题 : ODE :Ordinary Differential Equation
dy
f
(x,
y)
dx
x0 x xn
y(x0 ) y0
数值解法就是求y(x)在某些分立旳节点 xn 上旳近似值 yn,用以近似y(xn)
x0
y0
x1 f y(x), x dx
x0
x2 f y(x), x dx
x1
y(x1) f y(x1), x1 h
第17页
同样,在[x0,xn+1] ,积分采用矩形近似,得:
y(xn1) y0
f xn1
x0
y(x), x dx
y(xn ) f y(xn ), xn h
yn y(xn )
第5页
2、欧拉近似办法
2.1 简朴欧拉(L.Euler, 1707-1783)办法。
dy
dx
f
(y, x)
y(x0 ) y0
欧拉数值算法就是由初值通过递推求解,递推求解
就是从初值开始,后一种函数值由前一种函数值得到。核 心是构造递推公式。
y0 y1 y2 yn
第6页
i 1,2,...
第36页
没有一种算法可以有效地解决所有旳 ODE 问题,因此 MATLAB 提供了多种ODE函数。
函数 ODE类
特点
阐明

ode45
非刚性 单步法;4,5 阶 R-K 措施;合计 大部分场合旳首选措施
截断误差为 (△x)3
ode23
非刚性 单步法;2,3 阶 R-K 措施;合计 使用于精度较低旳情形

matlab 求解微分方程

matlab 求解微分方程

matlab 求解微分方程
在 MATLAB中可以使用 ode45 或者 ode15s 函数来求解常微分方程。

如果想要求解初值问题,可以使用 ode45 函数,语法如下:
```
tspan = [t0, tf]; % t0为初始时刻,tf为结束时刻
y0 = [y1, y2, ..., yn]; % y1, y2, ..., yn为初始条件
[t, y] = ode45(@(t, y) diffeq(t, y), tspan, y0);
```
其中,`diffeq` 是一个用户定义的函数,用来表示微分方程的右端,它的输入参数为时间 t 和状态变量 y,输出为微分方程的右端的值。

`t` 是时间向量,`y` 是状态变量的解。

如果想要求解延迟微分方程或者刚性微分方程,可以使用ode15s 函数,语法和 ode45 函数类似:
```
[t, y] = ode15s(@(t, y) diffeq(t, y), tspan, y0);
```
需要注意的是,求解微分方程之前,需要先定义好微分方程的右端函数 `diffeq` 。

用MATLAB求解微分方程

用MATLAB求解微分方程
用MATLAB求解微分方程
1. 微分方程的解析解
求微分方程(组)的解析解命令:
dsolve(‘方程1’, ‘方程2’,…‘方程n’, ‘初始条件’, ‘自变量’)
结 果:u = tan(t-c)
解 输入命令:dsolve('Du=1+u^2','t')
STEP2
STEP1
解 输入命令: y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x')
导弹追踪问题
设位于坐标原点的甲舰向位于x轴上点A(1, 0)处的乙舰发射导弹,导弹头始终对准乙舰.如果乙舰以最大的速度v0(是常数)沿平行于y轴的直线行驶,导弹的速度是5v0,求导弹运行的曲线方程.又乙舰行驶多远时,导弹将它击中? 解法一(解析法)
由(1),(2)消去t整理得模型:
解法二(数值解)
结 果 为:x = (c1-c2+c3+c2e -3t-c3e-3t)e2t y = -c1e-4t+c2e-4t+c2e-3t-c3e-3t+c1-c2+c3)e2t z = (-c1e-4t+c2e-4t+c1-c2+c3)e2t
2、取t0=0,tf=12,输入命令: [T,Y]=ode45('rigid',[0 12],[0 1 1]); plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')
3、结果如图
图中,y1的图形为实线,y2的图形为“*”线,y3的图形为“+”线.

(完整版)实验七用matlab求解常微分方程

(完整版)实验七用matlab求解常微分方程

实验七 用matlab 求解常微分方程一、实验目的:1、熟悉常微分方程的求解方法,了解状态方程的概念;2、能熟练使用dsolve 函数求常微分方程(组)的解析解;3、能熟练应用ode45\ode15s 函数分别求常微分方程的非刚性、刚性的数值解;4、掌握绘制相图的方法 二、预备知识: 1.微分方程的概念未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。

如果未知函数是一元函数,称为常微分方程。

常微分方程的一般形式为0),,",',,()(=n y y y y t F如果未知函数是多元函数,成为偏微分方程。

联系一些未知函数的一组微分方程组称为微分方程组。

微分方程中出现的未知函数的导数的最高阶解数称为微分方程的阶。

若方程中未知函数及其各阶导数都是一次的,称为线性常微分方程,一般表示为)()(')()(1)1(1)(t b y t a y t a y t a y n n n n =++++--若上式中的系数ni t a i ,,2,1),( =均与t 无关,称之为常系数。

2.常微分方程的解析解有些微分方程可直接通过积分求解.例如,一解常系数常微分方程1+=y dt dy可化为dt y dy=+1,两边积分可得通解为1-=tce y .其中c 为任意常数.有些常微分方程可用一些技巧,如分离变量法,积分因子法,常数变异法,降阶法等可化为可积分的方程而求得解析解.线性常微分方程的解满足叠加原理,从而他们的求解可归结为求一个特解和相应齐次微分方程的通解.一阶变系数线性微分方程总可用这一思路求得显式解。

高阶线性常系数微分方程可用特征根法求得相应齐次微分方程的基本解,再用常数变异法求特解。

一阶常微分方程与高阶微分方程可以互化,已给一个n 阶方程),,",',()1()(-=n n y y y t f y设)1(21,,',-===n n y y y y y y ,可将上式化为一阶方程组⎪⎪⎪⎩⎪⎪⎪⎨⎧====-),,,,(''''2113221n n nn y y y t f y yy y y y y反过来,在许多情况下,一阶微分方程组也可化为高阶方程。

MATLAB求解微分方程(实验6)微分方程求解-文档资料

MATLAB求解微分方程(实验6)微分方程求解-文档资料

dx
输入:y=dsolve ('Dy=1+y^2') y1=dsolve('Dy=1+y^2','y(0)=1','x')
输出:y= tan(t-C1)
(通解)
y1= tan(x+1/4*pi) (特解)
例2 常系数的二阶微分方程
y' '2 y'3y 0, y(0) 1, y' (0) 0
ode23:组合的2/3阶龙格-库塔-芬尔格算法 ode45:运用组合的4/5阶龙格-库塔-芬尔格算法
用于设定误差限(缺省时设定相对误差10-3, 绝对误差10-6), 命令为:options=odeset(’reltol’,rt,’abstol’,at), rt,at:分别为设定的相对误差和绝对误差.
14
注意: 1、在解n个未知函数的方程组时,x0和x均为n维向量,
m-文件中的待解方程组应以x的分量形式写成。
2、使用Matlab软件求数值解时,高阶微分方程必须 等价地变换成一阶微分方程组。
y(n) f (t, y, y, , y(n1) ) y(0), y(0), , y(n1) (0)
选择一组状态变量
x1 y, x2 y, , xn y(n1)
x1 x2 , x2 x3,
xn f (t, x1, x2 , , xn )
15
注意
x1 x2 , x2 x3,
xn f (t, x1, x2 , , xn )
1、建立M文件函数
function xdot = fun(t,x,y) xdot = [x2(t);x3(t);…;f(t, x1(t), x2(t),…xn(t))];

matlab 求解常微分方程组

matlab 求解常微分方程组

一、概述随着科技的发展,数学在各个领域中都扮演着非常重要的角色。

微分方程作为数学中的一个重要分支,在物理、工程、生物等领域都有着广泛的应用。

而 MATLAB 作为一个强大的数学软件工具,可以帮助我们快速高效地求解各种类型的微分方程组,从而为各领域的研究和应用提供有力的支持。

本文将详细介绍如何使用 MATLAB 求解常微分方程组的方法及步骤。

二、常微分方程组的定义常微分方程组是指这样一类微分方程组:一个或多个未知函数及其导数的方程组。

一般形式为:dx1/dt=f1(t,x1,x2,...,xn),dx2/dt=f2(t,x1,x2,...,xn),..., dxn/dt=fn(t,x1,x2,...,xn)。

其中x1,x2,...,xn 是未知函数,t是自变量,f1,f2,...,fn 是关于 t 和x1,x2,...,xn 的已知函数。

三、求解常微分方程组的方法MATLAB 提供了多种方法来求解常微分方程组,常用的方法有:欧拉法、四阶龙格库塔法、常微分方程组函数 ode45、ode23、ode113 等。

下面将分别介绍各种方法的具体步骤。

四、使用欧拉法求解常微分方程组欧拉法是一种简单粗糙的数值解法,通过分割等间距的步长满足微分方程初值问题。

其具体步骤如下:1. 定义微分方程组的初始条件和步长:x0=[x1(0),x2(0),...,xn(0)],h=步长。

2. 使用欧拉法逐步逼近微分方程组的解:for i=1:Nt(i)=t(i-1)+h;x(:,i+1)=x(:,i)+h*f(t(i),x(:,i));end其中 x(:,i)=[x1(i),x2(i),...,xn(i)] 为微分方程组在第 i 个时间节点的解。

五、使用四阶龙格库塔法求解常微分方程组四阶龙格库塔法是一种常用的数值解法,通过多次近似来计算微分方程组的数值解。

其具体步骤如下:1. 定义微分方程组的初始条件和步长:x0=[x1(0),x2(0),...,xn(0)],h=步长。

Matlab常微分方程的求解实验报告

Matlab常微分方程的求解实验报告

《数学实验》报告实验名称Mat lab常微分方程的求解学院计算机与通信工程学院专业班级计1103姓名------------- 学号-----------月6年2013.一、【实验目的】通过练习,熟悉Mat丄ab的求解常微分方程,函数文件的创建等。

了解Mat lab的命令窗口及其基本操作和常用命令。

通过练习,熟悉Mat lab的•些基本操作,掌握符号解法和数值解法,以及其中常用的方法。

二、【实验任务】1 > 求解微分力程y* =xsin (x) /cos (y)<»2、用数值方法求解下列微分方程,用不同颜色和线形将y和y,画在同•个图形窗口里:y f »+ty f-y=l-2t,初始时间:t=0;终止时间:t=n •初始条件:y |=0.1, y1|=0.2o €=oft=oo三、【实验程序】题一:y= dsolve('Dy=x*sin(x)/cos (y) ', 'x1)题二令:a=y, b二y,二a,, b'二y,,贝9 :a' =0*a+l*b+0;b,=l*a-t*b+(l-2*t);[a ;b,] = [0 1;1 —t][a;b] + [0;l](l-2*t);故化为一阶微分方程有:x =[0 1;1 -t]x+[0;l]u;其中:x'二[a' ;b'],u二(l~2*t) o初始条件:当t=0时,a=0. 1; b=0. 2oxd = mainfun( )function %UNTITLED Summary of this function goes here %ailed explanation goes here u=l-2 ・傑匸;xa=[0 1;1 -t][0;1]*u;endelf; tO=O; tf=pi;初始条fT%xOt=[0.1;0.2]; ,[t0r tf]/xOt) 'mainfun*[t,x]=ode23( y=x(:,1);Dy=x (:,2); ) ' 'r t, Dy, plot (t z y, ) 1 1Y 轴,匸轴,),ylabel (xlabel () 一阶导数'Dy''原始函数y \ legend (四、【实验结果】y =asin(C3 + sin(x) - x*cos(x))»funt =0.01450.08730.20140.32590.46210.61210.77780.96211.14821.27671.40531.51881.67061.86012.08912.35692.65462.96873.14160.1000 0.20000.1030 0.21580.1214 0.28830.159S 037980.2116 0.44790.2756 0.48470.3485 0.48130.4245 0.42820.4939 0.31680.5388 0.15990.5513 0.03200.5466 -0.10690.5272 -0.23580.4780 -0.41270.3788 -0.63470.2037 -0.8952-0.0742 ・ 1.1797-0.4677 -1.4646-0.9691 -1.7290-1.2793 -1.8586五、【实验总结】4通过本次实验,熟悉了M&t丄&b的一些基本操作,通过练习,会求解常微分方程,并熟练掌握符号解法和数值解法,以及其中常用的方法,包括欧拉方法、梯形公式、龙格库塔方法等。

MATLAB求解常微分方程

MATLAB求解常微分方程

的数值解, x1 (0) = 1, x1 (0) = 1, x 2 (0) = 2, x 2 (0) = 2 ,并绘制出轨迹曲线。
引入 u1 = x1 , u 2 = x1 , u 3 = x 2 , u 4 = x 2 , 可写出如下的隐式方程标准型为
• •


• u1 − u 2 = 0 • 2 • − u3 2 2 2 sin( ) + 5 =0 u u u u u 2 4 1 3 2 u 4 cos(u1 ) + t u1u 3 − e • 可用下面的程序求解: u 3 − u 4 = 0 • u u + u• u sin(u 2 ) + cos(u• u ) − sin t = 0 4 2 1 4 3 2 3
x ' = − y − z y ' = x + ay 将 a,b,c 作为附加参数, 给定微分方程组 z ' = b + ( x − c) z
选定 a=0.2,b=0.5,c=10 时,绘制出状态变量的三维图。
用下面的程序求解:
f=inline('[-x(2)-x(3);x(1)+a*x(2);b+(x(1)-c)*x(3)]',... 't','x','flag','a','b','c');%flag不可省去,用于占位 [t,x]=ode45(f,[0,100],[0;0;0],[],0.2,0.5,10); plot3(x(:,1),x(:,2),x(:,3));grid
Hale Waihona Puke = e −5t cos(2t + 1) + 5 , 试求出下面微分方
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用matlab求解常微分方程在MATLAB中,由函数dsolve()解决常微分方程(组)的求解问题,其具体格式如下:r 二dsolve('eql,eq2,・••字condl,cond2,・.・;V)匕ql,eq2,・・・*为微分方程或微分方程组,,condl,cond2,.・・;是初始条件或边界条件,P是独立变量,默认的独立变量是讥函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解。

dy _1例1:求解常微分方程莎一石的MATLAB程序为:dsolve(* Dy=l/(x+y) 1r!x1),注意,系统缺省的自变量为t,因此这里要把自变量写明。

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

例2:求解常微分方程E'-y— 0的MATLAB程序为:Y2=dsolve(1y*D2y-Dy A2=01, 1x f)Y2=dsolve(!D2y*y-Dy A2=0 J )我们看到有两个解,其中一个是常数0。

dx 心 ? —+ 5x + y = e dt空_兀_3『= g2f 例3:求常微分方程组〔力 ' 通解的MATLAB 程序为: [X,Y]=dsolve(f Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t) 1, 111) [X,Y]=dsolve(1Dx+2 *x-Dy=l0 * cos(t),Dx+Dy+2 *y=4 *exp(-2*t) T ,f x(0)=2,y(0)=0f ,f t T) 以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。

但是,我们知 道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析 解,此吋,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB 具有丰 富的函数,我们将其统称为solver,其一般格式为:i°cosr, 7=2 例4:求常微分方程组 y = 0 z 通解的MATLAB 程序为:[T,Y]=solver(odefun,tspan,yO)该函数表示在区间tspan=[tO,tf]±,用初始条件yO求解显式常微分方程卩=",刃。

solver 为命令odc45, odc23, ode 113, ode 15s, ode23s, ode23t, ode23tb 之一,这些命令各有特点。

我们列表说明如下:odefun为显式常微分方程),”,刃中的“丿)tspan为求解区间,要获得问题在其他指定点心,也,…上的解,则令切期二[心,/“,…心](要求-单调递增或递减),yO初始条件。

例5:求解常微分方程y' = -2y + 2x2+2x, 0<x<0.5, y(0) = l的MATLAB程序如下:y=dsolve(1Dy=-2*y+2*x A2+2*x1, 1y (0)=11, 1x!) x=0:0.01:0.5;yy=subs(y,x);fun=inline (*-2*y+2*x*x+2*x1); [x,y]=odel5s(fun, [0:0.01:0.5],1);ys=x ・ *x+exp(一2*x);Plot(x,y, f r f,x,ys, f b f )例6:求解常微分方程分冷+尸°"3)"'八°2()的解,并画出解的图形。

分析:这是一个二阶非线性方程(函数以及所有偏导数军委一次幕的是现性方程,高于一次的为非线性方程),用现成的方法均不能求解,但我们可以通过下面的变换,将二阶方程化为一阶方程组,即可求解。

= dy_令:兀产儿氐-亦,“ =7,则得到:~~ =兀2 ,兀| (0) = 1at<= 7(1-%,2 )x2 - Xj, x2 (0) = 0dt解:function [dfy]=mytt(t,fy)%fl=y;f2=dy/dt%求二阶非线性微分方程时,把一阶、二阶直到(ml)阶导数用另外一个函数代替%用ode45命令时,必须表示成Y』f(t,Y)的形式%Y=[yl;y2;y3],Y,=[yl\y2\y3>[y2;y3;f(yl,y2,y3)],%其中yl=y,y2=y',y3=y"%更高阶时类似dfy=[fy(2);7*(l ・fy ⑴八2)*fy(2)・fy ⑴];clear;clc[t,yy]=ode45Cmytt\[0 40],[1;0]);plot(t,yy)legend('yTdy')【例4.14.2.1-1]采用ODE解算扌旨令研究围绕地球旋转的卫星轨道。

(1)问题的形成轨道上的卫星,在牛顿第二定律F=ma = m^,和万有引力定律F T叫;作用下有dt r2a^L = -G^r ,引力常数G=6.672*10 H(N.m2/kg2) ,ME=5.97*1024(kg)是地球的质量。

假dr r定卫星以初速度v y(0)=4000m/s在x(0)=4.2*l()7(m)处进入轨道。

(2) 构成一阶微分方程组令 Y 二[刃力力为]「二[尤 V V x v y ]T =[x y * y]T儿 (…严 儿 (宀)计(3) 根据上式[dYdt.m]function Ycl=DYdt (t, Y)% t% Yglobal G ME% xy 二Y(l:2) ;Vxy=Y(3:4) ; %r=sqrt(sum(xy.八2)); Yd 二[Vxy ;-G*ME*xy//3] ; %(4)global G ME % <1>G=6 ・ 672e-ll;ME=5 ・ 97e24;vy0=4000;x0=-4 ・ 2e7;t0=0;tf=60*60*24*9; tspan=[tO,tf];%-GM E —GMY0=[xO;0;0;vyO]; %X=YY(:,1);Y=YY(:,2) ; %plot(X,Y, , linewidth1,2); hold on%axis(* image 1) %[XE,YE,ZE] = sphere (10); %RE=0・64e7; %XE=RE*XE;YE=RE*YE;ZE=0*ZE; %mesh(XE,YE,ZE),hold off %练习:dy_1.利用MATLAB求常微分方程的初值问题杰* " , >?L=o = 2的解。

r=dsolve(1Dy+3*y=01, !y (0)=21, 1x *)2.利用MATLAB求常微分方程的初值问题(1 +扌)* = 23,儿=。

二1,儿乜”的解。

r=dsolve(1D2y*(l+x A2)-2*x*Dy=0',1y(0)=1,Dy(0)=31, *)3. 利用MATLAB 求常微分方程y ⑷-2厂+* = 0的解。

解:y=dsolve(,D4y-2*D3y+D2y ,/x ,) [X,Y]=dsolve(1Dx*2+4*x+Dy-y=exp(t),Dx+3*x+y=01, 1x(0)=1.5,y (0)=01, 丫 t 】) 5.求解常微分方程/,-2(l-/)/+y = 0, 0<x<30, y(0) = l, /(0) = 0的特解,并作出解函 数的曲线图。

r=dsolve(1D2y-2*(l-y A 2)*Dy+y=01, 1y(0)=0,Dy(0)=01, * x 1)4.利用MATLAB 求常微分方程组r dx A dy.2— + 4x + -- y = e dt dt 3 X l /=0 ~ 2 y = 0 /=0的特解。

function DY=mytt2(t,Y)DY=[Y(2);2*( 1 -Y(l )A2)*Y(2)+Y( 1)]; clear;clc[t,YY]=ode45(,mytt2\[0 30],[l;0]); plot(t,YY)legendC^Vdy 1) 求解特殊函数方程勒让德方程的求解dy dx + /(/ + l)y = 0dx d , o x—(1一厂)即dy —2— + /(/ + l)y = 0 dxr=dsolve(1(l-x A2)*D2y-2*x*Dy+y*l*(1+1)=01,1x')连带勒让徳方程的求解:r=dsolve(1(l-x A 2)*D2y-2*x*Dy+y*(1*(l+l)-m A 2/(l-x A 2))=0\)贝塞尔方程r=dsolve(!x A 2*D2y+x*Dy+(x A 2-v A 2)*y=01)利用maplemaple dsolve((l-x A 2)*diff(y(x),x$2)-2*x*diff(y(x)r x)+n*(n+1)*y(x) =0, y (x)) 利用MAPLE 的深层符号计算资源d)等—力孚+ (+1)- 2m i 21-x y = 0经典特殊函数的调用MAPLE库函数在线帮助的检索树发挥MAPLE的计算潜力调用MAPLE函数【例 5.7.3.1-1 ]求递推方程f(n) = -3/(n- 1) -2/(n-2)的通解。

(1)gsl=maple(!rsolve(f(n)=-3*f(n-1)-2*f (n-2),f (k)); 1)(2)调用格式二gs2=maple(T rsolve1, T f(n)=-3*f(n-1)-2*f(n-2) T, !f(k) !)【例5.7.3.1-2]求/* =供的Hessian矩阵。

(1)FHl=maple(!hessian(x*y*z f [x,y,z]); *)FH2=maple(* hessian!, * x*y*z1, 1 [x,y,z] 1)FH=sym(FH2)【例5.7.3」・3】求sin(>2 + y2)在兀二Q y = 0处展开的截断8阶小量的台劳近似式。

(1)TLl=maple(^taylor(sin(x A2+y A2),[x=0,y=0],8)1)(2)maple(1 readlib(mtaylor); 1);TL2=maple(1mtaylor(sin(x A2+y A2), [x=0,y=0],8) 1);pretty(sym(TL2))运行MAPLE程序【例5.7.321】目标:设计求取一般隐函数f(x.y) = 0的导数才⑴解析解的程序,并要求:该程序能象MAPLE原有函数一样可被永久调用。

[DYDZZY.src]DYDZZY:=proc (f)#DYDZZY (f) is used to get the derivate of#an implicit functionlocal Eq,deq,imderiv;Eq: = 1 Eq 1 ;Eq:=f;deq:=diff(Eq, x);readlib(isolate);imderiv:=isolate(deq,diff(y(x) , x));end;procread(1DYDZZY•src1)(3)sl=maple(1DYDZZY(x=log(x+y(x)));1)s2=maple(f DYDZZY(x A2*y(x)-exp(2*x)=sin(y(x))) !) s3=maple(1DYDZZY1, 1 cos(x+sin(y(x)))=sin(y(x)) 1)clear maplemexprocread(1DYDZZY ・ src1);maple(1 save(、DYDZZY.m s) 1);(5)maple(* read'J'DYDZZY ・m、T);ss2=maple(1DYDZZY(x A2*y(x)-exp(2*x)=sin(y(x)))1)。

相关文档
最新文档