- 注册时间
- 2021-11-19
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 8641
- 在线时间
- 小时
|
楼主 |
发表于 2023-4-24 12:14:27
|
显示全部楼层
本帖最后由 nyy 于 2023-4-24 12:36 编辑
王守恩 发表于 2023-4-24 10:16
这样的四边形有6个。3种可能(3的对面只能是4,5,6), 每种可能2个解,共6个解。 a,b,c,d=4条边, A,B,C, ...
进一步完善我的求解:
思路:
只要已知一条对角线的长度(假设为x),那么根据海伦公式,
就能求解出两个三角形的面积,两个三角形的面积相加等于四边形面积=18,然后求解方程(此处忽略凹四边形情况,已经求解过了,不存在凹四边形情况)
穷举所有情况:
{{3, 4, x, 5, 6}, {3, 4, x, 6, 5}, {3, 5, x, 4, 6}, {3, 5, x, 6, 4}, {3, 6, x, 4, 5}, {3, 6, x, 5, 4}}
其中
{3, 4, x, 5, 6}
表示AB=3,BC=4,AC=x,CD=5,DA=6
搞成矩阵形式
\[\begin{array}{lllll}
3 & 4 & x & 5 & 6 \\
3 & 4 & x & 6 & 5 \\
3 & 5 & x & 4 & 6 \\
3 & 5 & x & 6 & 4 \\
3 & 6 & x & 4 & 5 \\
3 & 6 & x & 5 & 4 \\
\end{array}\]
两个三角形的面积
\[\begin{array}{ll}
\frac{1}{4} \sqrt{-x^4+50 x^2-49} & \frac{1}{4} \sqrt{-x^4+122 x^2-121} \\
\frac{1}{4} \sqrt{-x^4+50 x^2-49} & \frac{1}{4} \sqrt{-x^4+122 x^2-121} \\
\frac{1}{4} \sqrt{-x^4+68 x^2-256} & \frac{1}{4} \sqrt{-x^4+104 x^2-400} \\
\frac{1}{4} \sqrt{-x^4+68 x^2-256} & \frac{1}{4} \sqrt{-x^4+104 x^2-400} \\
\frac{1}{4} \sqrt{-x^4+90 x^2-729} & \frac{1}{4} \sqrt{-x^4+82 x^2-81} \\
\frac{1}{4} \sqrt{-x^4+90 x^2-729} & \frac{1}{4} \sqrt{-x^4+82 x^2-81} \\
\end{array}\]
求解结果
\[\begin{array}{ll}
\{x\to 5\} & \left\{x\to \sqrt{\frac{221}{5}}\right\} \\
\{x\to 5\} & \left\{x\to \sqrt{\frac{221}{5}}\right\} \\
\left\{x\to 10 \sqrt{\frac{5}{17}}\right\} & \left\{x\to 2 \sqrt{13}\right\} \\
\left\{x\to 10 \sqrt{\frac{5}{17}}\right\} & \left\{x\to 2 \sqrt{13}\right\} \\
\left\{x\to 9 \sqrt{\frac{5}{13}}\right\} & \left\{x\to \frac{9 \sqrt{17}}{5}\right\} \\
\left\{x\to 9 \sqrt{\frac{5}{13}}\right\} & \left\{x\to \frac{9 \sqrt{17}}{5}\right\} \\
\end{array}\]
数值化
\[\begin{array}{ll}
\{x\to 5.\} & \{x\to 6.64831\} \\
\{x\to 5.\} & \{x\to 6.64831\} \\
\{x\to 5.42326\} & \{x\to 7.2111\} \\
\{x\to 5.42326\} & \{x\to 7.2111\} \\
\{x\to 5.58156\} & \{x\to 7.42159\} \\
\{x\to 5.58156\} & \{x\to 7.42159\} \\
\end{array}\]
所有代码如下:
- Clear["Global`*"];(*清除所有变量*)
- (*子函数,海伦公式,利用海伦公式计算三角形的面积*)
- heron[a_,b_,c_]:=Module[{p=(a+b+c)/2},Sqrt[p*(p-a)*(p-b)*(p-c)]]
- (*穷举四边以及对角线*)
- aaa={3,#[[1]],x,#[[2]],#[[3]]}&/@Permutations[{4,5,6}]
- Grid[aaa,Alignment->Left](*列表显示*)
- (*对于每一种情况,用海伦公式求出两个三角形面积*)
- bbb={heron[#1,#2,#3],heron[#3,#4,#5]}&@@@aaa//Simplify
- Grid[bbb,Alignment->Left](*列表显示*)
- (*要求两三角形面积相加=四边形面积=18,且对角线长度正数,且两个三角形面积非负*)
- ccc=Solve[(#[[1]]+#[[2]])==18&&x>0&&#[[1]]>=0&&#[[2]]>=0,x]&/@bbb
- Grid[ccc,Alignment->Left](*列表显示*)
复制代码
优化后的代码(优化后的代码可读性更强):
- Clear["Global`*"];(*清除所有变量*)
- (*子函数,海伦公式,利用海伦公式计算三角形的面积*)
- heron[a_,b_,c_]:=Module[{p=(a+b+c)/2},Sqrt[p*(p-a)*(p-b)*(p-c)]]
- (*穷举四边以及对角线,每一个元素表示{AB,BC,AC=x,CD,DA}*)
- aaa={3,#1,x,#2,#3}&@@@Permutations@{4,5,6}
- (*对于每一种情况,用海伦公式△ABC、△ACD的面积*)
- bbb={heron[#1,#2,#3],heron[#3,#4,#5]}&@@@aaa//Simplify
- (*要求两三角形面积相加=四边形面积=18,且对角线长度正数,且两个三角形面积非负*)
- ccc=Solve[(#1+#2)==18&&x>0&>=0&>=0,x]&@@@bbb
- Grid[aaa,Alignment->Left](*列表显示*)
- Grid[bbb,Alignment->Left](*列表显示*)
- Grid[ccc,Alignment->Left](*列表显示*)
复制代码 |
|