一、 问题
路灯照明问题。在一条20m宽的道路两侧,分别安装了一只2kw和一只3kw的路灯,它们离地面的高度分别为5m和6m。在漆黑的夜晚,当两只路灯开启时,两只路灯连线的路面上最暗的点和最亮的点在哪里?如果3kw的路灯的高度可以在3m到9m之间变化,如何路面上最暗点的亮度最大?如果两只路灯的高度均可以在3m到9m之间变化,结果又如何?
二、 数学模型
已知P1为2kw的路灯,P2为3kw的路灯,以地面为X轴,路灯P1为Y轴,建立平面直角坐标系。其中,P1、P2高度分别为h1、h2,水平距离为S=20m。设有一点Q(x,0),P1、P2分别与其相距R1、R2。如下图示。
经查阅资料得,光照强度公式为:,设光照强度k=1。则,两个路灯在Q点的光照强度分别为:
其中:
R12=h12+x2 R22=h22+(S-x)2
则Q点的光照强度Ix=I1+I2
分别按照题目中的不同要求,带入不同数值,求导,令导数为零,求得极值,进一步分析对比,求得最值。
三、 算法与编程
1. 当h1=5m,h2=6m时:
symptoms x y
x=0:0.1:20;
y=10./sqrt((25.+x.^2)^3)+18./sqrt((36.+(20-x).^2).^3);
plot(x,y)
grid on;
在图中的0-20米范围内可得到路灯在路面照明的最亮点和最暗点
① 对Ix求导:
syms x
f=10./sqrt((25.+x.^2)^3)+18./sqrt((36.+(20-x).^2).^3)
② 运用MATLAB求出极值点
s=solve('(-30*x)/((25+x^2)^(5/2))+(54*(20-x))/((36+(20-x)^2)^(5/2))');
s1=vpa(s,8)
s1 =
.28489970e-1
8.5383043+11.615790*i
19.976696
9.3382991
8.5383043-11.615790*i
③根据实际要求,x应为正实数,选择19.9767、9.3383、0.02849三个数值,通过MATLAB计算出相应的I值:
syms x
I=10/(25+x^2)^(3/2)+18/(36+(20-x)^2)^(3/2);
subs(I,x,19.9767)
subs(I,x,9.3383)
subs(I,x,0.02849)
ans =
0.0845
ans =
0.0182
ans =
0.820
综上,在19.3米时有最亮点;在9.33米时有最暗点
2.当h1=5m,3m<h2<9m时:
① 对h2求偏导,并令其为0:
②运用MATLAB求出极值点
solve('3/((h^2+(20-x)^2)^(3/2))-3*(3*h^2)/((h^2+(20-x)^2)^(5/2))=0')
ans =
20+2^(1/2)*h
20-2^(1/2)*h
③ 对x求偏导,并令其为0:
④ 通过MATLAB,将步骤②中计算出的关于h2的表达式带入上式,并求出h2的值;
solve('-30*(20-2^(1/2)*h)/((25+(20-2^(1/2)*h)^2)^(5/2))+9*h*(20-(20-2^(1/2)*h))/((h^2+(20-(20-2^(1/2)*h))^2)^(5/2))=0')
ans =
7.4223928896768612557104509932965
⑤通过MATLAB,利用已求得的h2,计算得到x,并进一步计算得到I
h=7.42239;
x=20-2^(1/2)*h
I=10/((25+x^2)^(3/2))+(3*h)/((h^2+(20-x)^2)^(3/2))
x =
9.5032
I =
0.0186
3.当h1,h2均在3m-9m之间时:
①同上,通过MATLAB求解下面的方程组:
solve('p1/(h1^2+x^2)^(3/2)-3*p1*h1^2/(h1^2+x^2)^(5/2)')
solve('3/((h^2+(20-x)^2)^(3/2))-3*(3*h^2)/((h^2+(20-x)^2)^(5/2))=0')
ans =
2^(1/2)*h1
-2^(1/2)*h1
ans =
20+2^(1/2)*h
20-2^(1/2)*h
②根据实际,选择x=h1,x=20-h2,带入第三个式中,得:
③利用MATLAB,求得x值:
s=solve('1/((20-x)^3)=2/(3*(x^3))');
s1=vpa(s,6)
s1 =
9.32530
7.33738+17.0093*i
7.33738-17.0093*i
④ 按照实际需求,选择x=9.32525
⑤ 带入求解I,并比较得到亮度最大的最暗点
h1=(1/sqrt(2))*9.32525
h2=(1/sqrt(2))*(20-9.32525)
h1 =
6.5939
h2 =
7.5482
四、 计算结果
1.当h1=5m,h2=6m时:
x=9.33m时,为最暗点,I=0.01824393;x=19.97m时,为最亮点,I=0.08447655。
2.当h1=5m,3m<h2<9m时:
x=9.5032,h2=7.42239时,路面上最暗点的亮度最大,I=0.0186w。
3.当h1,h2均在3m-9m之间时:
h1=6.5939,h2=7.5482,x=9.32525时,路面上最暗点的亮度最大。
2 火箭问题
小型火箭初始重量为1400kg,其中包括1080kg燃料。火箭竖直向上发射时燃料的燃烧率为18kg/s,由此产生32 000N的推力,火箭引擎在燃料用尽时关闭。设火箭上升时的空气阻力正比于速度的平方,比例系数为0.4kg/m。求引擎关闭瞬间火箭的高度、速度、加速度,及火箭到达最高点时的高度和加速度,并画出高度、速度、加速度随时间变化的图形。
解析:火箭上总共携带燃料1080kg,燃料燃烧率为18kg/s,火箭上升时间t=60s时,燃料全部烧尽。阻力正比于速度的平方,比例系数0.4kg/m,可知阻力表达式为f=0.4v2。由于燃料燃烧,火箭的质量是时间的函数,m(t)=11400-18t
火箭升空速度和加速度变化可分为两个阶段;
第一阶段:燃料燃烧产生的推力恒定,随着燃料的不断消耗,火箭的质量m降低,可得出火箭的速度v以及加速度a是变化的,由牛顿第二定律,根据速度与时间关系,建立微分方程组。
第二阶段,燃料耗尽,此时火箭的质量m恒定。引擎关闭的瞬间,火箭剩余质量:m=1400-1080=320kg,由于火箭运动受到阻力的作用,火箭先加速,后减速。火箭将达到最高速度。
五、 算法与编程
由题目已知条件可设置变量:加速度a 质量m 时间t 速度v 合力f
求出有关于v的微分方程
第一阶段
clear
syms a m t v f
m=1400-18*t
f=320##-0.4*v^2-9.8*m
a=f/m
m =
1400-18*t
f =
18280+882/5*t-2/5*v^2
a =
(18280+882/5*t-2/5*v^2)/(1400-18*t)
odefun=@(t,v)(18280+882/5*t-2/5*v^2)/(1400-18*t);
s = cumsum(v).*0.1;
subplot(2,2,1)
plot(t,s);
grid on
xlabel('时间');ylabel('高度')
title('1.h/t')
[t,v]=ode45(odefun,[0:0.1:60],[0]);
subplot(2,2,2)
plot(t,v);
grid on
xlabel('时间');ylabel('速度')
title('2.v/t')
a=diff(v)/0.1;
t2 = [0:0.1:59.9];
subplot(2,2,3)
plot(t2,a);
grid on
xlabel('时间');ylabel('加速度')
title('3.a/t')
第二阶段
火箭由重力作用上升,燃料耗尽后火箭质量为320kg。由牛顿第二定律
可再次列出微分方程,t>60s.
记y =(h, v)T
function dy = Rocket(t,y)
dy=[v;-9.8-0.4*v.^2/320];
ts=0:60
x0=[0,0];
[t,x]=ode45(@Rocket,ts,x0);
[t,x]
for n=1:2000
T=100-0.01*n;
tss=60:0.02:T;
y0=[x(61,1),x(61,2)];
option=odeset('reltol',1e-3,'abstol',1e-6);
[t2,y]=ode45(@Rocket,tss,y0,option);
[t2,y];
if y(:,2)>=0
break
end
end
plot(t,x(:,1),'b',t2,y(:,1),'r'),grid,
title('图1.高度-时间')
xlabel('t/s')
ylabel('h/m')
pause
plot(t,x(:,2),'b',t2,y(:,2),'r'),grid,
title('图2.速度-时间')
xlabel('t/s')
ylabel('v/(m/s)')
pause
a=(320##-0.4*x(:,2).^2)./(1400-18*t)-9.8;
a2=-9.8-0.4*y(:,2).^2/320;
plot(t,a,'b',t2,a2,'r'),grid,
title('图3.加速度-时间')
xlabel('t/s')
ylabel('a/(m/s^2)')
六、 计算结果
由MATLAB求解得:
引擎关闭瞬间引擎关闭瞬间:
火箭的高度为h=12190m,速度v=267.26m/s,加速度a=0.91701m/s2。
引擎关闭后:
当t=71.31s 时,火箭上升到最大高度h= 13115m,此时火箭的速度v=0.019874,几乎可认为已经停止,加速度a=-9.8m/s2。
第二篇:数学建模实验报告之曲线插值
东南大学《数学实验》报告
学号 09008226 姓名毕斌 成绩
实验内容:曲线插值
一 实验目的
常见插值函数的求解及应用
二 预备知识
(1) 熟悉一般的曲线插值的方法
(2) 熟悉“\”、polyfit、polyval、interp1、spline、cscvn等Matlab命令
三 实验内容与要求
(1)已知某平原地区的一条公路经过如下坐标所表示的点,请用样条插值绘出这条公路(不考虑公路的宽度)。
完整代码:
function interpolation
%路线x轴上单调递增到最大值
road_x1 = [ 0, 30, 50, 70, 80, 90, 120, 148, 170, 180, 202, 212, 230, 248, 268, 271, 280, 290, 300, 312, 320, 340, 360, 372, 382, 390, 416, 430, 478];
road_y1 = [80, 64, 47, 42, 48, 66, 80, 120, 121, 138, 160, 182, 200, 208, 212, 210, 200, 196, 188, 186, 200, 184, 188, 200, 202, 240, 246, 280, 296];
%插值0到478
x1 = 0:478;
y1 = interp1(road_x1,road_y1,x1,'spline');
length1 = 0;
%计算这段路程长度
for i = 0:477
y_i = abs(interp1(road_x1,road_y1,i+1)-interp1(road_x1,road_y1,i));
length1 = length1+sqrt(1+(y_i)^2);
end
%做图并保持到下一个,一起绘制图形
plot(road_x1,road_y1,'.',x1,y1);
hold on;
%x轴上单调递减,第二段
road_x2 = [478, 440, 420, 380, 360, 340, 320, 314, 280, 240, 200];
road_y2 = [296, 308, 334, 328, 334, 346, 356, 360, 392, 390, 400];
%插值200到478
x2 = 200:478;
y2 = interp1(road_x2,road_y2,x2,'spline');
%计算该段路程长度
length2 = 0;
for j = 200:477
y_j = abs(interp1(road_x2,road_y2,j+1)-interp1(road_x2,road_y2,j));
length2 = length2+sqrt(1+(y_j)^2);
end
%绘图
plot(road_x2,road_y2,'.',x2,y2);
%plot(road_x2,road_y2)
hold off;
%输出路线总长度
disp('路线总长度:');
length = length1+length2
结果输出:
路线总长度:
length =
967.4565
绘制图形: