找回密码
 快速注册
搜索
查看: 85|回复: 7

[几何] 已知三角形的内心到各顶点的距离,能否确定内切圆半径和三角形周长?

[复制链接]

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

TSC999 发表于 2025-2-13 17:59 |阅读模式
已知三角形的内心到各顶点的距离,能否确定内切圆半径和三角形周长?

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2025-2-14 10:53
下面给出一个反例说明:已知三角形的内心到各顶点的距离,并不能给出一个公式来确定三角形周长。
说明.png
反例三角形.png
上面这个 “三角形” 实际上是不存在的,因为除了内心到各顶点的距离是准确值外,其余数据(切线长和圆半径)都是近似值,不可能得到它们的准确值。

68

主题

434

回帖

4269

积分

积分
4269

显示全部楼层

hejoseph 发表于 2025-2-14 11:28
本帖最后由 hejoseph 于 2025-2-14 15:52 编辑 可以得到周长和半径满足的方程,但是很复杂的,都是三次相关的方程,但要确定哪个是真正的解并不那么容易。
若设 $p$ 为半周长,$r$ 为内切圆半径,$t$、$u$、$v$ 是内心到各顶点的距离,则 $r$ 满足方程
  1. 2 r^3 t u v+r^2 (t^2 u^2+t^2 v^2+u^2 v^2)-t^2 u^2 v^2 == 0
复制代码

$p$ 满足方程
  1. 4 p^6 t^2 u^2 v^2+p^4 (t^4 u^4-10 t^4 u^2 v^2+t^4 v^4-10 t^2 u^4 v^2-10 t^2 u^2 v^4+u^4 v^4)+p^2 (-2 t^6 u^4+8 t^6 u^2 v^2-2 t^6 v^4-2 t^4 u^6-4 t^4 u^4 v^2-4 t^4 u^2 v^4-2 t^4 v^6+8 t^2 u^6 v^2-4 t^2 u^4 v^4+8 t^2 u^2 v^6-2 u^6 v^4-2 u^4 v^6)+t^8 u^4-2 t^8 u^2 v^2+t^8 v^4-2 t^6 u^6+2 t^6 u^4 v^2+2 t^6 u^2 v^4-2 t^6 v^6+t^4 u^8+2 t^4 u^6 v^2-6 t^4 u^4 v^4+2 t^4 u^2 v^6+t^4 v^8-2 t^2 u^8 v^2+2 t^2 u^6 v^4+2 t^2 u^4 v^6-2 t^2 u^2 v^8+u^8 v^4-2 u^6 v^6+u^4 v^8 == 0
复制代码

通过数值验证,$p$、$r$ 应该都是所满足方程的最大根。

事实上2#所举的例子是有解的,按那里的符号,tx、ty、tz的近似值分别为0.82561346818181854226、2.28375515299762612237、1.60101142995395591850

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2025-2-15 09:11
本帖最后由 TSC999 于 2025-2-15 10:24 编辑
  1. Clear["Global`*"];
  2. x = 115/100; y = 242/100; z = 179/100;
  3. W = NSolve[{2 r^3 x y z + r^2 (x^2 y^2 + x^2 z^2 + y^2 z^2) -
  4.        x^2 y^2 z^2 == 0, r > 0}, {r}, 100] // Flatten;
  5. r = r /. W; Print["r = ", r];
  6. tx = Sqrt[x^2 - r^2]; Print["tx = ", N[tx, 100]];
  7. ty = Sqrt[y^2 - r^2]; Print["ty = ", N[ty, 100]];
  8. tz = Sqrt[z^2 - r^2]; Print["tz = ", N[tz, 100]];
  9. L = 2 (tx + ty + tz); Print["L = ", N[L, 100]];
复制代码

程序运行结果是:
r = 0.8005388192691153322169278163957643666132854363277856003737140361790085294640445720062274138021046686;
tx = 0.8256134681818185422570255744458584180469278984035455354486184781511147887366972241055345433917570298;
ty = 2.283755152997626122372696231586643096372075327304196678393596164704167339678892241020086740322335223;
tz = 1.601011429953955918500217324692424544019062607152427795303837822022504747820896625557954494676686053;
L = 9.420760102266801166259878261449852116876131665720340018292104929755573752472972181367151556781556612。
其中 r 是内切圆半径,tx、ty、tz 分别是内心到三个顶点的距离。L 是三角形周长。
经验证,3# 楼 hejoseph 给出的三次方程 2 r^3 x y z + r^2 (x^2 y^2 + x^2 z^2 + y^2 z^2) - x^2 y^2 z^2 = 0 是正确的。
其中,r 为三角形内切圆半径,x、y、z 分别是内心到各顶点的距离。
请问这个方程是如何推导出来的?这个方程的公式解能不能写出来?
另外,由 x、y、z 直接计算周长 2p 的方程似乎有误?见下面代码,其中 t、u、v 分别相当于 x、y、z:
  1. Clear["Global`*"];
  2. t = 115/100; u = 242/100; v = 179/100;
  3. W = NSolve[{4 p^6 t^2 u^2 v^2 +
  4.        p^4 (t^4 u^4 - 10 t^4 u^2 v^2 + t^4 v^4 - 10 t^2 u^4 v^2 -
  5.           10 t^2 u^2 v^4 + u^4 v^4) +
  6.        p^2 (-2 t^6 u^4 + 8 t^6 u^2 v^2 - 2 t^6 v^4 - 2 t^4 u^6 -
  7.           4 t^4 u^4 v^2 - 4 t^4 u^2 v^4 - 2 t^4 v^6 + 8 t^2 u^6 v^2 -
  8.           4 t^2 u^4 v^4 + 8 t^2 u^2 v^6 - 2 u^6 v^4 - 2 u^4 v^6) +
  9.        t^8 u^4 - 2 t^8 u^2 v^2 + t^8 v^4 - 2 t^6 u^6 +
  10.        2 t^6 u^4 v^2 + 2 t^6 u^2 v^4 - 2 t^6 v^6 + t^4 u^8 +
  11.        2 t^4 u^6 v^2 - 6 t^4 u^4 v^4 + 2 t^4 u^2 v^6 + t^4 v^8 -
  12.        2 t^2 u^8 v^2 + 2 t^2 u^6 v^4 + 2 t^2 u^4 v^6 - 2 t^2 u^2 v^8 +
  13.         u^8 v^4 - 2 u^6 v^6 + u^4 v^8 == 0, p > 0}, {p}, 100] //
  14.    Flatten;
  15. p = p /. W; Print["L = ", 2 p];
复制代码

按上面程序的计算结果是
L = 1.052449068223439820587980148019709508275978859068284244739020574036147573424436623108975350470482213;
而正确结果应该是
L = 9.420760102266801166259878261449852116876131665720340018292104929755573752472972181367151556781556612。

68

主题

434

回帖

4269

积分

积分
4269

显示全部楼层

hejoseph 发表于 2025-2-15 10:39
本帖最后由 hejoseph 于 2025-2-15 16:18 编辑 用我习惯的符号 $x$、$y$、$z$ 表示切线长,$t$、$u$、$v$ 表示内心到各顶点的距离,$p=x+y+z$,$r^2=xyz/(x+y+z)$,$t^2=x^2+r^2$,$u^2=y^2+r^2$,$v^2=z^2+r^2$,再利用平面四点决定的六长度的关系方程就可以得到结论了,如果不知道这个关系,用上面的式子逐步消去 $x$、$y$、$z$ 就行,我通常用结式法,其中内切圆半径通过数值计算去掉一个方程。想得到 $r$、$p$ 的公式直接用一元三次方程的求根公式就行,但公式会很复杂,而且可能还要根据有没有虚数根分两套公式。
上面你计算周长出现那个数值是因为那个方程有两个正根,程序选择了最小的正根而不是最大的正根,你自己求一下方程的数值解就知道了。

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2025-2-15 15:04
  1. Clear["Global`*"];
  2. t = 115/100; u = 242/100; v = 179/100;
  3. NSolve[{4 p^6 t^2 u^2 v^2 +
  4.     p^4 (t^4 u^4 - 10 t^4 u^2 v^2 + t^4 v^4 - 10 t^2 u^4 v^2 -
  5.        10 t^2 u^2 v^4 + u^4 v^4) +
  6.     p^2 (-2 t^6 u^4 + 8 t^6 u^2 v^2 - 2 t^6 v^4 - 2 t^4 u^6 -
  7.        4 t^4 u^4 v^2 - 4 t^4 u^2 v^4 - 2 t^4 v^6 + 8 t^2 u^6 v^2 -
  8.        4 t^2 u^4 v^4 + 8 t^2 u^2 v^6 - 2 u^6 v^4 - 2 u^4 v^6) +
  9.     t^8 u^4 - 2 t^8 u^2 v^2 + t^8 v^4 - 2 t^6 u^6 + 2 t^6 u^4 v^2 +
  10.     2 t^6 u^2 v^4 - 2 t^6 v^6 + t^4 u^8 + 2 t^4 u^6 v^2 -
  11.     6 t^4 u^4 v^4 + 2 t^4 u^2 v^6 + t^4 v^8 - 2 t^2 u^8 v^2 +
  12.     2 t^2 u^6 v^4 + 2 t^2 u^4 v^6 - 2 t^2 u^2 v^8 + u^8 v^4 -
  13.     2 u^6 v^6 + u^4 v^8 == 0, p > 0}, {p}, 100]
复制代码
  1. {{p->0.5262245341117199102939900740098547541379894295341421223695102870180737867122183115544876752352411065},{p->4.710380051133400583129939130724926058438065832860170009146052464877786876236486090683575778390778306}}
复制代码

这样做就对了。

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2025-2-15 16:00
  1. In[40]:= Clear[
  2.   "Global`*"];(* r 是三角形内切圆半径,x、y、z 为切线长,t、u、v 是内心到各顶点的距离 *)
  3. (* 已知 t、u、v,求 r 与 t、u、v 之间的关系 *)
  4. Eliminate[{t^2 == x^2 + r^2, u^2 == y^2 + r^2, v^2 == z^2 + r^2,
  5.   r^2 == (x y z)/(x + y + z)}, {x, y, z}](* 消去 x、y、z *)
  6. Factor[t^4 (r^4 u^4 + 2 r^4 u^2 v^2 + r^4 v^4 - 2 r^2 u^4 v^2 -
  7.      2 r^2 u^2 v^4 + u^4 v^4) +
  8.   r^2 t^2 u^2 v^2 (-4 r^4 + 2 r^2 u^2 + 2 r^2 v^2 - 2 u^2 v^2) +
  9.   r^4 u^4 v^4]
  10. Out[41]= t^4 (r^4 u^4+2 r^4 u^2 v^2+r^4 v^4-2 r^2 u^4 v^2-2 r^2 u^2 v^4+u^4 v^4)+r^2 t^2 u^2 v^2 (-4 r^4+2 r^2 u^2+2 r^2 v^2-2 u^2 v^2)==-r^4 u^4 v^4
  11. Out[42]= -(2 r^3 t u v+r^2 t^2 u^2+r^2 t^2 v^2+r^2 u^2 v^2-t^2 u^2 v^2) (2 r^3 t u v-r^2 t^2 u^2-r^2 t^2 v^2-r^2 u^2 v^2+t^2 u^2 v^2)
复制代码

以上是用软件消去 x、y、z,求出 r 与  t、u、v 关系的方法。最终得到两个方程:
2 r^3 t u v+r^2 (t^2 u^2+ t^2 v^2+ u^2 v^2) - t^2 u^2 v^2 = 0 ---------①
或者
2 r^3 t u v - r^2 (t^2 u^2+t^2 v^2+ u^2 v^2) + t^2 u^2 v^2 =0 ---------②
经检查发现只有方程 ① 能用。


119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2025-2-15 21:50
本帖最后由 TSC999 于 2025-2-15 23:13 编辑 最终得到了下面这个求周长的公式——
已知三角形内心到各顶点的距离为 t、u、v,则该三角形的周长按下式计算:
周长公式一.png

例如:
当 t = 1.15;  u = 2.42;  v = 1.79 时,周长 L = 9.420760102266801166259878261449852116876131665720340018292104929755573752472972181367151556781556612。  
当 t = 1.25;  u = 3.42;  v = 2.79 时,周长 L = 13.28975658638353901041526711872246778742418899616882665551865718064638077780880537526275481421361560。
当 t = 4.25;  u = 0.42;  v = 0.79 时,周长 L = 10.32062627408660595005197102685394287942493510046645362219261136580737861365312545443669170130161183。
当 t = 5.25;  u = 80.42; v = 0.29 时,周长 L = 171.3570492152826277983366307234776362038913998155439748953238205323541584606456877996154784599222167。

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 13:07

Powered by Discuz!

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