问题描述,一个10*4*3的房间只配备300Watt的照明功率,要如何挂载灯泡使得灯光可以均匀的散布在房间各个角落,假定只是空房间,灯泡的使用个数不限,但功率的总和不超过300Watt。衡量亮度的指标是Watt/㎡
使用一个灯,要照亮各个角落当然要挂载天花板的最中间,也就是坐标(5,2)
如图1
可看出一个300Watt的灯泡其灯光分布情况很不均匀,差距很大,所以不是最佳的方案
使用两个灯泡,当然是要放在y=2这条线上了,但最佳坐标需要算一下
其最暗的角落(0,0)和最亮的地方(5,2)随这灯泡移动的轨迹如下
可见在1.06和8.9的地方有交叉,则最优的点就是(1.06,2)和(8.9,2)。
三个灯泡的时候
曲线:
无最优解
附上代码:
syms x y; light1=300/(4*pi*((x-5)^2+(y-2)^2+3^2)); ezcontourf(light1,[0 10 0 4]); colormap(gray); axis equal tight; [x,y]=meshgrid(0:0.1:10,0:0.1:4); light2=inline('150/(4*pi*((x-d)^2+(y-2)^2+3^2))','x','y','d'); light2=vectorize(light2); figure; contourf(light2(x,y,2)+light2(x,y,8),50); colormap(gray); axis equal tight; intensity_corner=[]; for d=0:0.1:10 intensity_corner=[intensity_corner light2(0,0,d)+light2(0,0,10-d)]; end intensity_center=[]; for d=0:0.1:10 intensity_center=[intensity_center light2(5,2,d)+light2(5,2,10-d)]; end figure; plot(0:0.1:10,intensity_corner); hold on; plot(0:0.1:10,intensity_center,'r-'); optimal=solve('150/(4*pi*((0-d)^2+(0-2)^2+3^2))+150/(4*pi*((0-(10-d))^2+(0-2)^2+3^2))=150/(4*pi*((5-d)^2+(2-2)^2+3^2))+150/(4*pi*((5-(10-d))^2+(2-2)^2+3^2))','d'); optimal=double(optimal); optimal_intensity=light2(0,0,optimal(1))+light2(0,0,10-optimal(1)); light3=inline('100/(4*pi*((x-d)^2+(y-2)^2+3^2))','x','y','d'); light3=vectorize(light3); figure; contourf(light3(x,y,1)+light3(x,y,9)+light3(x,y,5),50); colormap(gray); axis equal tight; test_intensity_corner=light3(0,0,1)+light3(0,0,9)+light3(0,0,5); test_intensity_center=light3(5,2,1)+light3(5,2,9)+light3(5,2,5); intensity_corner3=[]; for d=0:0.1:10 intensity_corner3=[intensity_corner3 light3(0,0,d)+light3(0,0,10-d)+light3(0,0,5)]; end intensity_center3=[]; for d=0:0.1:10 intensity_center3=[intensity_center3 light3(5,2,d)+light3(5,2,10-d)+light3(5,2,5)]; end figure; plot(0:0.1:10,intensity_corner3); hold on; plot(0:0.1:10,intensity_center3,'r-');