TSC999 发表于 4 天前

求一个方程组的公式解

本帖最后由 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):
对于直角三角形和正三角形,这个方程组只有一组解。

iseemu2009 发表于 4 天前

一种解答思路

wayne 发表于 3 天前

如果题主的公式是对的,那么可以进一步化简.
已知$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$迎刃而解,具体化简的代码如下:
Collect^2,t==(x+z)^2+Subscript^2,t==(x+y)^2+Subscript^2,x+y==c,x+z==b,y+z==a},{},{a,b,c,x,y,z}],t,Factor]

nyy 发表于 3 天前

用方程组不好吗?

TSC999 发表于 3 天前

本帖最后由 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 发表于 3 天前

在明确了$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)$的那个根.
一般情况下是两个解.直角三角形的时候,两个解一样.
Block[{a = 23, b = 24, c = 25, a1, b1, c1, tri, R},
tri = SSSTriangle;
R = TriangleMeasurement;
{a1, b1, c1} = 2 R Abs]]; {{2 R, {a1, b1, c1}, {a, b, c}} // N,
Table[ N@{r, {a1, b1, c1}, Sqrt}, {r,NSolveValues[(t^3 - (a1^2 + b1^2 + c1^2) t)^2 == 4 (a1 b1 c1)^2 &&t > Max, t]}]}]

TSC999 发表于 3 天前

用下面这个程序可以自动筛选掉多余的根。只要输入 AH,BH,CH 的值,运行程序以后即可得到三角形三边的值和面积值。
对于直角三角形和正三角形,只输出一组解。一般的锐角三角形和钝角三角形,输出两组解。

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

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

If > AH^2 && Re > BH^2 && Re > CH^2],
Print["a1 = ", Sqrt, 100] - AH^2]] &&
   Print["b1 = ", Sqrt, 100] - BH^2]] &&
   Print["c1 = ", Sqrt, 100] - CH^2]]];
If > AH^2 && Re > BH^2 && Re > CH^2],
a1 = Sqrt, 100] - AH^2] ;
b1 = Sqrt, 100] - BH^2]; c1 = Sqrt, 100] - CH^2];
p1 = (a1 + b1 + c1)/2;
Print["S1 = ", Sqrt ]];
Print["。。。。。。。。。。。。。。 "];
If > AH^2 && Re > BH^2 && Re > CH^2],
Print["a2 = ", Sqrt, 100] - AH^2]] &&
   Print["b2 = ", Sqrt, 100] - BH^2]] &&
   Print["c2 = ", Sqrt, 100] - CH^2]]];
If > AH^2 && Re > BH^2 && Re > CH^2],
a2 = Sqrt, 100] - AH^2] ;
b2 = Sqrt, 100] - BH^2]; c2 = Sqrt, 100] - CH^2];
p2 = (a2 + b2 + c2)/2;
Print["S2 = ", Sqrt ]];

TSC999 发表于 前天 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 的限制,最多只有两个根能用。这两个根
的公式表达已在下面的程序中给出。程序可自动判定各种形状的三角形有一个解还是两个解。

Clear["Global`*"];
AH = 10; BH = 304; CH = 233;(*锐角三角形*)
AH = 0; BH = 3; CH = 4;(*直角三角形*)
AH = BH = CH = 5 Tan[\/3] - 5 Tan[\/6];(*正三角形*)
AH = 5 Tan[\/3] - 5 Tan[\/6]; BH = 10; CH = 10;(*钝角三角形*)
AH = 10; BH = 304; CH = 233;(*锐角三角形*)
u = (AH^2 + BH^2 + CH^2)^3; v = AH BH CH;
R1 = Power[3, (
   3)^-1] (Power[-Sqrt Sqrt - 9 v, (3)^-1] + Power[
      Sqrt Sqrt - 9 v, (3)^-1])/6;
R2 = Power[3, (
   3)^-1] (Power[-Sqrt Sqrt + 9 v, (3)^-1] + Power[
      Sqrt Sqrt + 9 v, (3)^-1])/6;
If > AH/2 && Re > BH/2 && Re > CH/2],
a1 = Sqrt[ 4 R1^2 - AH^2]; b1 = Sqrt[ 4 R1^2 - BH^2];
c1 = Sqrt[ 4 R1^2 - CH^2]; Print["R = ", N, 100]] ];
If > AH/2 && Re > BH/2 && Re > CH/2],
Print["S = ", N, 100]]];
If > AH/2 && Re > BH/2 && Re > CH/2],
a2 = Sqrt[ 4 R2^2 - AH^2]; b2 = Sqrt[ 4 R2^2 - BH^2];
c2 = Sqrt[ 4 R2^2 - CH^2];
If, 100]] ]];
If > AH/2 && Re > BH/2 && Re > CH/2],
If, 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
只有一个解。

wayne 发表于 昨天 10:15

正向思路, 首先,有一个恒等式 $\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$
页: [1]
查看完整版本: 求一个方程组的公式解