常微分方程数值解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
dt (c x)2 (at y)2
由方程无法得到x(t), y(t)的解析解
需要用数值解法求解
0
Q(c,at)
P(x,y)
b
R(c,y )
cx
3
龙格—库塔方法的 MATLAB 实现
x(t) f (t, x), x(t0 ) x0 , x (x1, xn )T , f ( f1, fn )T
6
• clear,clf,shg • %Set the definied time • %ts=0:0.05:0.5; • %ts=0:0.1:1.6; • n=length(ts); • x0=[0 0]; • a=35;b=40;c=15; • opt1=odeset('RelTol',1e-6,'AbsTol',1e-9); • [t,x]=ode45(@jisi,ts,x0,opt1,a,b,c); • %a=35;b=40;c=15; • %opt1=odeset('RelTol',1e-6,'AbsTol',1e-9); • %[t,x]=ode45(@jisi,ts,x0,opt1,a,b,c); • %exact solution x1=c • y1=a*t; • %output t,x(t),y(t) and draw x(t),y(t) • [t,x,y1] • plot(t,x),grid,gtext('x(t)','FontSize',16), • gtext('y(t)','FontSize',16),pause
常微分方程数值解
1
实例1 海上缉私
海防某部缉私艇上的雷达发现正东方向c海里处有一艘走私船 正以速度a向正北方向行驶,缉私艇立即以最大速度b(>a)前往 拦截。如果用雷达进行跟踪时,可保持缉私艇的速度方向始终 指向走私船。
• 建立任意时刻缉私艇位置及 航线的数学模型,并求解; • 求出缉私艇追上走私船的时间。
b(at y) (c x)2 (at y)2
x(0) 0, y(0) 0
设: 船速a=20 (海里/小时) 艇速b=40 (海里/小时) 距离c=15 (海里)
(x(t),y(t))
a
b
0
cx
求: 缉私艇的位置x(t),y(t) 缉私艇的航线y(x)
jisi.m, seajisi.m
5
%Creat the function for jisi %Let x(1)=x, x(2)=y function dx=jisi(t,x,a,b,c) s=sqrt((c-x(1))^2+(a*t-x(2))^2); %dx=[b*(c-x(1))/s;b*(a*t-x(2))/s]; dx=[1;1]; dx(1)=b*(c-x(1))/s; dx(2)=b*(a*t-x(2))/s;
9
实例1
模型的数值解
海上缉私(续)
t
x(t)
y(t) y1(t)
0
0
0
0
opt=odeset('RelTol',1e-6,
北
b
a
艇
c
船
2
实例1 海上缉私
建立坐标系如图: t=0 艇在(0, 0), 船在(c, 0); 船速a, 艇速b 时刻 t 艇位于P(x, y), 船到达 Q(c, at)
模型: dx bcos, dy bsin
dt
dt
dx
dt
b(c x) (c x)2 (at y)2
y
dy
b(at y)
• %draw y(x): the position of tatch jisi • plot(x(:,1),x(:,2),'r*'),grid • xlabel('x','FontSize',16),ylabel('y','FontSize',16)
7
实例1 海上缉私(续) 模型的数值解
a=20, b=40, c=15
t=0.5时缉私艇追上走私船 0.45 14.7451
0.50 15.0046
y(t) 0 0.0698 0.2924 0.6906 1.2899 2.1178 3.2005 4.5552 6.1773 8.0273 9.9979
y1(t) 0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
t
x(t)
走私船的位置 x1(t)= c=15 y1(t)=at=20t
缉私艇的航线y(x)
10 y
0
0
0.05 1.9984
0.10 3.9854
0.15 5.9445
0.20 7.8515
8
0.25 9.6705
6
0.30 11.3496
4
2
x
0
0
5
10
15
20
0.35 12.8170 0.40 13.9806
0.4 12.5384 8.2755
0.5 13.7551 12.0830
1.2 14.9986 40.0164
1.3 14.9996 44.0165
1.4 15.0117 48.0183
1.5 15.0023 52.0146
1.6 14.9866 55.9486
y1(t) 0 3.5 7.0
10.5 14.0 17.5 42.0 45.5 49.0 52.5 56.0
10.0
8
实例1 海上缉私(续)
设b,c不变,a变大 为30, 35, 接近40,
观察解的变化 :
a=35, b=40, c=15
t=? 缉私艇追上走私船
累积误差较大 提高精度!
模型的数值解
t
x(t)
y(t)
0
0
0
0.1 3.9561 0.5058
0.2 7.5928 2.1308
0.3 10.5240 4.8283
[t,x]=ode23(@f,ts,x0,opt) 3级2阶龙格-库塔公式
[t,x]=ode45(@f,ts,x0,opt) 5级4阶龙格-库塔公式
f是待解方程写成 的函数m文件:
function dx=f(t,x) dx=[f1; f2;; fn];
ts = [t0,t1, …,tf] 输出指定时刻 t0,t1, …,tf 的函数值
ts = t0:k:tf
输出 [t0,tf] 内等分点处的函数值
x0为函数初值(n维) 输出t=ts, x为相应函数值(n维)
opt为选项,缺省时精度为:相对误差10-3, 绝对误差10-6, 计算步长按精度要求自动调整
4
实例1 海上缉私(续)
模型的数值解
ydxdt源自dydtb(c x) (c x)2 (at y)2