找回密码
 欢迎注册
查看: 237|回复: 2

[提问] 四边形ABCD中,∠CAB=∠DBA=∠BCD , AB= 4,BC= 4√2, BD= 5,则CD的值为?

[复制链接]
发表于 昨天 11:44 | 显示全部楼层 |阅读模式

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

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

×
在四边形ABCD中,连接AC、BD,∠CAB=∠DBA=∠BCD , AB= 4,BC= 4√2, BD= 5,则CD的值为?


问题来源:
一题三法解一道相似三角问题 - Jerry Wen的文章 - 知乎
https://zhuanlan.zhihu.com/p/1983139553146595161
QQ截图20251218103449.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 昨天 11:48 | 显示全部楼层
  1. Clear["Global`*"];(*mathematica11.2,win7(64bit)Clear all variables*)
  2. (*子函数,利用三边计算角的余弦值,角是c边所对的角*)
  3. cs[a_,b_,c_]:=((a^2+b^2-c^2)/(2*a*b))
  4. (*子函数,四面体体积公式,a,b,c分别是从一个顶点出发的三条棱,x,y,z分别是对棱*)
  5. 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]
  6. AB=4;BD=5;BC=4*Sqrt[2];
  7. (*跟人工智能学的奇葩表达方式,直接硬求解不出来,只能用这种奇葩表达办法*)
  8. ans=Reduce[{
  9.     cs[AC,AB,BC]==cs[AB,BD,AD]==cs[CD,BC,BD],
  10.     fun[AB,AC,AD,CD,BD,BC]==0
  11. },{AC,AD,CD}]
  12. aaa=Solve[ans&&AC>=0&&AD>=0&&CD>=0,{AC,AD,CD}](*只要非负数解,别的解扔掉*)
  13. Grid[ans,Alignment->Left](*列表显示*)
复制代码


三个角相等,因此他们的余弦值相等,再加上四个点对应的四面体的体积等于零,列三个方程,求解三个未知数,
求解结果
\[\begin{array}{lll}
\text{AC}\to \frac{32}{5} & \text{AD}\to \sqrt{\frac{43}{2}} & \text{CD}\to \frac{7 \sqrt{2}}{5} \\
\text{AC}\to 4 \sqrt{2}+4 & \text{AD}\to 1 & \text{CD}\to 4 \sqrt{2}+5 \\
\end{array}\]

得到两组解。
链接里面只得到了一组解
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 昨天 11:50 | 显示全部楼层
nyy 发表于 2025-12-18 11:48
三个角相等,因此他们的余弦值相等,再加上四个点对应的四面体的体积等于零,列三个方程,求解三个未知数 ...
  1. "在mathematica代码中,把AB=3类型的代码,修改成AB=BA=3,线段长度赋值,AB与BA都赋值,这样两个变量都能用了,这样再不用考虑线段的两个端点哪个在前、哪个在后了,后面使用线段长度变量还能增加代码的可读性
  2. :menu 259.660 mma.线段长度变量AB=3替换成AB=BA=3   :.,$s/[A-Za-z]\@<!\(\([A-Z]\)\([A-Z]\)=\)/\1\3\2=/gec<CR>
  3. "在mathematica代码中,替换线段长度变量,比如把BA替换成AB,写代码时用到线段长度变量时,AB与BA两个变量随便用,但是写完代码后,再用编辑器的正则替换(写到菜单里)把BA替换成AB,使得顺序小的A在顺序大的B之前,这样写代码用到线段长度变量时,就不用人工费脑筋考虑A与B哪个在前。同时,还要注意不替换ΔBAC、∠BAC、变量BACD中的BA
  4. :menu 259.661 mma.线段长度变量BA替换成AB   :.,$s/[A-Za-z]\@<!\([A-Z]\)\([A-Z]\)[A-Za-z0-9]\@!/\=(submatch(1)>submatch(2)?submatch(2).submatch(1):submatch(1).submatch(2))/gec<CR>
  5. "下面的或表达式,是两个\\,至于原因不知道,只搜索BA(也就是第一个字母比第二个字母大的情况,AB这种不搜索)
  6. :menu 259.662 mma.线段长度变量只搜索BA并替换成AB    :.,$s/[A-Za-z]\@<!\(B[A]\\|C[A-B]\\|D[A-C]\\|E[A-D]\\|F[A-E]\\|G[A-F]\\|H[A-G]\\|I[A-H]\\|J[A-I]\\|K[A-J]\\|L[A-K]\\|M[A-L]\\|N[A-M]\\|O[A-N]\\|P[A-O]\\|Q[A-P]\\|R[A-Q]\\|S[A-R]\\|T[A-S]\\|U[A-T]\\|V[A-U]\\|W[A-V]\\|X[A-W]\\|Y[A-X]\\|Z[A-Y]\)[A-Za-z0-9]\@!/\=ExchangeIfGreater(submatch(1))/gec<CR>
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2025-12-19 16:35 , Processed in 0.059092 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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