找回密码
 欢迎注册
楼主: northwolves

[原创] 广场上四只狗两种距离

[复制链接]
发表于 2024-3-12 13:22:08 | 显示全部楼层
本帖最后由 nyy 于 2024-3-12 13:28 编辑
nyy 发表于 2024-3-12 12:47
继续优化上面的代码!


根据上面的求解结果,画出六种结果(不知道是否还有别的结果)


QQ截图20240312132819.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2024-3-12 13:51:52 | 显示全部楼层
nyy 发表于 2024-3-12 13:22
根据上面的求解结果,画出六种结果(不知道是否还有别的结果)


进一步优化代码!
  1. Clear["Global`*"];(*Clear all variables*)
  2. (*子函数,四面体体积公式,a,b,c分别是从一个顶点出发的三条棱,x,y,z分别是对棱*)
  3. fun[a_,b_,c_,x_,y_,z_]:=Sqrt[Det[{{0,1,1,1,1},{1,0,a^2,b^2,c^2},{1,a^2,0,z^2,y^2},{1,b^2,z^2,0,x^2},{1,c^2,y^2,x^2,0}}]/288]
  4. (*子函数,给定一个四面体六条棱的数组,让四面体体积等于零,计算出x的值,并且只计算正实数根,返回求解结果*)
  5. sol[list_]:=Module[{},Flatten@FullSimplify@Solve[fun@@list==0&&x>=1,{x},Reals]]
  6. (*假设四面体的最小的棱的长度=1,由于相似,总可以做到*)
  7. aaa=Tuples[{1,x},6];(*形成所有的可能*)
  8. bbb=Select[aaa,sol[#]=!={}&];(*选择当中有意义的*)
  9. ccc={#,sol[#],Total[#/.sol[#]]}&/@bbb;(*对有意义的,每一个求解出结果,并且算出六条棱的长度和*)
  10. (*根据第二个元素从小到大排列,如果第二个相同,则排列第三列(第三列六条棱的长度和)*)
  11. ddd=Sort[ccc,Or[((x/.#1[[2]])<(x/.#2[[2]])),And[((x/.#1[[2]])==(x/.#2[[2]])),#1[[3]]<#2[[3]]]]&];
  12. eee=Grid[ddd,Alignment->Right](*列表显示*)
  13. N[eee](*数值化*)
复制代码


求解结果

点评

nyy
根据六条棱长度和,我推测应该只存在六种情况!  发表于 2024-3-12 13:52
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-11-21 20:03 , Processed in 0.025569 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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