找回密码
 欢迎注册
查看: 203|回复: 10

[原创] 求一个方程组的公式解

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 TSC999 于 2025-2-18 18:38 编辑

在三角形 ABC 中,设 x、y、z 分别是 A、B、C 到内切圆的切线长,H 是三角形的垂心,AH、BH、CH 分别是 A、B、C 点到垂心的距离。
如果 AH、BH、CH 已知,而  x、y、z 未知。可以证明它们之间满足以下方程组:

\(AH=\sqrt{\frac{(x+y)^2(y+z)^2(z+x)^2}{4(x+y+z)x y z}-(y+z)^2}\)
\(BH=\sqrt{\frac{(x+y)^2(y+z)^2(z+x)^2}{4(x+y+z)x y z}-(z+x)^2}\)
\(CH=\sqrt{\frac{(x+y)^2(y+z)^2(z+x)^2}{4(x+y+z)x y z}-(x+y)^2}\)

这个方程组通常有两组正解,利用计算软件得到任意精度的数值解是没有问题的,现在的问题是,能不能找到它的公式解?

补充内容 (2025-2-19 10:28):
对于直角三角形和正三角形,这个方程组只有一组解。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 3 天前 | 显示全部楼层
一种解答思路

解答

解答
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 前天 08:15 | 显示全部楼层
如果题主的公式是对的,那么可以进一步化简.
已知$AH=a_1,BH=b_1,CH=c_1$,设$t=4R^2=\frac{(x+y)^2(y+z)^2(z+x)^2}{4(x+y+z)x y z}$,那么根据题主的公式,可以得到一个关于$t$的一元三次方程$t^3-2 (a_1^2+b_1^2+c_1^2)t^2 + (a_1^2+b_1^2+c_1^2)^2t-4 a_1^2 b_1^2 c_1^2=0$.
也就是 $R^2 (R^2-a_1^2-b_1^2-c_1^2)^2=4 a_1^2 b_1^2 c_1^2$, 只要解出$R$,$x,y,z$迎刃而解,具体化简的代码如下:
  1. Collect[First@GroebnerBasis[{((x+y)^2 (y+z)^2 (x+z)^2)/(4(x+y+z)x y z)==t,t==(y+z)^2+Subscript[a, 1]^2,t==(x+z)^2+Subscript[b, 1]^2,t==(x+y)^2+Subscript[c, 1]^2,x+y==c,x+z==b,y+z==a},{},{a,b,c,x,y,z}],t,Factor]
复制代码

点评

当方程的根满足下面条件时,这方程一般有两组正根。对于直角三角形和正三角形只有一组正根。  发表于 前天 11:24
这个一元三次方程正确。补充一点:这个方程的根必须满足条件 t>AH^2,t>BH^2 和 t>CH^2。  发表于 前天 11:21
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 前天 09:47 | 显示全部楼层
用方程组不好吗?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 前天 18:46 | 显示全部楼层
本帖最后由 TSC999 于 2025-2-19 18:49 编辑

设 tx、ty、tz 分别是 A、B、C 点到内切圆的切线长,AH、BH、CH 分别是 A、B、C 点到垂心的距离。
把 AH、BH、CH 作为已知量, tx、ty、tz 作为未知量,它们之间满足 1# 楼中的方程。即
\(AH=\sqrt{\frac{(tx+ty)^2(ty+tz)^2(tz+tx)^2}{4(tx+ty+tz)tx ty tz}-(ty+tz)^2}\)
\(BH=\sqrt{\frac{(tx+ty)^2(ty+tz)^2(tz+tx)^2}{4(tx+ty+tz)tx ty tz}-(tx+tz)^2}\)
\(CH=\sqrt{\frac{(tx+ty)^2(ty+tz)^2(tz+tx)^2}{4(tx+ty+tz)tx ty tz}-(tx+ty)^2}\)

这个方程组通常有两组正解(对于直角三角形和正三角形,只有一组解),利用计算软件得到任意精度的数值解是没有问题的,现在的问题是,如何找到它的公式解?
在 3# 楼中,管理员 wayne 给出了一个一元三次方程,从这个方程的解集中可以导出公式解,但是还需要完善的是,如何从三个解中自动的选择出来正确的解?
这个方程是:
wayne 的一元三次方程.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 前天 20:09 | 显示全部楼层
在明确了$H$是三角形$ABC$的垂心的时候, 约束是多余的,因为 根据正弦定理,$a=2R sinA$,容易得到$AH=2R |cosA|$,同理 $BH = 2R |cosB|,CH=2R |cosC|$
于是,我们根据$a_1 = AH=2R |cosA|, b_1 = BH = 2R |cosB|, c_1 = CH=2R |cosC|$消元, 消除三个角度$A,B,C$,得到$(4 R^3 - (a_1^2 + b_1^2 + c_1^2 ) R)^2 = (a_1 b_1 c_1)^2$,
所以,结论就是, 我们解这两个一元三次方程$t^3 - (a_1^2 + b_1^2 + c_1^2 ) t = \pm 2 a_1 b_1 c_1$,应该有一个根是$2R$,所以我们只需要取$t>max(a_1,b_1,c_1)$的那个根.  
一般情况下是两个解.直角三角形的时候,两个解一样.
  1. Block[{a = 23, b = 24, c = 25, a1, b1, c1, tri, R},
  2. tri = SSSTriangle[a, b, c];
  3. R = TriangleMeasurement[tri, "Circumradius"];
  4. {a1, b1, c1} = 2 R Abs[Cos[PolygonAngle[tri]]]; {{2 R, {a1, b1, c1}, {a, b, c}} // N,
  5. Table[ N@{r, {a1, b1, c1}, Sqrt[r^2 - {a1, b1, c1}^2]}, {r,  NSolveValues[(t^3 - (a1^2 + b1^2 + c1^2) t)^2 == 4 (a1 b1 c1)^2 &&t > Max[a1, b1, c1], t]}]}]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 前天 21:55 | 显示全部楼层
用下面这个程序可以自动筛选掉多余的根。只要输入 AH,BH,CH 的值,运行程序以后即可得到三角形三边的值和面积值。
对于直角三角形和正三角形,只输出一组解。一般的锐角三角形和钝角三角形,输出两组解。

  1. Clear["Global`*"];(*三个根中最多只有一至两个根有用,下面是如何自动筛选出正确解的程序*)
  2. AH = 10; BH = 304; CH = 233;(*锐角三角形*)
  3. AH = 0; BH = 3; CH = 4;(*直角三角形*)
  4. AH = BH = CH = 5 Tan[\[Pi]/3] - 5 Tan[\[Pi]/6];(*正三角形*)
  5. AH = 5 Tan[\[Pi]/3] - 5 Tan[\[Pi]/6]; BH = 10; CH = 10;(*钝角三角形*)

  6. u = AH^2 + BH^2 + CH^2; v = AH^2 BH^2 CH^2;
  7. w1 = Power[-(u^3/27) + 2 v -
  8.   Sqrt[(2 v - u^3/27)^2 - u^6/729], (3)^-1]; w2 = Power[-(u^3/27) +
  9.   2 v + Sqrt[(2 v - u^3/27)^2 - u^6/729], (3)^-1];
  10. t1 = (2 u)/3 + w1 + w2;
  11. t2 = 1/6 (4 u + 3 I (I + Sqrt[3]) w1 - 3 I (-I + Sqrt[3]) w2);

  12. If[N[Re[t1] > AH^2 && Re[t1] > BH^2 && Re[t1] > CH^2],
  13.   Print["a1 = ", Sqrt[N[Re[t1], 100] - AH^2]] &&
  14.    Print["b1 = ", Sqrt[N[Re[t1], 100] - BH^2]] &&
  15.    Print["c1 = ", Sqrt[N[Re[t1], 100] - CH^2]]];
  16. If[N[Re[t1] > AH^2 && Re[t1] > BH^2 && Re[t1] > CH^2],
  17.   a1 = Sqrt[N[Re[t1], 100] - AH^2] ;
  18.   b1 = Sqrt[N[Re[t1], 100] - BH^2]; c1 = Sqrt[N[Re[t1], 100] - CH^2];
  19.   p1 = (a1 + b1 + c1)/2;
  20.   Print["S1 = ", Sqrt[p1 (p1 - a1) (p1 - b1) (p1 - c1)] ]];
  21. Print["。。。。。。。。。。。。。。 "];
  22. If[N[Re[t2] > AH^2 && Re[t2] > BH^2 && Re[t2] > CH^2],
  23.   Print["a2 = ", Sqrt[N[Re[t2], 100] - AH^2]] &&
  24.    Print["b2 = ", Sqrt[N[Re[t2], 100] - BH^2]] &&
  25.    Print["c2 = ", Sqrt[N[Re[t2], 100] - CH^2]]];
  26. If[N[Re[t2] > AH^2 && Re[t2] > BH^2 && Re[t2] > CH^2],
  27.   a2 = Sqrt[N[Re[t2], 100] - AH^2] ;
  28.   b2 = Sqrt[N[Re[t2], 100] - BH^2]; c2 = Sqrt[N[Re[t2], 100] - CH^2];
  29.   p2 = (a2 + b2 + c2)/2;
  30.   Print["S2 = ", Sqrt[p2 (p2 - a2) (p2 - b2) (p2 - c2)] ]];
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 昨天 19:53 | 显示全部楼层
下面这个程序更简单,它是先由 AH、BH、CH 按方程
\( (4 R^3 - (AH^2 + BH^2 + CH^2) R +  AH BH CH) (4 R^3 - (AH^2 + BH^2 + CH^2) R - AH BH CH) = 0\)
求得三角形的外接圆半径后,再由  \( a =\sqrt{4 R^2 - AH^2};  b =\sqrt{4 R^2 - BH^2}; c =\sqrt{4 R^2 - CH^2};\)
求出各边长, 最后由  \( S =\frac{a b c }{4R}\) 求出面积。
上面那个六次方程的六个根中,由于条件 R > AH/2,R > BH/2,R > CH/2 的限制,最多只有两个根能用。这两个根
的公式表达已在下面的程序中给出。程序可自动判定各种形状的三角形有一个解还是两个解。

  1. Clear["Global`*"];
  2. AH = 10; BH = 304; CH = 233;(*锐角三角形*)
  3. AH = 0; BH = 3; CH = 4;(*直角三角形*)
  4. AH = BH = CH = 5 Tan[\[Pi]/3] - 5 Tan[\[Pi]/6];(*正三角形*)
  5. AH = 5 Tan[\[Pi]/3] - 5 Tan[\[Pi]/6]; BH = 10; CH = 10;(*钝角三角形*)
  6. AH = 10; BH = 304; CH = 233;(*锐角三角形*)
  7. u = (AH^2 + BH^2 + CH^2)^3; v = AH BH CH;
  8. R1 = Power[3, (
  9.    3)^-1] (Power[-Sqrt[3] Sqrt[27 v^2 - u] - 9 v, (3)^-1] + Power[
  10.       Sqrt[3] Sqrt[27 v^2 - u] - 9 v, (3)^-1])/6;
  11. R2 = Power[3, (
  12.    3)^-1] (Power[-Sqrt[3] Sqrt[27 v^2 - u] + 9 v, (3)^-1] + Power[
  13.       Sqrt[3] Sqrt[27 v^2 - u] + 9 v, (3)^-1])/6;
  14. If[N[Re[R1] > AH/2 && Re[R1] > BH/2 && Re[R1] > CH/2],
  15.   a1 = Sqrt[ 4 R1^2 - AH^2]; b1 = Sqrt[ 4 R1^2 - BH^2];
  16.   c1 = Sqrt[ 4 R1^2 - CH^2]; Print["R = ", N[Re[R1], 100]] ];
  17. If[N[Re[R1] > AH/2 && Re[R1] > BH/2 && Re[R1] > CH/2],
  18.   Print["S = ", N[Re[(a1 b1 c1)/(4 R1)], 100]]];
  19. If[N[Re[R2] > AH/2 && Re[R2] > BH/2 && Re[R2] > CH/2],
  20.   a2 = Sqrt[ 4 R2^2 - AH^2]; b2 = Sqrt[ 4 R2^2 - BH^2];
  21.   c2 = Sqrt[ 4 R2^2 - CH^2];
  22.   If[R2 == R1, , Print["R = ", N[Re[R2], 100]] ]];
  23. If[N[Re[R2] > AH/2 && Re[R2] > BH/2 && Re[R2] > CH/2],
  24.   If[R2 == R1, , Print["S = ", N[Re[(a2 b2 c2)/(4 R2)], 100 ]]]];
复制代码


例如对于锐角三角形  AH = 10; BH = 304; CH = 233,程序给出的计算结果是:
R = 189.1160857854779494092814726974916801415074861313353498896910912676648062057845971166164395417150437
S = 33513.12000360015084583393730130765683776342204411502238860909034900329439819384609646426174249196155
R = 193.9440558567612753919961906149090470401960145201871603411485430307116457627891307131652349714083547
S = 37343.02451839576560654358367901796739626253672899795611621417727102363143644715094548601358734054778
共有两个解。
又如对于直角三角形 AH = 0; BH = 3; CH = 4,程序给出的计算结果是:
R = 2.500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
S = 6.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
只有一个解。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 13 小时前 | 显示全部楼层
正向思路, 首先,有一个恒等式 $\cos ^2(A)+\cos ^2(B) +\cos ^2(C)=1-2 \cos (A) \cos (B) \cos (C)$
然后, 在那个帖子我们提到了 $AH=2R |cosA|, BH = 2R |cosB|, CH=2R |cosC|$,
所以代入得到 $(4 R^3 - (AH^2 + BH^2 + CH^2) R)^2 = 16R^6*2 \cos ^2(A) \cos ^2(B) \cos ^2(C) = 4*AH^2*BH^2*CH^2$
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2025-2-21 23:38 , Processed in 0.060439 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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