matlab教学第二章 微分方程

合集下载

数值计算-matlab内置函数-微分方程

数值计算-matlab内置函数-微分方程

注意:
1、在解n个未知函数的方程组时,x0和x均为n维向量, m-文件中的待解方程组应以x的分量形式写成. 2、使用Matlab软件求数值解时,高阶微分方程必须 等价地变换成一阶微分方程组.
d 2x 2 dx 2 1000 (1 x ) x 0 例 4 dt dt x(0) 2; x' (0) 0 解: 令 y1=x,y2=y1’
(二)建立数值解法的一些途径
设 x i 1 xi h, i 0,1,2, n 1, 可用以下离散化方法求 解微分方程: y' f(x,y) y(x0 ) y 0
1、用差商代替导数 若步长h较小,则有
y ( x h) y ( x ) y ' ( x) h
例1 求

d2y
2
dx du 1 u 2 dt
0 应表达为:D2y=0.
的通解.
输入命令:dsolve('Du=1+u^2','t')

果:u = tg(t-c)
例2
求微分方程的特解.
d 2 y dy 2 4 29y 0 dx dx y (0) 0, y ' (0) 15
xi 1 xi
f (t , y (t ))dt
xi 1 xi [ f ( xi , y ( xi )) f ( xi 1 , y ( xi 1 ))] 2
故有公式:
h y i 1 y i [ f ( xi , y i ) f ( xi 1 , y i 1 )] 2 y 0 y ( x0 )
解 输入命令 :
[x,y,z]=dsolve('Dx=2*x-3*y+3*z','Dy=4*x-5*y+3*z','Dz=4*x-4*y+2*z', 't'); x=simple(x) % 将x化简 y=simple(y) z=simple(z)

用Matlab解微分方程

用Matlab解微分方程

用Matlab 软件求解微分方程1.解析解(1)一阶微分方程 求21y dxdy +=的通解:dsolve('Dy=1+y^2','x') 求y x dxdy -+=21的通解:dsolve('Dy=1+x^2-y','x') 求⎪⎩⎪⎨⎧=+=1)0(12y y dx dy 的特解:dsolve('Dy=1+y^2',’y(0)=1’,'x')(2)高阶微分方程 求解⎩⎨⎧-='==-+'+''.2)2(,2)2(,0)(222πππy y y n x y x y x 其中,21=n ,命令为: dsolve('x^2*D2y+x*Dy+(x^2-0.5^2)*y=0','y(pi/2)=2,Dy(pi/2)=-2/pi','x') 求042=-+'-'''x y y y 的通解,命令为:dsolve('D3y-2*Dy+y-4*x=0','x')输出为:ans=8+4*x+C1*exp(x)+C2*exp(-1/2*(5^(1/2)+1)*x)+C3*exp(1/2*(5^(1/2)-1)*x)(3)一阶微分方程组求⎩⎨⎧+-='+=').(3)(4)(),(4)(3)(x g x f x g x g x f x f 的通解:[f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g','x') 输出为: f =exp(3*x)*(cos(4*x)*C1+sin(4*x)*C2)g =-exp(3*x)*(sin(4*x)*C1-cos(4*x)*C2)若再加上初始条件1)0(,0)0(==g f ,则求特解:[f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g','f(0)=0,g(0)=1','x')输出为: f =exp(3*x)*sin(4*x)g =exp(3*x)*cos(4*x)2.数值解(1)一阶微分方程⎪⎩⎪⎨⎧=≤≤-=.1)0(,10,2y x y x y dxdy 现以步长h=0.1用“4阶龙格—库塔公式”求数值解: 先建立“函数M —文件”:function f=eqs1(x,y)f=y-2*x/y;再命令: 格式为:[自变量,因变量]=ode45(‘函数文件名’,节点数组,初始值) 命令为: [x,y]=ode45('eqs1',0:0.1:1,1)若还要画图,就继续命令: plot(x,y)(2)一阶微分方程组⎪⎩⎪⎨⎧==+-='≤≤-+='.3.0)0(,2.0)0(,2sin ,10,2cos 21212211y y y y x y x y y x y 只须向量化,即可用前面方法: function f=eqs2(x,y)f=[cos(x)+2*y(1)-y(2);sin(x)-y(1)+2*y(2)];将此函数文件,以文件名eqs2保存后,再下命令:[x,y]=ode45('eqs2',0:0.1:1,[0.2;0.3])(注:输出的y 是矩阵,第i 列为函数i y 的数值解)要画图,继续命令:hold on,plot(x,y(:,1)),plot(x,y(:,2)),hold off(3)高阶微分方程先化成一阶微分方程组,再用前面方法。

微分方程matlab

微分方程matlab

微分方程matlab微分方程是数学中的一门重要课程,它描述了自然界各种变化和现象的规律。

在科学研究和工程实践中,微分方程有着广泛的应用,尤其在物理学、工程学和生物学等领域中起着重要的作用。

通过使用MATLAB软件,我们可以更加方便地求解和分析微分方程。

MATLAB提供了许多强大的函数和工具箱,可以帮助我们快速有效地处理各种微分方程问题。

让我们考虑一个简单的一阶线性微分方程。

假设我们有一个物体的速度与时间的关系可以通过以下微分方程描述:dv/dt = -k*v其中,v表示速度,t表示时间,k是一个常数。

这个微分方程描述了物体速度随时间变化的规律,右侧的-k*v表示速度随时间的变化率。

我们可以使用MATLAB的ode45函数来求解这个微分方程。

ode45函数是一个常用的求解常微分方程的函数,它基于龙格-库塔方法,可以得到较为精确的数值解。

下面是使用MATLAB求解这个微分方程的代码:```matlabfunction dvdt = velocity(t, v)k = 0.1;dvdt = -k*v;end[t, v] = ode45(@velocity, [0, 10], 1);plot(t, v);xlabel('时间');ylabel('速度');title('速度随时间的变化');```在上面的代码中,我们首先定义了一个名为velocity的函数,它表示微分方程的右侧。

然后,我们使用ode45函数求解微分方程,并指定了时间的范围和初始条件。

最后,我们使用plot函数将速度随时间的变化绘制成图形。

通过运行以上代码,我们可以得到速度随时间变化的图形,从而更加直观地了解物体的运动规律。

除了一阶线性微分方程外,MATLAB还可以求解更复杂的微分方程,如高阶微分方程、偏微分方程等。

通过灵活运用MATLAB的函数和工具箱,我们可以更加方便地进行微分方程的建模和求解。

matlab因式分解 微分方程

matlab因式分解 微分方程

一、Matlab在因式分解中的应用Matlab作为一种高级的数学计算软件,具有强大的因式分解功能。

在数学中,因式分解是将一个多项式分解成若干个一次或多次多项式的乘积的过程。

Matlab通过简单的几行代码就可以实现多项式的因式分解,极大地方便了数学计算和解题过程。

在Matlab中,通过使用“factor”函数可以对多项式进行因式分解。

如果有一个多项式为p(x) = x^2 - 4,那么在Matlab中可以使用以下代码进行因式分解:```syms xp = x^2 - 4;factors = factor(p);```这段代码就可以得到p(x)的因式分解结果factors = (x-2)*(x+2),从而简单地实现了多项式的因式分解。

二、Matlab在微分方程中的应用微分方程是描述自然界中各种现象的最基本的数学模型之一,而在求解微分方程的过程中,Matlab也可以发挥其强大的计算能力。

通过Matlab中的“dsolve”函数,可以对各种类型的微分方程进行求解,无论是常微分方程还是偏微分方程。

以一阶常微分方程为例,对于方程dy/dx = x^2,可以使用以下代码在Matlab中进行求解:```syms y(x)eqn = diff(y,x) == x^2;cond = y(0) == 1;ySol(x) = dsolve(eqn,cond);```这段代码中,首先定义了微分方程dy/dx = x^2和初始条件y(0) = 1,然后通过“dsolve”函数求解得到了微分方程的解ySol(x)。

而对于更为复杂的高阶微分方程或者偏微分方程,Matlab同样可以提供便捷的求解方法,极大地简化了数学建模和科学计算的过程。

总结作为一种专业的数学计算软件,Matlab在因式分解和微分方程求解中都具有强大的功能和性能。

通过简单的几行代码,就可以实现复杂多项式的因式分解以及各种类型微分方程的求解,极大地提高了数学建模和科学计算的效率。

matlab 微分方程求解

matlab 微分方程求解

例2
求微分方程的特解. 求微分方程的特解
d 2 y dy 2 + 4 + 29 y = 0 dx dx y (0) = 0, y ' (0) = 15
输入命令: 解 输入命令 y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x') 结 果 为 : y =3*exp(-2*x)*sin(5*x) 作图命令: 作图命令:ezplot(y,[1.0,4])
解析法假设导弹在t时刻的位置为pxtyt乙舰位于由于导弹头始终对准乙舰故此时直线pq就是导弹的轨迹曲线弧op处的切线即有又根据题意弧op的长度为aq3数学建模实例由12消去t整理得模型
《高等数学》 高等数学》
—上机教学(三) 上机教学( 微分方程求解
上机目的
1、学会用 Matlab 求简单微分方程的解析解 、 求简单微分方程的解析解. 2、学会用 Matlab 求微分方程的数值解 、 求微分方程的数值解.
例3
求微分方程组的通解. 求微分方程组的通解 dx dt = 2 x − 3 y + 3 z dy = 4 x − 5 y + 3z dt dz = 4 x − 4 y &olve('Dx=2*x-3*y+3*z','Dy=4*x-5*y+3*z','Dz=4*x-4*y+2*z', 't') ; x=simple(x) % 将x化简 化简 y=simple(y) z=simple(z)
假设导弹在 t 时刻的位置为 P(x(t), y(t)),乙舰位于 Q(1, v0 t ) . y(t))

matlab解带参数的微分方程

matlab解带参数的微分方程

matlab解带参数的微分方程微分方程是描述物理和数学问题的重要方程之一。

它通常用于描述系统随时间的变化,并且在工程、物理、生物和经济等领域中都有广泛的应用。

MATLAB是一种强大的数值计算软件,可以用于解决微分方程的数值近似解。

在MATLAB中,可以使用ode45函数来求解带参数的微分方程。

ode45函数是一种常用的数值求解微分方程的方法,它使用了龙格-库塔(Runge-Kutta)方法,并具有自适应步长控制和误差控制的功能,因此能够较准确地求解微分方程。

首先,我们需要定义一个匿名函数来表示微分方程。

假设我们要求解的微分方程是dy/dt = f(t, y, p),其中y是未知函数的值,t 是自变量的值,p是参数。

可以使用如下方式定义这个函数:```MATLABfunction dydt = myODE(t, y, p)dydt = f(t, y, p); % f是一个给定的函数,用于计算dy/dtend```然后,我们可以使用ode45函数来求解微分方程。

其中,tspan表示求解的时间区间,y0表示初始条件,p表示参数。

可以使用如下方式调用ode45函数:```MATLAB[t, y] = ode45(@(t, y) myODE(t, y, p), tspan, y0);```在这个例子中,@(t, y) myODE(t, y, p)是一个匿名函数,它将t 和y作为输入,调用myODE函数来计算dy/dt,然后返回结果。

ode45函数将返回一个时间向量t和一个与t对应的解向量y。

在解得微分方程后,可以使用plot函数将结果可视化。

例如,如果要绘制y关于t的图像,可以使用如下方式:```MATLABplot(t, y);xlabel('t');ylabel('y');title('Solution of the differential equation');```以上代码将绘制出y关于t的图像,并添加了合适的坐标轴标签和标题。

Matlab微分方程的解法

Matlab微分方程的解法

-0.5
-0.55
-0.6
-0.65
-0.7
-0.75
-0.8
-0.85
-0.9
-0.95
-1
0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
1
time t0=0,tt=1
图3 给定新的初始数据,由函数xprim2定义的ODE解的图形
(d) 求解下面方程组并不难:
x x x x ì ' = - 0.1
在下面的初值问题中,有两个未知函数:x1(t)和x2(t),并用以下式子表达其微... 页码,1/11
Matlab关于微分方程的解法
MATLAB使用龙格-库塔-芬尔格(Runge-Kutta-Fehlberg)方法来解ODE问题。在有限点内计算求解。而 这些点的间距有解的本身来决定。当解比较平滑时,区间内使用的点数少一些,在解变化很快时,区间内应使 用较多的点。 为了得到更多的有关何时使用哪种解法和算法的信息,推荐使用helpdesk。所有求解方程通用的语法或句法在 命令集中头两行给出。时间间隔将以向量t=[t0,tt]给出。 命令ode23可以求解(2,3)阶的常微分方程组,函数ode45使用(4,5)阶的龙格-库塔-芬尔格方法。注意,在这种情 况下x’是x的微分不是x的转置。 在命令集中solver将被诸如ode45函数所取代。
0.6
0.55
0.5
0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
1
time t0=0,tt=1
图1 由函数xprim1定义的ODE解的图形
(b) 解下面的ODE过程是等价的:
ïíìx' = x2
ïîx(0) = 1

matlab 解微分方程

matlab 解微分方程

matlab 解微分方程Matlab是一种非常强大的数学软件,它不仅可以用于数值计算和数据分析,还可以用来解微分方程。

微分方程是数学中的一种重要方程类型,描述了变量之间的关系以及其随时间的变化规律。

在科学和工程领域中,微分方程的解析解往往很难求得,而数值解法则成为一种常用的求解手段。

在Matlab中,我们可以使用多种方法来求解微分方程,其中最常用的方法是数值解法。

数值解法通过将微分方程转化为差分方程,然后利用计算机进行迭代计算,逐步逼近方程的解。

常见的数值解法包括欧拉法、改进的欧拉法、龙格-库塔法等。

以一阶常微分方程为例,假设我们要求解如下的微分方程:dy/dx = f(x, y)其中,f(x, y)是已知的函数。

为了使用数值解法,我们首先需要将微分方程转化为差分方程,即将连续的求导操作转化为离散的差商操作。

我们可以选择合适的步长h,将自变量x划分成若干个小区间,然后在每个区间内进行近似计算。

在Matlab中,可以使用ode45函数来求解微分方程。

ode45函数利用了龙格-库塔法进行数值求解,它具有较高的精度和稳定性。

使用ode45函数时,我们需要提供微分方程的右侧函数f(x, y),以及初始条件y0。

ode45函数会自动进行迭代计算,得到微分方程的数值解。

下面是一个使用ode45函数求解微分方程的示例:```matlab% 定义微分方程的右侧函数function dydx = f(x, y)dydx = x + y;end% 求解微分方程xspan = [0 1]; % 自变量的范围y0 = 0; % 初始条件[x, y] = ode45(@f, xspan, y0);% 绘制解的图像plot(x, y);xlabel('x');ylabel('y');title('Solution of dy/dx = x + y');```在上面的代码中,我们首先定义了微分方程的右侧函数f(x, y),然后使用ode45函数进行求解。

Matlab学习——求解微分方程(组)

Matlab学习——求解微分方程(组)

Matlab学习——求解微分⽅程(组)介绍:1.在 Matlab 中,⽤⼤写字母 D 表⽰导数,Dy 表⽰ y 关于⾃变量的⼀阶导数,D2y 表⽰ y 关于⾃变量的⼆阶导数,依此类推.函数 dsolve ⽤来解决常微分⽅程(组)的求解问题,调⽤格式为X=dsolve(‘eqn1’,’eqn2’,…)如果没有初始条件,则求出通解,如果有初始条件,则求出特解系统缺省的⾃变量为 t。

2.函数 dsolve 求解的是常微分⽅程的精确解法,也称为常微分⽅程的符号解.但是,有⼤量的常微分⽅程虽然从理论上讲,其解是存在的,但我们却⽆法求出其解析解,此时,我们需要寻求⽅程的数值解,在求常微分⽅程数值解⽅⾯,MATLAB 具有丰富的函数,将其统称为 solver,其⼀般格式为:[T,Y]=solver(odefun,tspan,y0)说明:(1)solver 为命令 ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb、ode15i 之⼀.(2)odefun 是显⽰微分⽅程y ' = f (t , y) 在积分区间 tspan = [t 0 , t f ] 上从t0 到t f⽤初始条件 y0求解.(3)如果要获得微分⽅程问题在其他指定时间点t 0 , t1 , t 2 , , t f上的解,则令tspan = [t 0 , t1 , t 2 , t f ](要求是单调的).(4)因为没有⼀种算法可以有效的解决所有的 ODE 问题,为此,Matlab 提供了多种求解器 solver,对于不同的 ODE 问题,采⽤不同的 solver3.在 matlab 命令窗⼝、程序或函数中创建局部函数时,可⽤内联函数 inline,inline 函数形式相当于编写 M 函数⽂件,但不需编写 M-⽂件就可以描述出某种数学关系.调⽤ inline 函数,只能由⼀个 matlab 表达式组成,并且只能返回⼀个变量,不允许[u,v]这种向量形式.因⽽,任何要求逻辑运算或乘法运算以求得最终结果的场合,都不能应⽤ inline 函数,inline 函数的⼀般形式为:FunctionName=inline(‘函数内容’, ‘所有⾃变量列表’)例如:(求解 F(x)=x^2*cos(a*x)-b ,a,b 是标量;x 是向量)在命令窗⼝输⼊:Fofx=inline('x.^2.*cos(a.*x)-b','x','a','b');g = Fofx([pi/3 pi/3.5],4,1)系统输出为:g=-1.5483 -1.7259注意:由于使⽤内联对象函数 inline 不需要另外建⽴ m ⽂件,所有使⽤⽐较⽅便,另外在使⽤ ode45 函数的时候,定义函数往往需要编辑⼀个 m ⽂件来单独定义,这样不便于管理⽂件,这⾥可以使⽤ inline 来定义函数。

Matlab关于微分方程的解法

Matlab关于微分方程的解法

Matlab 关于微分方程的解法MATLAB 使用龙格-库塔-芬尔格(Runge-Kutta-Fehlberg )方法来解ODE 问题。

在有限点内计算求解。

而这些点的间距有解的本身来决定。

当解比较平滑时,区间内使用的点数少一些,在解变化很快时,区间内应使用较多的点。

为了得到更多的有关何时使用哪种解法和算法的信息,推荐使用helpdesk 。

所有求解方程通用的语法或句法在命令集中头两行给出。

时间间隔将以向量t=[t0,tt]给出。

命令ode23可以求解(2,3)阶的常微分方程组,函数ode45使用(4,5)阶的龙格-库塔-芬尔格方法。

注意,在这种情况下x ’是x 的微分不是x 的转置。

在命令集中solver 将被诸如ode45函数所取代。

命令集 龙格-库塔-芬尔格方法[time,x]=solver(str,t,x0) 计算ODE 或由字符串str 给定的ODE 的值,部分解已在向量time 中给出。

在向量time中给出部分解,包含的是时间值。

还有部分解在矩阵x 中给出,x 的列向量是每个方程在这些值下的解。

对于标量问题,方程的解将在向量x 中给出。

这些解在时间区间t(1)到t(2)上计算得到。

其初始值是x0即x(t(1)).此方程组有str 指定的M 文件中函数表示出。

这个函数需要两个参数:标量t 和向量x,应该返回向量x ’(即x 的导数)。

因为对标量ODE 来说,x 和x ’都是标量。

在M 文件中输入odefile 可得到更多信息。

同时可以用命令numjac 来计算Jacobi 函数。

[t,x]=solver(str,t,x0,val) 此方程的求解过程同上,结构val 包含用户给solver 的命令。

参见odeset 和表1,可得到更多信息。

Ode45 此方法被推荐为首选方法。

Ode23 这是一个比ode45低阶的方法。

Ode113 用于更高阶或大的标量计算。

Ode23t 用于解决难度适中的问题。

第二章 高等数学问题的MATLAB解法

第二章 高等数学问题的MATLAB解法

>> syms x a >> f1=(cos(x) - 1) / x; >> f11=limit(f1) f11 = 0 >> f11=limit(f1,x,0) f11 = 0 >> f2 = 1 / x^3; >> f21 = limit(f2,'right') ??? Error using ==> sym.limit Limit point must be a scalar. >> f21 = limit(f2,x,0,'right') f21 = Inf >> f3 = [(1+a/x)^2,exp(-x)]; >> f21 = limit(f3,x,inf,'left') f21 = [ 1, 0]
-0.96 -0.965 -0.97 -0.975 -0.98 -0.985 -0.99 -0.995 -1 3 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4

f ( x, y) 100 ( y x 2 ) 2 (1 x) 2的 小 点 极 值 。
>> x0 = [-1.2,1]; >> h = @(x)100*(x(2)-x(1)^2)^2 + (1 - x(1))^2; >> [x,fval] = fminsearch(h,x0) x= 1.0000 1.0000 fval = 8.1777e-010
>> f = @(x)x^3-2*x - 5 f= f 1x1 16 function_handle array Grand total is 1 element using 16 bytes @(x)x^3-2*x – 5 >> [x,fval] = fminbnd(f,0,2) x= 0.8165 fval = -6.0887 >>fplot(f,[0 2])

matlab微分方程组的解法

matlab微分方程组的解法

一、引言1.1 MATLAB在微分方程组求解中的应用MATLAB作为一种强大的数学工具,被广泛应用于微分方程组的求解与模拟分析。

1.2 本文的研究目的和意义本文旨在探讨MATLAB在求解微分方程组方面的应用方法,帮助读者更好地理解和运用MATLAB进行微分方程组的解法,从而提高数学建模和工程仿真的效率与精度。

二、微分方程组的基本概念2.1 微分方程组的定义微分方程组是由多个未知函数及其偏导数构成的方程组。

常见的微分方程组可以分为线性微分方程组与非线性微分方程组。

2.2 微分方程组的求解方法求解微分方程组的方法包括解析解法、数值解法和符号解法。

而MATLAB在微分方程数值解法中具有独特的优势。

三、MATLAB在微分方程组求解中的基本操作3.1 MATLAB中微分方程组的表示在MATLAB中,微分方程组可以使用符号表达式或者函数形式表示,便于进行数值求解和仿真分析。

3.2 MATLAB中微分方程组的数值求解利用MATLAB中的ode45、ode23等求解微分方程组的函数,可以快速地求得微分方程组的数值解,并且可以灵活地控制求解的精度和速度。

3.3 MATLAB中微分方程组的图像绘制MATLAB提供了丰富的绘图函数,能够直观地展现微分方程组的数值解,帮助用户更直观地理解微分方程组的解法结果。

四、 MATLAB在微分方程组求解中的应用实例4.1 简单的线性微分方程组求解通过一个简单的线性微分方程组的求解实例,展示MATLAB在微分方程组求解中的基本操作和方法。

4.2 复杂的非线性微分方程组求解通过一个包含非线性项的微分方程组求解实例,展示MATLAB在处理复杂微分方程组时的应用能力。

五、MATLAB在微分方程组求解中的进阶应用5.1 高阶微分方程组的数值求解MATLAB可以利用符号运算工具箱对高阶微分方程组进行符号求解,也可以通过数值求解的方式得到高阶微分方程组的数值解。

5.2 特定约束条件下的微分方程组求解MATLAB可以通过引入特定的约束条件,对微分方程组进行求解,满足实际应用中的各种约束条件。

微分方程的Matlab求解ppt课件

微分方程的Matlab求解ppt课件

y1' y2 y3
y2 ' y1 y3 y3' 0.51y1 y2
y1(0) 0, y2 (0) 1, y3(0) 1
解 1、建立m-文件如下:
function dy=rigid(t,y) dy=zeros(3,1); dy(1)=y(2)*y(3); dy(2)=-y(1)*y(3); dy(3)=-0.51*y(1)*y(2);
s.z x=simple(s.x) %简化结果
y=simple(s.y)
z=simple(s.z)
结 果 为:
x =-(-C1-C2*exp(-3*t)+C2-C3+C3*exp(-3*t))*exp(2*t)
y =(-C1*exp(-4*t)+C1+C2*exp(-4*t)+C2*exp(-3*t)-C2+C3-C3*exp(-3*t))*exp(2*t)
x(0) 0, y(0) 0
返回
2. 模型求解
(1) w=20时,建立m-文件如下: function dy=eq3(t,y) dy=zeros(2,1); dy(1)=20*(10+20*cos(t)-y(1))/sqrt ((10+20*cos(t)-y(1))^2+(20+15*sin(t)-y(2))^2); dy(2)=20*(20+15*sin(t)-y(2))/sqrt ((10+20*cos(t)-y(1))^2+(20+15*sin(t)-y(2))^2);
注意: 1、在解n个未知函数的方程组时,x0和x均为n维向量,
m-文件中的待解方程组应以x的分量形式写成.
2、使用Matlab软件求数值解时,高阶微分方程必须 变换成等价的一阶微分方程组.

matlab求微分方程组的解析解

matlab求微分方程组的解析解

matlab求微分方程组的解析解摘要:I.引言- 介绍微分方程组及其在科学和工程中的应用- 说明求解微分方程组的解析解的重要性II.MATLAB求解微分方程组的基本步骤- 准备微分方程组- 初始化参数- 选择适当的求解方法- 检查和分析解III.MATLAB求解微分方程组的常用函数- ode45: 使用RK方法求解常微分方程组- ode23: 使用二阶龙格-库塔方法求解常微分方程组- pdsolve: 求解偏微分方程组IV.求解微分方程组的示例- 常微分方程组示例- 偏微分方程组示例V.结论- 总结MATLAB求解微分方程组的方法和函数- 强调解析解的重要性及其在实际问题中的应用正文:微分方程组广泛应用于科学和工程领域,如物理、化学、生物学、经济学等。

求解微分方程组的解析解有助于我们深入理解这些领域的规律和特性。

MATLAB作为一种强大的数学计算工具,可以方便地求解微分方程组。

本文将介绍MATLAB求解微分方程组的解析解的基本方法和常用函数。

首先,我们简要回顾一下MATLAB求解微分方程组的基本步骤。

1) 准备微分方程组:根据实际问题建立微分方程组,确定其数学模型。

2) 初始化参数:设定求解区间、初始值和边界条件等参数。

3) 选择适当的求解方法:根据微分方程组的类型和参数特点选择合适的求解函数。

4) 检查和分析解:对求得的解进行检查,确保其合理性和准确性。

MATLAB提供了丰富的求解微分方程组的函数。

1) ode45:使用RK方法求解常微分方程组。

该函数具有较高的求解精度和稳定性,适用于大多数常微分方程组问题。

2) ode23:使用二阶龙格-库塔方法求解常微分方程组。

该函数在某些情况下具有较好的性能,尤其适用于具有对称性的微分方程组。

3) pdsolve:求解偏微分方程组。

该函数可以处理多变量、多区域和多时间的偏微分方程组问题。

为了更好地理解MATLAB求解微分方程组的方法和函数,我们来看两个示例。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。



yn+1 = (yn + (h/2)*(- yn + xn + xn+1 +2))/(1+h/2)。
21
2016/4/27



x1(1)=0;y1(1)=1;y2(1)=1;y3(1)=1;h=0.1; for k=1:10 x1(k+1)=x1(k)+h; y1(k+1)=(1-h)*y1(k)+h*x1(k)+h; y2(k+1)=(y2(k)+h*x1(k+1)+h)/(1+h); y3(k+1)=(y3(k)+(h/2)*(-y3(k)+x1(k)+x1(k+1)+2))/(1+h/2); end x=0:0.1:1; y=x+exp(-x); x1=x1(1:11),y=y(1:11),y1=y1(1:11),y2=y2(1:11),y3=y3( 1:11), plot(x,y,x1,y1,'k:',x1,y2,'r--',x1,y3,'g*') 程序中,x1为自变量,y为精确解,y1、y2、y3分别为向 前欧拉法、后退欧拉法和梯形法的解。结果如下:
例2.1 一个较热的物体置于室温为180C的房间内, 该物体最初的温度是600C,3分钟以后降到500C。想 知道它的温度降到300C 需要多少时间?10分钟以后 它的温度是多少? 牛顿冷却(加热)定律:将温度为T的物体放入处于 常温 m 的介质中时,T的变化速率正比于T与周围介 质的温度差。 分析:假设房间足够大,放入温度较低或较高的物体 时,室内温度基本不受影响,即室温分布均衡,保持 为m,采用牛顿冷却定律是一个相当好的近似。

2)Y方军队的一个士兵在单位时间内杀死X 方军队 a 名 , 士兵;
3)X 方军队的一个士兵在单位时间内杀死Y方军队 b 名 士兵;

{Δt 时间内X军队减少的士兵数 }= {Δt 时间内Y军队消灭 对方的士兵数} dx ay (a 0) dt 即有 Δx =-ayΔt 令 t 0 得 dy bx (b 0)10 2016/4/27 同理 Δy =-bxΔt dt
x

2016/4/27
3

建立坐标系,由微元法分析可知:
1 dV D ( x ) 2 dx 4


其中x表示高度,直径是高度的函数,记为D(x) 可得微分方程: dV 1 2
D( x) dx 4 V (0) 0

如果该方程中的函数D(x)无解析表达式,只给出 D(x)的部分测试数据,如何求解此微分方程呢?

2.2.3 微元法

基本思想:通过分析研究对象的有关变量在一个 很短时间内的变化情况建立微分方程。 本章引例

2016/4/27
11
2.2.4 分析法




基本思想:根据对现实对象特性的认识,分析其因果 关系,找出反映内部机理的规律。 例2.4 独家广告模型 广告是调整商品销售的强有力 的手段,广告与销售量之间有什么内在联系?如何评 价不同时期的广告效果? 解:1.分析广告的效果,可做如下的条件假设: ①商品的销售速度会因广告而增大,当商品在市场上 趋于饱和时,销售速度将趋于一个极限值; ②商品销售率(销售加速度)随商品销售速度的增高 而降低。
13



3.模型建立 选择如下广告策略,t时刻的广告费用为: 0 t A, A(t ) t 0, 建立微分方程:
dS S (t ) pA(t )(1 ) S (t ) dt M

模型分析:是否与假设相符?
2016/4/27
14
2.3 微分方程求解方法
0.4
0.5 0.6 0.7 0.8 0.9 1
2016/4/27
1.0703
1.1065 1.1488 1.1966 1.2493 1.3066 1.3679
1.0702
1.1064 1.1486 1.1964 1.2491 1.3064 1.3677
22
2016/4/27
表2-1当h = 0.1时
xn
0 0.1 0.2 0.3 0.4 0.5 精确解 1 1.0048 1.0187 1.0408 1.0703 1.1065 向前欧拉法 1 1 1.0100 1.0290 1.0561 1.0905 后退欧拉法 1 1.0091 1.0264 1.0513 1.0830 1.1209 梯形法 1 1.0048 1.0186 1.0406 1.0701 1.1063
7
2016/4/27

建立模型:设物体在冷却过程中的温度为T(t),t≥0, 根据牛顿加热(冷却)定律:dT 与( T m)成正比 , dt 建立微分方程
dT k (T m) dt T (0) 60

其中参数k >0,m=18。
2016/4/27
8
2.2.2 利用平衡与增长式

许多研究对象在数量上常常表现出某种不变的特性, 如封闭区域内的能量、货币量等。利用变量间的平衡 与增长特性,可分析和建立有关变量间的相互关系。 此类建模方法的关键是分析并正确描述基本模型的右 端,使平衡式成立。 例2.2 战斗模型:两方军队交战,希望为这场战斗建 立一个数学模型,应用这个模型达到如下目的: 1. 预测哪一方将获胜?
2.3.2 数值解法


微分方程的数值解法是解决某些实际问题中经常使用的方 法。设待求解的定解问题为 dy f ( x, y ), y ( x 0 ) y 0 dx 求该问题数值解法的基本过程如下: 引入自变量取值点序列xn ,定义 hn xn xn1 为步长,常 用定步长( hn与n无关,为常数),其精确解记为y ( x n ) , 一般难以得到。为了寻求 y( xn ) 的近似值 y n ,设想根据一 定的原理,结合当前得到近似解,近似地表示该点或前一 点的导数值,由此推出计算 y n 的迭代公式。因此数值解法 一般只能得到微分方程的近似解 yn 。下面介绍两个微分 方程中最常用的数值解法。
yn1 yn h f ( xn , yn )
(2)将预测值代入梯形公式的右端作为校正,得到yn+1 1 y n 1 y n h [ f ( x n , y n ) f ( x n 1 , y n 1 )] 2 ,n=1,2,… 该式称为改进欧拉公式。



2016/4/27





2. 估计获胜的一方最后剩下多少士兵?
3. 计算失败的一方开始时必须投入多少士兵才能赢得 这场战斗?
9
2016/4/27


解:模型建立:
设 x(t): t 时刻X方存活的士兵数 y(t): t 时刻Y方存活的士兵数


假设:
1)双方所有士兵不是战死就是活着参加战斗,x(t)与y(t) 都是连续变量;
19



例2.5 求解微分方程
y' = -y +x +1, y(0) = 1, 取步长h = 0.1和0.001。
分别用三种数值解法求解,并结合其精确解,对求解误差进
行分析比较。

解 这是一个一阶线性微分方程,可用解析解法得到其精确解 y = x + e-x。
2016/4/27
20

三种数值解如下: 1) 向前欧拉法:迭代公式为 yn+1 = (1-h)yn + hxn + h,n=0,1,...。其中y0= y(0) = 1。 2) 后退欧拉法:由后退欧拉法隐式公式得 yn+1 = yn + h(-yn+1+xn+1+1),变形为 yn+1 = (yn + hxn+1 + h)/(1+h)。 3) 梯形法:将隐式梯形公式转化为显示迭代公式 如下:
2016/4/27
17


若f(x,y)中的x取右端点,可得向后欧拉公式如下:
yn+1 = yn + h f (xn +1, yn +1) ,n = 0,1,… 称为隐式公式,因为要得出数值解yn+1,就必须求解这个
非线性方程,计算比较困难。

如果用将向前和向后欧拉公式加以平均,可得到梯形公式:
0.6
0.7 0.8 0.9 1
2016/4/27
1.1488
1.1966 1.2493 1.3066 1.3679
1.1314
1.1783 1.2305 1.2874 1.3487
1.1645
1.2132 1.2665 1.3241 1.3855
1.1485
1.1963 1.2490 1.3063 1.3676





2.3.1 解析解法 解析解法只能解决一些特殊微分方程,这些方 法主要针对: 一阶特殊的微分方程:如使用分离变量法、方 程变换法、线性方程的常数变易法或公式法求 解。 二阶或高阶常系数线性微分方程的特征根法。 在高等数学的教程中有专门介绍。 下面着重介绍微分方程的数值解法。
15
2016/4/27
2016/4/27 16
1.欧拉方法

这是一种最简单的解微分方程的数值方法:就是在小区间 [xn, xn+1]上用差商代替微商,可以得到近似的表达式
y ( x n 1 ) y ( x n ) f ( x, y ) h
相关文档
最新文档