求微分方程(组)的解析解命令:
dsolve(‘方程1’, 方程2’,…方程n’, 初始条件’, 自变量’)
记号: 在表达微分方程时,用字母d表示求微分,d2、d3等。
表示求高阶微分。任何d后所跟的字母为因变量,自变量可以指。
定或由系统规则选定为确省。
例如,微分方程应表达为:d2y=0.
例1 求的通解。
解输入命令:dsolve('du=1+u^2','t')
ans =tan(t+c1)
例2 求微分方程的特解。
解输入命令: y=dsolve('d2y+4*dy+29*y=0','y(0)=0,dy(0)=15','x')
y =3*exp(-2*x)*sin(5*x) y =3e-2xsin(5x)
例3 求微分方程组的通解。
解输入命令 :
[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=******(x将x化简。
y=******(y)
z=******(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)
z =-c1-exp(4*t)*c1+c2*exp(4*t)-c2-exp(4*t)*c3)*exp(-2*t)
一)常微分方程数值解的定义。
在生产和科研中所处理的微分方程往往很复杂且大多得不出一般解。而在实际上对初值问题,一般是要求得到解在若干个点上满足规定精确度的近似值,或者得到一个满足精确度要求的便于计算的表达式。
因此,研究常微分方程的数值解法是十分必要的。
二)建立数值解法的一些途径。
1、用差商代替导数。
若步长h较小,则有。
故有公式:此即欧拉法。
2、使用数值积分。
对方程y’=f(x,y), 两边由xi到xi+1积分,并利用梯形公式,有:
故有公式:
实际应用时,与欧拉公式结合使用:
此即改进的欧拉法。
3、使用泰勒公式。
以此方法为基础,有龙格-库塔法、线性多步法等方法。
4、数值公式的精度。
当一个数值公式的截断误差可表示为o(hk+1)时(k为正整数,h为步长),称它是一个k阶公式。
k越大,则数值公式的精度越高。
欧拉法是一阶公式,改进的欧拉法是二阶公式。
龙格-库塔法有二阶公式和四阶公式。
线性多步法有四阶阿达姆斯外插公式和内插公式。
t,x]=solver(’f’,ts,x0,options)
t自变量值;x函数值;
solver ode23:组合的2/3阶龙格-库塔-芬尔格算法。
ode45:运用组合的4/5阶龙格-库塔-芬尔格算法。
f 由待解方程写成的m-文件名。
ts=[t0,tf],t0、tf为自变量的初值和终值。
x0函数的初值。
options 用于设定误差限(缺省时设定相对误差10-3, 绝对误差10-6),命令为:options=odeset(’reltol’,rt,’abstol’,at),
rt,at:分别为设定的相对误差和绝对误差。
注意:1、在解n个未知函数的方程组时,x0和x均为n维向量,m-文件中的待解方程组应以x的分量形式写成。
2、使用matlab软件求数值解时,高阶微分方程必须等价地变换成一阶微分方程组。
解: 令 y1=x,y2=y1’
则微分方程变为一阶微分方程组:
1、建立m-文件如下:
function dy=vdp1000(t,y)
dy=zeros(2,1);
dy(1)=y(2); dy(2)=1000*(1-y(1)^2)*y(2)-y(1);
2、取t0=0,tf=3000,输入命令:
[t,y]=ode15s('vdp1000',[0 3000],[2 0]);
plot(t,y(:,1),'
例5 解微分方程组。
解 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);
2、取t0=0,tf=12,输入命令:
[t,y]=ode45('rigid',[0 12],[0 1 1]);
plot(t,y(:,1),'t,y(:,2),'t,y(:,3),'
四、实例:慢跑者与狗。
一个慢跑者在平面上沿椭圆以恒定的速率v=1跑步,设椭圆方程为: x=10+20cost, y=20+5sint. 突然有一只狗攻击他。
这只狗从原点出发,以恒定速率w跑向慢跑者,狗的运动方向始终指向慢跑者。分别求出w=20,w=5时狗的运动轨迹。
1. 模型建立。
设时刻t慢跑者的坐标为(x(t),y(t)),狗的坐标为(x(t),y(t)).
则x=10+20cost, y=20+15sint, 狗从(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);
取t0=0,tf=10,建立主程序如下:
t0=0;tf=10;
[t,y]=ode45('eq3',[t0 tf],[0 0]);
t=0:0.1:2*pi;
x=10+20*cos(t);
y=20+15*sin(t);
plot(x,y,'-
hold on
plot(y(:,1),y(:,2),'
在不断修改tf的值,分别取tf=5, 2.5, 3.5,…,至3.15时,狗刚好追上慢跑者。
2) w=5时。
建立m-文件如下:
function dy=eq4(t,y)
dy=zeros(2,1);
dy(1)=5*(10+20*cos(t)-y(1))/sqrt
10+20*cos(t)-y(1))^2+(20+15*sin(t)-y(2))^2);
dy(2)=5*(20+15*sin(t)-y(2))/sqrt
10+20*cos(t)- y(1))^2+(20+15*sin(t)-y(2))^2);
取t0=0,tf=10,建立主程序如下:
t0=0;tf=10;
[t,y]=ode45('eq4',[t0 tf],[0 0]);
t=0:0.1:2*pi;
x=10+20*cos(t);
y=20+15*sin(t);
plot(x,y,'-
hold on
plot(y(:,1),y(:,2),'
在不断修改tf的值,分别取tf=20, 40, 80,…,可以看出,狗永远追不上慢跑者。
matlab
实验。四 调幅信号通过带通滤波器。一 实验目的。1 掌握如何使用matlab进行系统的时域和频域分析2 掌握如何使用matlab进行系统的稳定性分析。二 实验内容和要求1 实验内容。1 练习matlab7.0或以上版本。2 练习掌握matlab进行系统的时频域分析和稳定性分析2 实验要求 每位学生独...
matlab
第1章矩阵及其基本运算。matlab,即 矩阵实验室 它是以矩阵为基本运算单元。因此,本书从最基本的运算单元出发,介绍matlab的命令及其用法。1 实数值矩阵输入。matlab的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理的向量或矩阵。不管是任何矩阵 向量 我们可以直接按行方式...
matlab
matlab程序设计 数学软件i 授课人 艾斯卡尔。课时 周学时 2 2,共18周。授课班级 2008级应数班。授课地点 数学学院2 课程类型 本课程是新大重点课程。电子教案说明 电子教案以word为工作界面,采用notebook技术与matlab相连接,集教学与演示为一体 同时采用vba技术与外部...