mathe
发表于 2020-10-30 20:05:52
min_err()={1E-14}
count_num(a,t,n,s)=
{
local(h,d,fc,tc,tmp);
tc=0;
h=a*s*cos(t);
d=a/sin(t);
fc=floor((h+min_err())/d);
for(u=1,fc,
tmp=floor(((h-u*d)/cos(t)+min_err())/a);
tc+=tmp
);
h=1-h;
fc=floor((h-min_err())/d);
for(u=1,fc,
tmp=floor(((1-h+(u-1)*d)/cos(t)+min_err())/a);
tc+=tmp;
);
tmp=floor(((1-h+fc*d)/cos(t)+min_err())/a);
if(tmp==n,tmp=n-1);
tc+=tmp;
h=a*s*sin(t)+(fc+1)*a/cos(t);
h=sqrt(2)-h;
tmp=floor((h+min_err())*cos(t)/a);
tc+=n*tmp;
h=1-((tmp+1)*a/cos(t)-h)/tan(t);
fc = floor((h+min_err())/d);
tmp = floor((h/cos(t)+min_err())/a);
if(tmp==n, tmp=n-1); tc+=tmp;
for(u=1,fc,
tmp= floor(((h-u*d)/cos(t)+min_err())/a);
tc+=tmp
);
tc
}
try_search(u,w,n,ts,te)=
{
local(t,a,tc);
t=solve(x=ts,te,(u*sin(x)+w/cos(x))/(sin(x)+n*cos(x))-tan(x)-sqrt(2));
a=1.0/(sin(t)+n*cos(t));
print("t="t",a="a);
for(s=1,floor(u/2),
tc = count_num(a,t,n,s);
print("u="u",w="w",n="n",s="s",count="tc)
)
}
mathe
发表于 2020-10-30 20:11:55
try_search(6,11,8,.2,.8)
t=0.39482339945443347270739258499661618652,a=0.12871402319575734501463874723382066875
u=6,w=11,n=8,s=1,count=72
u=6,w=11,n=8,s=2,count=72
u=6,w=11,n=8,s=3,count=72
找到72个正方形时的结果略好于$\frac{\sqrt{2}}{11}$了。
mathe
发表于 2020-10-30 20:50:34
71个正方形这种方案更好,角度0.26142805582838020665873588788070167068,边长0.12992672712043312879102445103070037432
try_search2(5,9,11,.2,.3)
t=0.26142805582838020665873588788070167067,a=0.12992672712043312879102445103070037432
u=5,w=9,n=11,s=1,count=71
u=5,w=9,n=11,s=2,count=71
try_search2(4,9,11,.1,.3)
t=0.19748177157215287861048401173408740284,a=0.12877087834074043983547576720206709441
u=4,w=9,n=11,s=1,count=73
u=4,w=9,n=11,s=2,count=73
而且此方案还略好于楼上的72的情况。
mathe
发表于 2020-10-30 22:39:18
楼上方案中可以将左上角小正方形摆正,好像这个小正方形和下面部分图形略有空隙,这是否表明这种模式下还可以略微增大呢?
王守恩
发表于 2020-10-31 07:52:32
本帖最后由 王守恩 于 2020-10-31 09:24 编辑
dlpg070 发表于 2020-10-30 15:52
在如下条件 ( 正放,1个立放,2个立放) 求解条件最优解, n
1, 26:\(\frac{\sqrt{2}/1+1/2}{\sqrt{2}+6/1+4/2}\)
2, 56:\(\frac{\sqrt{2}/2+1/1}{\sqrt{2}+9/2+6/1}\)
3,119:\(\frac{\sqrt{2}/1+1/2}{\sqrt{2}+13/1+9/2}\)
4,178:\(\frac{\sqrt{2}/2+1/1}{\sqrt{2}+16/2+11/1}\)
5,282:\(\frac{\sqrt{2}/1+1/2}{\sqrt{2}+20/1+14/2}\)
6,370:\(\frac{\sqrt{2}/1+1/2}{\sqrt{2}+23/1+16/2}\)
7,470:\(\frac{\sqrt{2}/2+1/1}{\sqrt{2}+26/2+18/1}\)
8,632:\(\frac{\sqrt{2}/1+1/2}{\sqrt{2}+30/1+21/2}\)
9,761:\(\frac{\sqrt{2}/2+1/1}{\sqrt{2}+33/2+23/1}\)
10,964:\(\frac{\sqrt{2}/1+1/2}{\sqrt{2}+37/1+26/2}\)
11,1122:\(\frac{\sqrt{2}/2+1/1}{\sqrt{2}+40/2+28/1}\)
说明,+2这样写,为的是+1也是这样写的,譬如
55:\(\frac{\sqrt{2}/1+1/1}{\sqrt{2}+6/1+9/1}=\frac{\sqrt{2}+1}{\sqrt{2}+15}\)
当然,+3也可以这样写。还有,在这里,我们是把正方形的4个角都塞进去的,
如果只是把正方形的3个角塞进去的话,看8楼,可以得到另外的算式。
解题是一个互动的过程,要在意环节中的附产品(跑题了)。
mathe
发表于 2020-10-31 07:52:55
47#的一系列图中,可以发现边缘上有很多点,有些落在矩形内部,有些落在外部,而且很难判断。
另外,有些如果刚刚落在外部的,应该会对结果带来很大的损失,这是要求我们前面计算过程中,总是要求左右是撑满的。但是实际上,如果有时上下边界上有多个小正方形顶点,即使左右边界稍微有点没有撑满,结果反而可能更好。
比如链接中第一个图。我们要求左右方向每条带状至少能够放下6个正方形,对应方程
\((\sin(\theta)+6\cos(\theta))a\le 1\)
或者可以写成\(\frac1a \ge \sin(\theta)+6\cos(\theta)\)
另外上边界两个点,下边界也两个点。
我们要求上左下左都在矩形内部,它们之间有8个平行带状,上面斜线至少两段,下面斜线至少4段,共6段
对应不等式
\((6\sin(\theta)+\frac{8}{\cos(\theta)})a-\tan(\theta) \le \sqrt{2}\)
或者写成
\(\frac1a\ge \frac{6\sin(\theta)+\frac{8}{\cos(\theta)}}{\sqrt{2}+\tan(\theta)}=\frac{6\sin(\theta)cos(\theta)+8}{\sqrt{2}\cos(\theta)+\sin(\theta)}\)
同样上左下右得出不等式
\(\frac1a\ge \frac{3\sin(\theta)cos(\theta)+9}{\sqrt{2}\cos(\theta)+\sin(\theta)}\)
上右下左得出
\(\frac1a\ge \frac{9\sin(\theta)cos(\theta)+7}{\sqrt{2}\cos(\theta)+\sin(\theta)}\)
上右下右得出
\(\frac1a\ge \frac{6\sin(\theta)cos(\theta)+8}{\sqrt{2}\cos(\theta)+\sin(\theta)}\)
去除第一个不等式约束对应\(\sin(\theta)cos(\theta)=\frac13\),即\(\theta=0.36486382811348318172739832990666034770, a=0.16773299441461392480561478264497668583\)
这种情况,上下边界各两个点,但是每条平行带状除了6个正方形会稍微有空闲。
另外一方面,我们可以要求第一个不等式变成等式,于是这时,下面上个不等式就只能有一个取等式了,而且会有部分不等式不满足。
比如在\(\frac1a = \sin(\theta)+6\cos(\theta)\)的前提下,要求
\(\frac1a=\frac{6\sin(\theta)cos(\theta)+8}{\sqrt{2}\cos(\theta)+\sin(\theta)}\)
得出\(\theta=0.36578842428183033864900504458651989100,a=0.16776446336353817278118805890977948319\),这时\(\frac1a\ge \frac{9\sin(\theta)cos(\theta)+7}{\sqrt{2}\cos(\theta)+\sin(\theta)}\)不满足,结果只有41个正方形,这个是现在已知的41个正方形的最优解,打破了以前的记录
如果要求\(\frac1a= \frac{9\sin(\theta)cos(\theta)+7}{\sqrt{2}\cos(\theta)+\sin(\theta)}\),得出
\(\theta= 0.36545410693014515444270921536988309674, a=0.16775306684206013529595703204783519261\),这时上面的不等式都成立,所以这种方案也可以放下42个正方形,但是上下边界实际上各自只有一个小正方形顶点。另外两个点刚刚落在了矩形内部。
如果要求\(\frac1a= \frac{3\sin(\theta)cos(\theta)+9}{\sqrt{2}\cos(\theta)+\sin(\theta)}\),得出
\(\theta=0.36698528191044942735481289854653257244,a=0.16780542944809610880252621207120076552\),这时上面有三条不等式不成立,所以这种情况只能放下40个正方形,同样上下边界上各自只有一个小正方形顶点,另外两个点刚刚落在矩形外部。
mathe
发表于 2020-10-31 08:50:58
同样查看上面链接中最后一个图,我们看看,能否要求上面的边多添加一个正方形顶点
于是基本条件\(\frac1a\ge \sin(\theta)+7\cos(\theta)\)
先前条件\(\frac1a\ge \frac{9\cos(\theta)\sin(\theta)+9}{\sqrt{2}\cos(\theta)+\sin(\theta)}\)
追加条件\(\frac1a\ge \frac{5\cos(\theta)\sin(\theta)+10}{\sqrt{2}\cos(\theta)+\sin(\theta)}\)
后面两个条件要求\(4\cos(\theta)\sin(\theta)=1\),这时对应的我们会发现第一个基本不等式不满足,所以还是不行
如果不使用上面的第二个条件,那么就是u=6,w=10,n=7的情况,应该已经分析过了,而结果不是最优所以没有被列出。
mathe
发表于 2020-10-31 11:18:51
98~102的更优解
uwnatcs
61190.1254440.6049752
71190.1223120.555055793
81190.1196410.505576834
91190.1174250.457521882
101190.1156390.411914915
111190.1142410.369618954
121190.1131730.331219965
131190.1123770.296985996
141190.1117930.2668881017
41290.1249440.597432762
51290.1215650.541967802
61290.1186450.484926851
71290.1162170.42752902
81290.1142930.371344944
91290.1128540.31824983
101290.1118480.2700021005
111290.1111960.227961025
61390.1120690.281838993
51390.1144040.374957931
王守恩
发表于 2020-10-31 16:42:59
本帖最后由 王守恩 于 2020-10-31 16:48 编辑
过A4纸的对角线\(\sqrt{3}\)作平行线,在平行线上裁剪正方形,这些“最优解”会超越45楼的”平凡解“吗?
mathe
发表于 2020-10-31 17:49:04
试着让计算机计算了一下,不过数数目的代码应该还有些bug,所以部分数据可能不精确,但是的确找出n=26时更好的结果,并且到目前为止所有+2的都不是最优结果。+1的第一个被否决的是41.
页:
1
2
3
4
5
[6]
7
8
9
10
11
12
13
14
15