MATLAB专题

发布 2023-05-19 18:27:28 阅读 8641

求微分方程(组)的解析解命令:

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技术与外部...