实验十二:微分方程模型
练习一
1.用MATLAB软件求下列微分方程的通解或者初值解:
(1)
clc;clear;
syms y(x)
y=x*diff(y)+2*y==1-1/x;
dsolve(y)
ans =
(x - 2)/(2*x) + C1/x^2
(2)
clc;clear;
syms f(x)
h=diff(f)+f*tan(x)==cos(x)^2;
y=dsolve(h)
y =sin(2*x)/2 + C1*cos(x)
(3)
clc;clear;
syms y(x)
h=diff(y,2)==sin(2*x)-y;
dy=diff(y);
y=dsolve(h,y(0)==0,dy(0)==1)
y =(5*sin(x))/3 - sin(2*x)/3
(4)
clc;clear;
syms y(x)
h=x*diff(y)-2*y==x^3*tan(x)*sec(x);
y=dsolve(h,y(pi/3)==2)
y =x^2/cos(x) - (x^2*(2*pi^2 - 18))/pi^2
2.高为16m,半径为5m的正圆柱形容器装满水,在该容器的侧面底部装有一个半径为0.02m的圆形排水孔,已知物理学中的托里拆利(Torriceli)定理:从小孔流出液体的流速正比于水面高度的平方根.完成下面的实验任务:
(1)容器内水面高度与时间t的函数关系是什么?多长时间容器内的水可以完全排空?
clc;clear;
syms h(t) k
m=-25*pi*diff(h)==k*sqrt(h)*pi*4*10^(-4);
h=dsolve(m,h(0)==16)
t=solve(h(2)==0,t)
h =
((k*t)/125000 + 4)^2
((k*t)/125000 - 4)^2
ans =
500000/k
500000/k
(2)画出水面高度与时间的关系曲线.
经过查找资料我们得知,常数k=4.427188724235731
clc;clear;
syms h(t) k
m=-25*pi*diff(h)==k*sqrt(h)*pi*4*10^(-4);
h=dsolve(m,h(0)==16)
k=4.427188724235731;
f=eval(h(2));
ezplot(f,[0,99999]);
练习二
1.利用示例2中算得的数据,编程分别计算初值问题(12-11)的两种数值解与解析解在结点x=pi:0.1:2*pi处的距离和,看看与理论分析是否一致.
clc;clear;
format default
syms y(x)
m=diff(y)==3/x*y+x^3*(exp(x)+cos(x))-2*x;
j=dsolve(m,y(pi)==(exp(pi)+2/pi)*pi^3);
jj=matlabFunction(j);
x=pi:0.1:2*pi;
sum(jj(x))%解析解
y1=(exp(pi)+2/pi)*pi^3;
f=@(x,y)3/x*y+x^3*(exp(x)+cos(x))-2*x;
jj2=[y1];
for x=pi:0.1:(2*pi-0.1)
y1=y1+0.1*f(x,y1);
jj2=[jj2,y1];
end
sum(jj2)%数值解1
y1=(exp(pi)+2/pi)*pi^3;jj3=[y1];
for x=pi:0.1:2*pi-0.1
jzj=y1+0.1*f(x,y1);
yy=y1+0.1/2*(f(x,y1)+f(x+0.1,jzj));
jj3=[jj3,yy];
y1=yy;
end
sum(jj3) %数值解2
ans =
8.7052e+05
ans =
7.7816e+05
ans =
8.6997e+05
与理论方法相比,数值方法得到的解还是和理论有一定的差距,但是欧拉两步法比欧拉法误差小得多。
2.分别用欧拉方法、欧拉两步法和改进的欧拉方法求下面初值问题的数值解.
clc;clear;f=@(x,y)(x-sin(y))/cos(y);
%欧拉方法(显式)
y0=pi/4;y1=[y0];
for x=0:0.01:3/2-0.01
y0=y0+0.01*f(x,y0);
y1=[y1,y0];
end
plot(0:0.01:3/2,y1,'.');
%欧拉两步法
y0=pi/4;y2=[y0,y1(2)];
x=0:0.01:3/2-0.01;
for i=1:length(x)-1
y=y2(i)+2*0.01*f(x(i+1),y2(i+1));
y2=[y2,y];
end
hold on
plot(0:0.01:3/2,y2,'.');
%改进的欧拉方法
y1=pi/4;y3=[y1];x=0:0.01:3/2;
for i=1:length(x)-1
ycz=y3(i)+0.01*f(x(i),y3(i));
y=y3(i)+0.01/2*(f(x(i),y3(i))+f(x(i+1),ycz));
y3=[y3,y];
end
hold on
plot(0:0.01:3/2,y3,'.');
legend('欧拉方法(显示)','欧拉两步法','改进的欧拉方法');
3.求下面方程的数值解,并画出数值解曲线
首先,我们要把原式进行换元使其变为一阶微分方程:
令,则原式化为,然后在一步步带回去即可。
clear;clc;%欧拉两步法
f=@(x,t)2*x*t/(1+x^2);
y1=3;y2=y1+0.01*0;
j1=[y1,y2];x=0:0.01:2;
for i=1:length(x)-2
y=j1(i)+2*0.01*f(x(i+1),j1(i+1));
j1=[j1,y];
end
y11=1;y22=y11+0.01*j1(1);
j11=[y11,y22];x=0:0.01:2;
for i=1:length(x)-2
y=j11(i)+2*0.01*j1(i+1);
j11=[j11,y];
end
j11
plot(0:0.01:2,j11);
j11 =
列 1 至 10
1.0000 1.0300 1.0600 1.0900 1.1200 1.1501 1.1802 1.2103 1.2405 1.2707
列 11 至 20
1.3010 1.3313 1.3617 1.3922 1.4227 1.4534 1.4840 1.5149 1.5458 1.5768
列 21 至 30
1.6079 1.6392 1.6706 1.7021 1.7337 1.7656 1.7975 1.8297 1.8618 1.8944
列 31 至 40
1.9269 1.9598 1.9926 2.0259 2.0592 2.0928 2.1265 2.1606 2.1947 2.2293
列 41 至 50
2.2638 2.2989 2.3339 2.3695 2.4050 2.4411 2.4772 2.5138 2.5504 2.5876
列 51 至 60
2.6248 2.6626 2.7004 2.7388 2.7772 2.8163 2.8554 2.8951 2.9349 2.9753
列 61 至 70
3.0158 3.0569 3.0981 3.1400 3.1819 3.2245 3.2672 3.3107 3.3542 3.3984
列 71 至 80
3.4427 3.4878 3.5330 3.5789 3.6249 3.6718 3.7187 3.7664 3.8142 3.8629
列 81 至 90
3.9117 3.9613 4.0110 4.0617 4.1124 4.1640 4.2157 4.2684 4.3211 4.3748
列 91 至 100
4.4286 4.4834 4.5383 4.5942 4.6502 4.7072 4.7643 4.8225 4.8808 4.9401
列 101 至 110
4.9996 5.0601 5.1208 5.1825 5.2444 5.3074 5.3706 5.4348 5.4993 5.5648
列 111 至 120
5.6305 5.6974 5.7645 5.8327 5.9011 5.9706 6.0404 6.1114 6.1825 6.2549
列 121 至 130
6.3275 6.4013 6.4753 6.5506 6.6261 6.7028 6.7798 6.8581 6.9366 7.0164
列 131 至 140
7.0964 7.1778 7.2594 7.3423 7.4255 7.5101 7.5948 7.6810 7.7675 7.8553
列 141 至 150
7.9434 8.0329 8.1226 8.2138 8.3053 8.3983 8.4915 8.5861 8.6811 8.7776
列 151 至 160
8.8743 8.9725 9.0711 9.1712 9.2715 9.3735 9.4757 9.5795 9.6836 9.7892
列 161 至 170
9.8952 10.0028 10.1108 10.2203 10.3302 10.4416 10.5535 10.6670 10.7808 10.8963
列 171 至 180
11.0122 11.1297 11.2476 11.3672 11.4872 11.6088 11.7309 11.8547 11.9789 12.1048
列 181 至 190
12.2311 12.3592 12.4877 12.6179 12.7486 12.8810 13.0139 13.1486 13.2837 13.4206
列 191 至 200
13.5580 13.6972 13.8369 13.9784 14.1204 14.2642 14.4085 14.5547 14.7013 14.8499
列 201
14.9989
推荐下一篇文章:
本文由作者自创,由于时间原因,难免出现些许错误,还请大家多多指正。创作不易,请大家多多支持。