nyy 发表于 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:=Module[{p=(a+b+c)/2},Sqrt]
(*穷举四边以及对角线*)
aaa={3,#[],x,#[],#[]}&/@Permutations[{4,5,6}]
Grid(*列表显示*)
(*对于每一种情况,用海伦公式求出两个三角形面积*)
bbb={heron[#1,#2,#3],heron[#3,#4,#5]}&@@@aaa//Simplify
Grid(*列表显示*)
(*要求两三角形面积相加=四边形面积=18,且对角线长度正数,且两个三角形面积非负*)
ccc=Solve[(#[]+#[])==18&&x>0&&#[]>=0&&#[]>=0,x]&/@bbb
Grid(*列表显示*)



优化后的代码(优化后的代码可读性更强):
Clear["Global`*"];(*清除所有变量*)
(*子函数,海伦公式,利用海伦公式计算三角形的面积*)
heron:=Module[{p=(a+b+c)/2},Sqrt]
(*穷举四边以及对角线,每一个元素表示{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&&#1>=0&&#2>=0,x]&@@@bbb
Grid(*列表显示*)
Grid(*列表显示*)
Grid(*列表显示*)

王守恩 发表于 2023-4-24 18:07:51

nyy 发表于 2023-4-24 12:03
你这个人真操蛋!
只要已知一条对角线的长度(假设为x),那么根据海伦公式,
就能求解出两个三角形的 ...
谢谢 nyy!有道理!不需要4个方程。
这样的四边形有6个。3种可能(3的对面只能是4,5,6),每种可能2个解,共6个解。a,b,c,d=4条边,    A,C=2个对角。

\(\frac{a*b\sin(A)+c*d\sin(C)}{2*18}=\frac{a^2+b^2-2a*b\cos(A)}{c^2+d^2-2c*d\cos(C)}=1\)

Table + c*d*Sin)/(2*18) == (a^2 + b^2 - 2 a*b*Cos)/(c^2 + d^2 - 2 c*d*Cos) == 1,
\ > A > 0, \ > C > 0}, {A, C}], {a, 3, 3}, {b, 4, 4}, {c, 5, 5}, {d, 6, 6}] // FullSimplify
{{{{{{A -> \/2, C -> ArcTan}, {A -> \ - ArcTan, C -> ArcTan}}}}}}

nyy 发表于 2023-4-25 08:45:19

王守恩 发表于 2023-4-24 18:07
谢谢 nyy!有道理!不需要4个方程。
这样的四边形有6个。3种可能(3的对面只能是4,5,6),每种可能2个解, ...

我真受不了你,你写的代码太差了,
答案结果有6层大括号,直接让人吐死了!
还有居然把代码与结果放在一个代码框里面。
然后使用前居然没清除变量,也没注释,操,
这代码太操蛋了!居然用table,{a, 3, 3}, {b, 4, 4}, {c, 5, 5}, {d, 6, 6}
还不如直接在外面{a,b,c,d}={3,4,5,6}赋值,这样代码也好看。也减少嵌套!
代码太垃圾了!

nyy 发表于 2023-4-25 09:00:08

王守恩 发表于 2023-4-24 18:07
谢谢 nyy!有道理!不需要4个方程。
这样的四边形有6个。3种可能(3的对面只能是4,5,6),每种可能2个解, ...

我来做个示范,把你的代码改造一下:
Clear["Global`*"];(*清除所有变量*)
{a,b,c,d}={3,4,5,6}(*四边形四边赋值*)
ans=Solve[{
    (*两个三角形面积相加等于四边形面积*)
    1/2*(a*b*Sin+c*d*Sin)==18,
    (*用余弦定理来计算同一条对角线,是相等的*)
    a^2+b^2-2*a*b*Cos==c^2+d^2-2*c*d*Cos,
    0<A<Pi&&0<C<Pi(*限制变量范围*)
},{A,C},Method->Reduce]//FullSimplify
Grid(*列表显示*)


求解结果
\[\left\{\left\{A\to \frac{\pi }{2},C\to 2 \cot ^{-1}(2)\right\},\left\{A\to 2 \tan ^{-1}(3),C\to 2 \tan ^{-1}\left(\frac{3}{4}\right)\right\}\right\}\]
矩阵形式的求解结果
\[\begin{array}{ll}
A\to \frac{\pi }{2} & C\to 2 \cot ^{-1}(2) \\
A\to 2 \tan ^{-1}(3) & C\to 2 \tan ^{-1}\left(\frac{3}{4}\right) \\
\end{array}\]

相对于你的代码,我的代码的优点如下:
1、一开头就清除所有变量,避免以前定义的变量对本次写的代码的干扰;
2、有注释,代码可读性更强
3、有缩进
4、输出结果不层层嵌套

然后求解结果用LaTeX来表达,更容易看清楚看明白!再写成矩阵形式,可读性更高!

王守恩 发表于 2023-4-29 12:24:23

nyy 发表于 2023-4-25 09:00
我来做个示范,把你的代码改造一下:



求通项:12, 127, 1277, 12777, 127777, 1277777, 12777777, 127777777, ...,

northwolves 发表于 2023-4-30 11:05:51

王守恩 发表于 2023-4-29 12:24
求通项:12, 127, 1277, 12777, 127777, 1277777, 12777777, 127777777, ...,

$a_n=\frac{23*10^n-14}{18}$

nyy 发表于 2023-5-4 10:05:00

王守恩 发表于 2023-4-29 12:24
求通项:12, 127, 1277, 12777, 127777, 1277777, 12777777, 127777777, ...,

Clear["Global`*"];(*清除所有变量*)
RSolve[{a==a*10+7,a==12},a,n]


求解结果
\[\left\{\left\{a(n)\to \frac{1}{18} \left(23\ 10^n-14\right)\right\}\right\}\]

nyy 发表于 2023-5-4 10:07:41

王守恩 发表于 2023-4-29 12:24
求通项:12, 127, 1277, 12777, 127777, 1277777, 12777777, 127777777, ...,

找到递推公式,然后用高中数学知识,方程两边同时加上7/9,
再根据等比数列知识,就能得到通项公式!
页: 1 2 [3]
查看完整版本: 你们有啥被骗的经历?