|

楼主 |
发表于 2025-4-1 10:25
|
显示全部楼层
本帖最后由 天山草 于 2025-4-1 10:48 编辑
先用不需要动脑子的复斜率几何方法证明此题:
为什么这种方法不需要动脑子?因为选定了某种构图方法以后,许多点的复数坐标公式事先都已算出,只须引用即可。
另一方面,直线与直线的交点坐标、点关于直线的各种镜像点、圆与直线的交点、直线线段的长度等等,也都有公式库可引用。
因而在多数情况下,用 mathematica 语言编写计算程序不会有多大困难。
程序代码如下:
- Clear["Global`*"]; (*设B在坐标原点,C在1点, kAB=u^2,kAC=1/v^2 *)
- \!\(\*OverscriptBox[\(b\), \(_\)]\) = b = 0; \!\(\*OverscriptBox[\(c\), \(_\)]\) = c = 1; a = (u^2 (v^2 - 1))/(u^2 v^2 - 1);
- \!\(\*OverscriptBox[\(a\), \(_\)]\) = (v^2 - 1)/(u^2 v^2 - 1); \!\(\*OverscriptBox[\(d\), \(_\)]\) = d = 1/2;
- (*\[EmptyUpTriangle]ABC 的外心坐标*) o = (u^2 v^2)/(u^2 v^2 - 1); \!\(\*OverscriptBox[\(o\), \(_\)]\) = 1/(1 - u^2 v^2);
- (*求E点坐标:*)
- W = {e, \!\(\*OverscriptBox[\(e\), \(_\)]\)} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - e) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(e\), \(_\)]\)), (a - d)/(
- \!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)) == (a - e)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(e\), \(_\)]\))}, {e, \!\(\*OverscriptBox[\(e\), \(_\)]\)}] // Flatten;
- e = Part[W, 1]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = Part[W, 2]; Print["E = ", e];
- (*求F点坐标:*)
- Jx2[p1_, a1_, b1_, m1_] := (\!\(\*OverscriptBox[\(a1\), \(_\)]\) (b1 + m1 - p1) - \!\(\*OverscriptBox[\(b1\), \(_\)]\) (a1 + m1 - p1) + \!\(\*OverscriptBox[\(m1\), \(_\)]\) (a1 - b1))/(\!\(\*OverscriptBox[\(a1\), \(_\)]\) -
- \!\(\*OverscriptBox[\(b1\), \(_\)]\));
- \!\(\*OverscriptBox[\(Jx2\), \(_\)]\)[p1_, a1_, b1_, m1_] := ((a1 - b1) (\!\(\*OverscriptBox[\(m1\), \(_\)]\) - \!\(\*OverscriptBox[\(p1\), \(_\)]\)) + \!\(\*OverscriptBox[\(a1\), \(_\)]\) (m1 - b1) + \!\(\*OverscriptBox[\(b1\), \(_\)]\) (a1 - m1))/(a1 - b1);
- (*上面两行:P1点关于M1点的中心对称镜像点,镜像线是A1B1 *)
- f = Simplify@Jx2[e, b, c, d]; \!\(\*OverscriptBox[\(f\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jx2\), \(_\)]\)[e, b, c, d]; Print["F = ", f];
- (*求P点坐标:*)
- W1 = {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)} /. Simplify@Solve[{(a - p)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(p\), \(_\)]\)) == -((o - a)/(\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\))), (p - c)/(
- \!\(\*OverscriptBox[\(p\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\)) == (b - c)/(\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\))}, {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)}] // Flatten;
- p = Part[W1, 1]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = Part[W1, 2]; Print["P = ", p];
- Print[Simplify[(p - a) (\!\(\*OverscriptBox[\(p\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\)) == (p - f) (\!\(\*OverscriptBox[\(p\), \(_\)]\) - \!\(\*OverscriptBox[\(f\), \(_\)]\))]]
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|