找回密码
 欢迎注册
查看: 42203|回复: 26

[提问] 立方体中的最大内接正方形

[复制链接]
发表于 2018-9-3 13:35:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
设d(m,n)表示在单位n维方(n为1、2、3时,分别对应线段、正方形、立方体)中的最大的m维方的大小(这个大小在m为1、2、3时,分别对应长度、面积、体积,并且此处m不大于n)。求d(m,n)。
对于一些简单的情况,已知如下结果:
1、d(k,k)=1;
2、d(1,k)=sqrt(k),均为体对角线的长度;
3、d(2,3)=9/8,d(2,3)表示单位立方体内能够容纳的最大正方形的面积。
大家还能算一些其它的d(m,n)的值么?

补充内容 (2018-9-4 09:53):
精华

补充m为2时的情况:
4、d(2,2k)=k,当n为偶数时,最大正方形的对角线和n维方的主对角线(体对角线)重合。
5、d(2,2k+1)=k+1/8,当n为奇数时,最大正方形的顶点在某条棱的1/4处。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-9-5 16:19:59 | 显示全部楼层
好啦,来点直观的吧。
为了计算d(3,4),即在4维超立方中最大的立方体,做了一个平面(也有叫膜的)截取超4维立方,获得3维物体的程序,供大家玩耍,哈哈。
  1. ll[p1_, p2_] := Dot[p1 - p2, p1 - p2];
  2. cr[l_, s_, t_] := Module[{p1 = First[l], p2 = Last[l], x},
  3.    If[s.p1 != s.p2, x = (s.p2 - t)/(s.p2 - s.p1); If[0 <= x <= 1, Return[x p1 + (1 - x) p2], Return[0]],  Return[0]];];
  4. dr[ps_] := Module[{ss, pn, q, x, y, ans, i},
  5.    If[Length[ps] <= 3, Print["Err Short"]];
  6.    ss = {{0, 0, 0}, {0, Sqrt[ll[ps[[1]], ps[[2]]]], 0}};
  7.    pn = {x, y, 0};  q = Map[ll[pn, #] &, ss] == Map[ll[ps[[3]], #] &, Take[ps, 2]];
  8.    AppendTo[ss, pn /. Last[Solve[q, {x, y}]]];
  9.    Do[pn = {x, y, z};   q = Map[ll[pn, #] &, ss] == Map[ll[ps[[i + 4]], #] &, Take[ps, i + 3]];
  10.     ans = Solve[q, pn]; If[Length[ans] < 1, Print["Err"];];
  11.     AppendTo[ss, pn /. Last[ans]];
  12.     , {i, 0, Length[ps] - 4}]; ss];
  13. pcs = (Table[IntegerDigits[i, 2, 4], {i, 0, 15}] 2 - 1)/2
  14. pcs // Length
  15. ls = Select[Subsets[pcs, {2}], ll[First[#], Last[#]] == 1 &];
  16. ls // Length
复制代码
ll是求两点的距离的平方,cr是求线段l和截面st的交点,dr是将4维空间中的点集ps变换到3维中,pcs是边长为1中心在原点的超立方的16个点,ls是超立方的32条棱。
  1. t = 1/8;
  2. s0 = {1, 1, 1, 1};
  3. s = s0/Apply[Plus, s0];
  4. pts = Select[Map[cr[#, s, t] &, ls], Head[#] == List &];
  5. pts // Length
  6. pus = Union[pts]
  7. pus // Length
复制代码
t是截距,s0是调整截面斜率的4个参数,尽情的调整它们吧。pus是被截出来的顶点,pts比pus多出来的是原先属于超立方的顶点。
  1. ss = dr[pus]
  2. ss // Length
  3. Graphics3D[Polygon[Subsets[ss, {3}]], Boxed -> False]
复制代码
然后,画出ss就直观啦,可以揪着转啦。
Tesseract1.JPG
最后,欢迎大家加入d(3,4)的计算。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-9-7 15:38:30 | 显示全部楼层
估算了d(3,4)的数值解,找到了一组解。
在这组解中,单位超立方中嵌入的立方体,其边长l约为1.0074347568842812(其平方是16+16x-7x^2-28x^3+4x^4==0的根),因此,d(3,4)>=1.02247050844335。
计算中假定这个立方体的中心在{0,0,0,0},其八个顶点中的四个(mm)为{{-1/2,-1/2,y,-z},{-1/2,w,1/2,-x},{1/2,1/2,z,-y},{1/2,-w,x,-1/2}},另外四个为-mm,其中的{x,y,z,w}分别为{0.212364,0.295098,0.417266,0.46486},分别是多项式{1-4x-2x^2-8x^3+8x^4,5-20x+52x^2-160x^3+64x^4,-7-4x+52x^2-32x^3+64x^4,-25+20x+36x^2+64x^3+32x^4}的根。其代码如下:
  1. mm = {{-1/2, -1/2, y, -z}, {-1/2, w, 1/2, -x}, {1/2, 1/2, z, -y}, {1/2, -w, x, -1/2}};
  2. t0 = Join[Table[mm[[i]].mm[[i]] - 3 l/4, {i, 4}], Table[mm[[i]].mm[[i + 1]] - l/4, {i, 3}], {mm[[4]].mm[[1]] - l/4, mm[[1]].mm[[3]] + l/4, mm[[2]].mm[[4]] + l/4}];
复制代码
上面是列式,t0是各个顶点要满足的方程。其中l是边长的平方。
  1. ans = Last[Solve[t0 == 0, {x, y, z, w, l}]];
  2. ans // N
复制代码
求解。
  1. ll[p1_, p2_] := Dot[p1 - p2, p1 - p2];
  2. m8 = N[Join[mm, -mm] /. ans];
  3. Outer[ll, m8, m8, 1]/(l /. ans) // MatrixForm
复制代码
可以看到各点之间距离的平方满足立方体的结构。
上面mm来自对数值计算结果的观察。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-9-7 17:13:30 | 显示全部楼层
3层的解在2层的截面为t=0,s0={k^2,k,1,1},其中k=-0.4247278963917897是2+4x-x^2+2x^3+x^4的根。大家可以用下面代码看。
  1. t = 0; s0 = {k^2, k, 1, 1} /. k ->Root[2 + 4 #1 - #1^2 + 2 #1^3 + #1^4 &, 2];
复制代码
效果大致如:
Tesseract2.JPG
它能容纳3层那个立方体。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-9-25 09:42:14 | 显示全部楼层
估算了d(3,5),它比d(3,4)的对称性要强,d(3,5)=34Sqrt[2]-27Sqrt[3]=1.31789。立方体的八个顶点分别为:{{1/2,1/2,-t,-t,1/2},{1/2,-t,1/2,-t,1/2},{-t,-t,1/2,1/2,1/2},{-t,1/2,-t,1/2,1/2},{t,t,-1/2,-1/2,-1/2},{t,-1/2,t,-1/2,-1/2},{-1/2,-1/2,t,t,-1/2},{-1/2,t,-1/2,t,-1/2}},其中t=(3-Sqrt[6])/2=0.275255。
大家可以用如下代码验证。
  1. mm={{1/2,1/2,-t,-t,1/2},{1/2,-t,1/2,-t,1/2},{-t,-t,1/2,1/2,1/2},{-t,1/2,-t,1/2,1/2},{t,t,-1/2,-1/2,-1/2},{t,-1/2,t,-1/2,-1/2},{-1/2,-1/2,t,t,-1/2},{-1/2,t,-1/2,t,-1/2}};
  2. ll[p1_,p2_]:=Dot[p1-p2,p1-p2];
  3. cc[p_]:=ll[mm[[First[p]]], mm[[Last[p]]]];
  4. Map[cc,Subsets[Range[8],{2}]]/.t->(3-Sqrt[6])/2//Expand//Tally//MatrixForm
复制代码

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-9-25 10:20:40 | 显示全部楼层
这个高维的 有点反直觉.只能代数化了,代数表达感觉都是一种挑战,我尝试一下.

n维方 S的代数表达是$S(x_1,x_2,....,x_n)=0,$, 即$ x_i^2<=1/2,1<=i<=n$,那么,题主的意思是要找到一种表达$f(x_1,x_2,...,x_m)=0$, 通过旋转和平移变换,使得$f(x_1,x_2,...,x_m) = A* S(\alpha*x_1,\alpha*x_2,...,\alpha*x_m)$, 并求出最大的$\alpha$.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-9-25 13:28:37 | 显示全部楼层
wayne 发表于 2018-9-25 10:20
这个高维的 有点反直觉.只能代数化了,代数表达感觉都是一种挑战,我尝试一下.

n维方 S的代数表达是$S ...

其实,关于d(3,5)的问题或许可以出两个直观的问题。
Q1
设某个点Pi用5个变量xi1到xi5表示(就是5维空间啦),并且这些x的取值范围是-1/2到1/2(就是点必须在超立方之内啦)。任意两个点Pi和Pj之间的距离为(xi1-xj1)^2+(xi2-xj2)^2+(xi3-xj3)^2+(xi4-xj4)^2+(xi5-xj5)^2再开平方(就是欧几里德距离啦)。现在要求求出8个点P1到P8,使得它们满足:
1、相互之间的距离恰好和某个立方体V八个顶点之间的距离对应一致(就是长度l的12根、根号2l的12根、根号3l的4根啦);
2、这个立方体V要求体积最大(就是求l的极大值啦),d(3,5)问的就是V的体积。
Q2
求包含着Q1中立方体V的那个多面体(求这个多面体在3维空间中的样子)。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-9-25 15:05:10 | 显示全部楼层
补充5层d(3,5)对应的图如下:
Tesseract3.JPG
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-9-28 09:28:12 | 显示全部楼层
当8个点为:{{-1,-1,-1,1,1,1},{1,-1,-1,-1,1,1},{1,1,1,-1,1,1},{-1,1,1,1,1,1},{-1,-1,-1,1,-1,-1},{1,-1,-1,-1,-1,-1},{1,1,1,-1,-1,-1},{-1,1,1,1,-1,-1}}/2时,d(3,6)=2Sqrt[2]。

然而,d(3,7)貌似也是一样大。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-9-28 11:01:03 | 显示全部楼层
将已估算的d(m,n)罗列如下(不一定对哟):
d(m,n)m=1m=2m=3m=4m=5m=6
n=11-----
n=21.4142135621----
n=31.7320508081.1251---
n=4221.0224705081--
n=52.2360679772.1251.3178893161-
n=62.44948974332.8284271251
n=72.6457513113.1252.828427125
n=82.82842712543.267669390
n=934.125
n=103.1622776605

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-25 09:06 , Processed in 0.162569 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表