找回密码
 快速注册
搜索
查看: 489|回复: 19

借助 mathematica 在复平面上用解析几何方法作几何题示例(1)

[复制链接]

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

TSC999 发表于 2023-3-9 09:03 |阅读模式
本帖最后由 TSC999 于 2023-5-2 11:55 编辑 在复平面上借助 mathematica 用解析几何方法证明几何题。
例一:
求证平行四边形问题和图.png
程序:
求证平行四边形的程序.png
运行结果:
求证平行四边形的程序运行结果.png
程序代码:
  1. Clear["Global`*"];  (*令四边形ABCD的外接圆为单位圆且圆心在坐标系原点*)
  2. \!\(\*OverscriptBox[\(i\), \(_\)]\) = i = 0;(*四边形外接圆圆心坐标*)  
  3. \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/a;  \!\(\*OverscriptBox[\(b\), \(_\)]\) = 1/b;  \!\(\*OverscriptBox[\(c\), \(_\)]\) = 1/c; \!\(\*OverscriptBox[\(d\), \(_\)]\) = 1/d;(*四边形顶点坐标*)
  4. e = (a + b)/2; \!\(\*OverscriptBox[\(e\), \(_\)]\) = (\!\(\*OverscriptBox[\(a\), \(_\)]\) + \!\(\*OverscriptBox[\(b\), \(_\)]\))/2; f = (b + c)/2; \!\(\*OverscriptBox[\(f\), \(_\)]\) = (\!\(\*OverscriptBox[\(b\), \(_\)]\) + \!\(\*OverscriptBox[\(c\), \(_\)]\))/2; g = (c + d)/2; \!\(\*OverscriptBox[\(g\), \(_\)]\) = (\!\(\*OverscriptBox[\(c\), \(_\)]\) + \!\(\*OverscriptBox[\(d\), \(_\)]\))/2; h = (d + a)/2; \!\(\*OverscriptBox[\(h\), \(_\)]\) = (\!\(\*OverscriptBox[\(d\), \(_\)]\) + \!\(\*OverscriptBox[\(a\), \(_\)]\))/2;
  5. k = (a + c)/2; \!\(\*OverscriptBox[\(k\), \(_\)]\) = (\!\(\*OverscriptBox[\(a\), \(_\)]\) + \!\(\*OverscriptBox[\(c\), \(_\)]\))/2; m = (b + d)/2; \!\(\*OverscriptBox[\(m\), \(_\)]\) = (\!\(\*OverscriptBox[\(b\), \(_\)]\) + \!\(\*OverscriptBox[\(d\), \(_\)]\))/2;
  6. k1[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)); (* 复斜率定义 *)
  7. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\)) - k1 (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k1_, a1_, k2_, a2_] := -((a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\) - (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(  k1 - k2));
  8. Yuan[a1_, b1_,  c1_] := (( (z - b1) (a1 - c1))/( (z - c1) (a1 - b1)) - ( (\!\(\*OverscriptBox[\(z\), \(_\)]\) - \!\(\*OverscriptBox[\(b1\), \(_\)]\)) (\!\(\*OverscriptBox[\(a1\), \(_\)]\) - \!\(\*OverscriptBox[\(c1\), \(_\)]\)))/( (\!\(\*OverscriptBox[\(z\), \(_\)]\) -
  9. \!\(\*OverscriptBox[\(c1\), \(_\)]\)) (\!\(\*OverscriptBox[\(a1\), \(_\)]\) - \!\(\*OverscriptBox[\(b1\), \(_\)]\)))); (* 此表达式等于零即是经过A1B1C1三点的圆方程 *)
  10. W = {z, \!\(\*OverscriptBox[\(z\), \(_\)]\)} /.     Solve[{Yuan[f, e, k] == 0, Yuan[f, g, m] == 0, z != f}, {z, \!\(\*OverscriptBox[\(z\), \(_\)]\)}] // Flatten;
  11. n = Part[W, 1]; \!\(\*OverscriptBox[\(n\), \(_\)]\) = Part[W, 2];  Print["N = ", n];
  12. Print["测试 IK 与 MN 的复斜率是否相同,以及 IM 与 KN 的复斜率是否相同:"];
  13. Simplify[{k1[i, k] == k1[m, n], k1[i, m] == k1[k, n]}]
  14. Print["由于 kIK = kMN,kIM = kKN,故 IK//MN、IM//KN,所以 IKNM 为平行四边形。"];
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-9 09:12
本帖最后由 TSC999 于 2023-3-24 12:16 编辑 例二:
本题采用的构图法见 kuing.cjhb.site/forum.php?mod=viewthread&tid=10523&extra=page%3D1 中的方法(1) 。
有三个相似形的几何题.png
程序:
有三个相似形的几何题程序.png
运行结果:
有三个相似形的几何题程序运行结果.png

程序代码:
  1. Clear["Global`*"];
  2. (*将B点置于坐标系原点,C点坐标为1,AB的复斜率为kAB=u^4,AC的复斜率为kAC=1/v^4*)
  3. \!\(\*OverscriptBox[\(b\), \(_\)]\) = b = 0; \!\(\*OverscriptBox[\(c\), \(_\)]\) = c = 1; a = (u^4 (v^4 - 1))/( u^4 v^4 - 1);
  4. \!\(\*OverscriptBox[\(a\), \(_\)]\) = (v^4 - 1)/( u^4 v^4 - 1); (*\[EmptyUpTriangle]ABC的顶点坐标*)
  5. i = (u^2 (v^2 - 1))/(u^2 v^2 - 1); \!\(\*OverscriptBox[\(i\), \(_\)]\) = (v^2 - 1)/( u^2 v^2 - 1); (*\[EmptyUpTriangle]ABC的内心坐标*) t1 = ( u^2 (u^2 + 1) (v^2 - 1))/(2 (u^2 v^2 - 1));  
  6. \!\(\*OverscriptBox[\(t1\), \(_\)]\) = ((u^2 + 1) (v^2 - 1))/( 2 u^2 (u^2 v^2 - 1));
  7.    (*在此构图下,有上面的已知公式可引用*)
  8. e = \[Lambda] a; \!\(\*OverscriptBox[\(e\), \(_\)]\) = \[Lambda] \!\(\*OverscriptBox[\(a\), \(_\)]\); (*设E点坐标,\[Lambda]是0到1之间的正实数*)Print["E = ", e];
  9. Jx[p_, a_, b_] := (\!\(\*OverscriptBox[\(a\), \(_\)]\) b - a \!\(\*OverscriptBox[\(b\), \(_\)]\) + \!\(\*OverscriptBox[\(p\), \(_\)]\) (a - b))/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));(* P 点关于镜线的像,镜线过已知点 A、B *)
  10. \!\(\*OverscriptBox[\(Jx\), \(_\)]\)[p_, a_, b_] := (a \!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\) b+ p (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)))/(a - b);
  11. t = Simplify@Jx[t1, e, i]; \!\(\*OverscriptBox[\(t\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jx\), \(_\)]\)[t1, e, i]; Print["T = ", t];
  12. k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));(*复斜率定义*)
  13. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\)) - k1 (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  14. \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k1_, a1_, k2_, a2_] := -((a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\) - (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  15. (*复斜率等于k1且经过A1点的直线,与复斜率等于k2且经过A2点的直线,两直线的交点*)
  16. f = Simplify@Jd[k[a, c], a, k[e, t], e]; \!\(\*OverscriptBox[\(f\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[a, c], a, k[e, t], e];Print["F = ", f];
  17. Yuan[zz_, aa_, bb_, cc_] :=   Simplify[( (zz - cc) (aa - bb))/( (zz - bb) (aa - cc)) - ( (\!\(\*OverscriptBox[\(zz\), \(_\)]\) -
  18. \!\(\*OverscriptBox[\(cc\), \(_\)]\)) (\!\(\*OverscriptBox[\(aa\), \(_\)]\) - \!\(\*OverscriptBox[\(bb\), \(_\)]\)))/( (\!\(\*OverscriptBox[\(zz\), \(_\)]\) - \!\(\*OverscriptBox[\(bb\), \(_\)]\)) (\!\(\*OverscriptBox[\(aa\), \(_\)]\) - \!\(\*OverscriptBox[\(cc\), \(_\)]\)))];  (* 此表达式 = 0 即是经过三点 AA、BB、CC \的圆方程,要求的未知点坐标是 ZZ *)
  19. W1 = {j, \!\(\*OverscriptBox[\(j\), \(_\)]\)} /.     Simplify@     Solve[{Yuan[j, a, e, f] == 0, Yuan[j, a, b, c] == 0, j != a}, {j,
  20. \!\(\*OverscriptBox[\(j\), \(_\)]\)}] // Flatten;
  21. j = Part[W1, 1]; \!\(\*OverscriptBox[\(j\), \(_\)]\) = Part[W1, 2];  Print["J = ", j];
  22. W2 = {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)} /.     Simplify@     Solve[{Yuan[p, a, b, c] == 0, k[i, p] == k[i, j], p != j}, {p,
  23. \!\(\*OverscriptBox[\(p\), \(_\)]\)}] // Flatten;
  24. p = Part[W2, 1]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = Part[W2, 2];  Print["P = ", p];
  25. W3 = {q, \!\(\*OverscriptBox[\(q\), \(_\)]\)} /.     Simplify@     Solve[{Yuan[q, a, e, f] == 0, k[i, q] == k[i, j], q != j}, {q,
  26. \!\(\*OverscriptBox[\(q\), \(_\)]\)}] // Flatten;
  27. q = Part[W3, 1]; \!\(\*OverscriptBox[\(q\), \(_\)]\) = Part[W3, 2];  Print["Q = ", q];
  28. W4 = {m, \!\(\*OverscriptBox[\(m\), \(_\)]\)} /.     Simplify@     Solve[{Yuan[m, a, b, c] == 0, k[i, m] == k[i, a], m != a}, {m,
  29. \!\(\*OverscriptBox[\(m\), \(_\)]\)}] // Flatten;
  30. m = Part[W4, 1]; \!\(\*OverscriptBox[\(m\), \(_\)]\) = Part[W4, 2];  Print["M = ", m];
  31. W5 = {n, \!\(\*OverscriptBox[\(n\), \(_\)]\)} /.     Simplify@     Solve[{Yuan[n, a, e, f] == 0, k[i, n] == k[i, a], n != a}, {n,
  32. \!\(\*OverscriptBox[\(n\), \(_\)]\)}] // Flatten;
  33. n = Part[W5, 1]; \!\(\*OverscriptBox[\(n\), \(_\)]\) = Part[W5, 2];  Print["N = ", n];
  34. S[a_, b_] := (a - b) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));(*两点间的距离平方*)
  35. Print["测试\[EmptyUpTriangle]BJE∽\[EmptyUpTriangle]CJF是否成立:"]
  36. Simplify[S[j, e]/S[j, f] == S[e, b]/S[f, c] == S[j, b]/  S[j, c]](*测试\[EmptyUpTriangle]BJE∽\[EmptyUpTriangle]CJF是否成立*)
  37. Print["测试\[EmptyUpTriangle]QEF∽\[EmptyUpTriangle]PCB是否成立:"]
  38. Simplify[S[q, e]/S[p, c] == S[q, f]/S[p, b] == S[e, f]/  S[b, c]](*测试\[EmptyUpTriangle]QEF∽\[EmptyUpTriangle]PCB是否成立*)
  39. Print["测试\[EmptyUpTriangle]NEF∽\[EmptyUpTriangle]MBC是否成立:"]
  40. Simplify[S[e, n]/S[b, m] == S[n, f]/S[m, c] == S[e, f]/  S[b, c]](*测试\[EmptyUpTriangle]NEF∽\[EmptyUpTriangle]MBC是否成立*)   
  41. Print["测试 NE = NF 是否成立:"]
  42. Simplify[S[n, e] == S[n, f]](*测试 NE = NF 是否成立*)
  43. Print["测试 \[ExponentialE]^2\[ImaginaryI]\[Angle]BJI =\[ExponentialE]^2\[ImaginaryI]\[Angle]FJI 是否成立,如果成立则 \[Angle]BJI = \[Angle]FJI:"];
  44. Simplify[k[j, i]/k[j, b] == k[j, f]/k[j, i]]
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-9 10:47
例三:
平分线问题图.png
构图和设点: 将E点置于坐标系原点,ED  与实轴重合,D点坐标为 1。
程序:
平分线问题图程序.png
程序运行结果:
结果.png

代码:
  1. Clear["Global`*"];  (*将E点置于坐标系原点,D点坐标为 1,AE的复斜率为kAE=u^4,AD的复斜率为kAD=1/v^4*)
  2. \!\(\*OverscriptBox[\(e\), \(_\)]\) = e = 0; \!\(\*OverscriptBox[\(d\), \(_\)]\) = d = 1; a = (u^4 (v^4 - 1))/( u^4 v^4 - 1);
  3. \!\(\*OverscriptBox[\(a\), \(_\)]\) = (v^4 - 1)/( u^4 v^4 - 1); (*\[EmptyUpTriangle]AED的顶点坐标*)
  4. i = (u^2 (v^2 - 1))/(u^2 v^2 - 1); \!\(\*OverscriptBox[\(i\), \(_\)]\) = (v^2 - 1)/( u^2 v^2 - 1); (*\[EmptyUpTriangle]AED的内心坐标:*)
  5. (*在此构图下,有上面的已知公式可引用*)
  6. c = \[Lambda] d + (1 - \[Lambda]) e; \!\(\*OverscriptBox[\(c\), \(_\)]\) = \[Lambda] \!\(\*OverscriptBox[\(d\), \(_\)]\) + (1 - \[Lambda]) \!\(\*OverscriptBox[\(e\), \(_\)]\); (*设C点坐标,\[Lambda] 是 0 到 1 之间的实数*)
  7. k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));(*复斜率定义*)  kIC =  k[i, c];(*IC线的复斜率*)kCD = 1;(*CD线的复斜率*)
  8. kBC = kIC^2/ kCD; (*因为IC是\[Angle]BCD的平分线,所以kIC^2=kBC\[Times]kCD,故kBC=kIC^2/kCD *)
  9. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\)) - k1 (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  10. \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k1_, a1_, k2_, a2_] := -((a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\) - (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  11. (*复斜率等于k1且经过A1点的直线,与复斜率等于k2且经过A2点的直线,两直线的交点*)
  12. b = Simplify@Jd[kBC, c, k[a, e], a]; \!\(\*OverscriptBox[\(b\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[kBC, c, k[a, e], a];
  13. Yuan[a1_, b1_,    c1_] := (( (z - b1) (a1 - c1))/( (z - c1) (a1 - b1)) - ( (\!\(\*OverscriptBox[\(z\), \(_\)]\) - \!\(\*OverscriptBox[\(b1\), \(_\)]\)) (\!\(\*OverscriptBox[\(a1\), \(_\)]\) - \!\(\*OverscriptBox[\(c1\), \(_\)]\)))/( (\!\(\*OverscriptBox[\(z\), \(_\)]\) -
  14. \!\(\*OverscriptBox[\(c1\), \(_\)]\)) (\!\(\*OverscriptBox[\(a1\), \(_\)]\) - \!\(\*OverscriptBox[\(b1\), \(_\)]\)))); (* 此表达式等于零即是经过A1B1C1三点的圆方程 *)
  15. W = {z, \!\(\*OverscriptBox[\(z\), \(_\)]\)} /.     Solve[{Yuan[e, b, c] == 0, Yuan[a, e, d] == 0, z != e}, {z, \!\(\*OverscriptBox[\(z\), \(_\)]\)}] // Flatten;
  16. f = Part[W, 1]; \!\(\*OverscriptBox[\(f\), \(_\)]\) = Part[W, 2];  Print["F = ", f];
  17. Print["IF 线复斜率的平方 = ", Simplify[k[i, f]^2]];
  18. Print["BF 的复斜率与 DF 的复斜率之积 = ", Simplify[k[b, f] k[d, f]]];
  19. Print["测试上面二式是否相等:"];
  20. Simplify[k[i, f]^2 == k[b, f] k[d, f]]
  21. Print["由于 BF 的复斜率与 DF 的复斜率之积相等,所以 IF 是 \[Angle]BFD 的平分线。 "];
复制代码


119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-9 11:08
本帖最后由 TSC999 于 2023-3-9 17:52 编辑 例四:
具有内切圆的四边形ABCD的对角线将四边形分成四个三角形。证明四个三角形的内心共圆。
图.png
  构图方法令:令四边形的内切圆为单位圆 (图中绿色圆),并令 AB 边平行于实轴,且假定 A、B 点坐标为
a = u - I ;  b = v - I,又令 OE 与实轴的夹角为 2 θ,至此,ABCD 各点坐标都可确定,共有 u, v, θ 三个实数独立变量。
程序:(见程序代码)
运行结果:
结果.png
程序代码:
  1. Clear["Global`*"];  
  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0; a = u - I; \!\(\*OverscriptBox[\(a\), \(_\)]\) = u + I; b = v - I;
  3. \!\(\*OverscriptBox[\(b\), \(_\)]\) = v + I; f = -I; \!\(\*OverscriptBox[\(f\), \(_\)]\) = I;Print["A = ", a, ",  B = ", b];
  4. (* 下面求 E 点的坐标: *)
  5. e = Simplify[Cos[2 \[Theta]] + I Sin[2 \[Theta]]]; \!\(\*OverscriptBox[\(e\), \(_\)]\) =  Cos[2 \[Theta]] - I Sin[2 \[Theta]];  Print["E = ", e];
  6. (* 下面求 BC 与单位圆的切点 F1 的坐标,它是切点 F 关于 OB 的镜像。  *)
  7. Gx[p_, a_, b_] := (\!\(\*OverscriptBox[\(a\), \(_\)]\) b - a \!\(\*OverscriptBox[\(b\), \(_\)]\) + \!\(\*OverscriptBox[\(p\), \(_\)]\) (a - b))/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));(* P 点关于镜线的像,镜线过已知点 A、B *)
  8. \!\(\*OverscriptBox[\(Gx\), \(_\)]\)[p_, a_, b_] := (a \!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\) b + p (
  9. \!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)))/(a - b);
  10. f1 = Simplify[Gx[f, o, b]]; \!\(\*OverscriptBox[\(f1\), \(_\)]\) = Simplify[\!\(\*OverscriptBox[\(Gx\), \(_\)]\)[f, o, b]]; Print["F1 = ", f1];
  11. (* 下面求 AD 与单位圆的切点 F2 的坐标,它是切点 F 关于 OA 的镜像 *)
  12. f2 = Simplify[Gx[f, o, a]]; \!\(\*OverscriptBox[\(f2\), \(_\)]\) = Simplify[\!\(\*OverscriptBox[\(Gx\), \(_\)]\)[f, o, a]]; Print["F2 = ", f2];
  13. Subscript[K, OE] = Tan[2 \[Theta]]; kOE = (1 + I Subscript[K, OE])/( 1 - I Subscript[K, OE]); kDC = -kOE;
  14. (*过A1点、复斜率等于k1的直线,与过A2点、复斜率等于k2的直线的交点*)
  15. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\)) - k1 (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  16. \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k1_, a1_, k2_, a2_] := -((a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\) - (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(  k1 - k2));
  17. k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));
  18. c = Simplify@Jd[kDC, e, k[b, f1], b];  \!\(\*OverscriptBox[\(c\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[kDC, e, k[b, f1],  b]; Print["C = ", c];
  19. d = Simplify@Jd[kDC, e, k[a, f2], a];  \!\(\*OverscriptBox[\(d\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[kDC, e, k[a, f2],    a]; Print["D = ", d];
  20. p = Simplify@Jd[k[b, d], b, k[a, c], a];  \!\(\*OverscriptBox[\(p\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[b, d], b, k[a, c],    a]; Print["P = ", p];
  21. Nx[a_, b_, c_] := (a Sqrt[(b - c) (\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\))] + b Sqrt[(c - a) (\!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\))] + c Sqrt[(a - b) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\))])/(Sqrt[(b - c) (\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\))] + Sqrt[(c - a) (\!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\))] + Sqrt[(a - b) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\))]);
  22. \!\(\*OverscriptBox[\(Nx\), \(_\)]\)[a_, b_, c_] := (\!\(\*OverscriptBox[\(a\), \(_\)]\) Sqrt[(b - c) (\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\))] + \!\(\*OverscriptBox[\(b\), \(_\)]\) Sqrt[(c - a) (\!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\))] + \!\(\*OverscriptBox[\(c\), \(_\)]\) Sqrt[(a - b) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\))])/(Sqrt[(b - c) (\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\))] + Sqrt[(c - a) (\!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\))] + Sqrt[(a - b) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\))]); (* 已知三角形顶点求内心的坐标 *)
  23. i1 = FunctionExpand[ Nx[a, b, p], {u,     v, \[Theta]} \[Element] \[DoubleStruckCapitalR]];(*这个指令运行速度最快*)
  24. i2 = FunctionExpand[ Nx[b, c, p], {u, v, \[Theta]} \[Element] \[DoubleStruckCapitalR]];
  25. i3 = FunctionExpand[ Nx[d, c, p], {u, v, \[Theta]} \[Element] \[DoubleStruckCapitalR]];
  26. i4 = FunctionExpand[ Nx[d, a, p], {u, v, \[Theta]} \[Element] \[DoubleStruckCapitalR]];
  27. (*Print["I1=",i1];  Print["I2=",i2]; Print["I3=",i3]; Print["I4=",i4];*)
  28. (* 下面检验 I1, I2, I3, I4 是否共圆: *)
  29. Z = ((I1 - I3) (I2 - I4))/((I1 - I4) (I2 - I3));(*交比*)zz = "(I1-I3)(I2-I4)/((I1-I4)(I2-I3))";
  30. Imz = ComplexExpand[Im[Z]];(*交比的虚部*)Print["交比为 = ", zz];
  31. Imz
  32. Print["经计算,上述交比虚部的值为零,所以四内心共圆"];
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-9 21:25
例五:
求角度DEB.png
运行结果:
求角度结果.png

注:最后求角度时用的是 FullSimplify@Solve  指令,因而算出的结果是准确值。

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-10 08:33
本帖最后由 TSC999 于 2023-3-10 08:40 编辑 例六:
题和图.png
用 mathematica 写的计算程序:
程序.png
程序运行结果:
结果.png
说明: 由于各点坐标的表达式比较复杂,因而程序中没有写出打印各点坐标的语句。
程序代码:
  1. Clear["Global`*"];  
  2. \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/a; \!\(\*OverscriptBox[\(b\), \(_\)]\) = 1/b; \!\(\*OverscriptBox[\(c\), \(_\)]\) = 1/c; p = u + I v; \!\(\*OverscriptBox[\(p\), \(_\)]\) = u - I v; k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));(*复斜率定义*)
  3. (*过A1点、复斜率等于k1的直线,与过A2点、复斜率等于k2的直线的交点*)
  4. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\)) - k1 (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  5. \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k1_, a1_, k2_, a2_] := -((a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\) - (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));a1 = Simplify@Jd[k[a, p], a, k[b, c], b];
  6. \!\(\*OverscriptBox[\(a1\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[a, p], a, k[b, c], b];
  7. b1 = Simplify@Jd[k[b, p], b, k[a, c], a]; \!\(\*OverscriptBox[\(b1\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[b, p], b, k[a, c], a];
  8. c1 = Simplify@Jd[k[c, p], c, k[a, b], a]; \!\(\*OverscriptBox[\(c1\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[c, p], c, k[a, b], a];
  9. q = \[Lambda] c1 + (1 - \[Lambda]) c; \!\(\*OverscriptBox[\(q\), \(_\)]\) = \[Lambda] \!\(\*OverscriptBox[\(c1\), \(_\)]\) + (1 - \[Lambda]) \!\(\*OverscriptBox[\(c\), \(_\)]\);
  10. d = Simplify@Jd[k[a, q], a, k[c1, a1], c1]; \!\(\*OverscriptBox[\(d\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[a, q], a, k[c1, a1], c1];
  11. z1 = Simplify@Jd[k[a, b], a, k[b1, q], b1]; \!\(\*OverscriptBox[\(z1\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[a, b], a, k[b1, q], b1];
  12. z2 = Simplify@Jd[k[c, d], c, k[b1, q], b1]; \!\(\*OverscriptBox[\(z2\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[c, d], c, k[b1, q], b1];
  13. z3 = Simplify@Jd[k[c, d], c, k[a, b], a];
  14. \!\(\*OverscriptBox[\(z3\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[c, d], c, k[a, b], a];
  15. Print["AB、B1Q、CD 三条直线两两交于 Z1、Z2、Z3 点。下面测试这三个交点是否重合:"]
  16. Simplify[z1 == z2 == z3]
  17. Print["由于 Z1、Z2、Z3 三点坐标完全相同,所以它们交于一点,故 AB、B1Q、CD 三线共点。"]
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-14 11:00
本帖最后由 TSC999 于 2023-3-14 11:20 编辑 例七:
图.png
程序:
程序.png
运行结果:
运行结果.png
程序代码:
  1. Clear["Global`*"];
  2. \!\(\*OverscriptBox[\(a\), \(_\)]\) = a = 0; \!\(\*OverscriptBox[\(b\), \(_\)]\) = b = 1; c = 1 + I;
  3. \!\(\*OverscriptBox[\(c\), \(_\)]\) = 1 - I; d = 0 + I; \!\(\*OverscriptBox[\(d\), \(_\)]\) = 0 - I; m = 1/2 + I;
  4. \!\(\*OverscriptBox[\(m\), \(_\)]\) = 1/2 - I;n = 1 + 3/4 I; \!\(\*OverscriptBox[\(n\), \(_\)]\) = 1 - 3/4 I; k = (m + n)/2;
  5. \!\(\*OverscriptBox[\(k\), \(_\)]\) = (\!\(\*OverscriptBox[\(m\), \(_\)]\) + \!\(\*OverscriptBox[\(n\), \(_\)]\))/2;
  6. kF[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)); (* 复斜率定义 *)
  7. W = {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)} /.    Solve[{kF[p, c] == 1, kF[p, n] == -kF[a, n] }, {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)}] // Flatten;
  8. p = Part[W, 1]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = Part[W, 2];
  9. tan\[Angle][a_, b_, c_] :=   I (kF[b, a] - kF[b, c])/(   kF[b, a] + kF[b, c]); (* 从AB边逆时针转到BC边的有向角\[Angle]ABC的正切 *)
  10. tan\[Angle]PAM = tan\[Angle][p, a, m]; tan\[Angle]NAK =  tan\[Angle][n, a, k];
  11. Print["\[Angle]PAM 的正切值 =", tan\[Angle]PAM]
  12. Print["\[Angle]NAK 的正切值 =", tan\[Angle]NAK]
  13. Print["由于 tan(\[Angle]PAM) = tan(\[Angle]NAK),所以 \[Angle]PAM = \[Angle]NAK "]
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-17 10:35
例八:
题目.png
方法:
方法简述.png
程序:
程序.png
运行结果:
结果.png
程序代码:
  1. Clear["Global`*"];
  2. \!\(\*OverscriptBox[\(b\), \(_\)]\) = b = 0; \!\(\*OverscriptBox[\(c\), \(_\)]\) = c = 1; a = u + I v;
  3. \!\(\*OverscriptBox[\(a\), \(_\)]\) = u - I v; \!\(\*OverscriptBox[\(d\), \(_\)]\) = d;  \!\(\*OverscriptBox[\(u\), \(_\)]\) = u;  
  4. \!\(\*OverscriptBox[\(v\), \(_\)]\) = v; k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));(*复斜率定义*)
  5. WX[a_, b_, c_] := (a \!\(\*OverscriptBox[\(a\), \(_\)]\) (c - b) + b \!\(\*OverscriptBox[\(b\), \(_\)]\) (a - c) + c \!\(\*OverscriptBox[\(c\), \(_\)]\) (b - a))/(\!\(\*OverscriptBox[\(a\), \(_\)]\) (c - b) + \!\(\*OverscriptBox[\(b\), \(_\)]\) (a - c) +
  6. \!\(\*OverscriptBox[\(c\), \(_\)]\) (b - a)); (* 三角形的外心坐标*)
  7. \!\(\*OverscriptBox[\(WX\), \(_\)]\)[a_, b_, c_] := (\!\(\*OverscriptBox[\(a\), \(_\)]\) (\!\(\*OverscriptBox[\(b\), \(_\)]\) (a - b) +
  8. \!\(\*OverscriptBox[\(c\), \(_\)]\) (c - a)) + \!\(\*OverscriptBox[\(b\), \(_\)]\) \!\(\*OverscriptBox[\(c\), \(_\)]\) (b - c))/(\!\(\*OverscriptBox[\(a\), \(_\)]\) (c - b) + \!\(\*OverscriptBox[\(b\), \(_\)]\) (a - c) + \!\(\*OverscriptBox[\(c\), \(_\)]\) (b - a));
  9. o = Simplify@WX[a, d, c]; \!\(\*OverscriptBox[\(o\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(WX\), \(_\)]\)[a, d, c]; Print["o = ", o];
  10. W = {e, \!\(\*OverscriptBox[\(e\), \(_\)]\)} /.     Simplify@Solve[{k[a, d] == k[a, e], k[b, e] == -k[a, d]}, {e, \!\(\*OverscriptBox[\(e\), \(_\)]\)}] // Flatten;
  11. e = Part[W, 1]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = Part[W, 2]; Print["e = ", e];
  12. W1 = {u, v} /. Simplify@Solve[{(a - c) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\)) == (d - c) (
  13. \!\(\*OverscriptBox[\(d\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\)), k[a, b] == -k[o, a],  v != 0}, {u, v}] // Flatten;
  14. u = Part[W1, 1]; v = Part[W1, 2]; Print["u = ", u, ",   v = ", v]; a = Simplify[u + I v];
  15. \!\(\*OverscriptBox[\(a\), \(_\)]\) =  Simplify[u - I v]; Print["a = ", a, ",  \!\(\*OverscriptBox[\(a\), \(_\)]\) = ",
  16. \!\(\*OverscriptBox[\(a\), \(_\)]\)];
  17. e = Simplify[Part[W, 1] /. {u -> Part[W1, 1], v -> Part[W1, 2]}];
  18. \!\(\*OverscriptBox[\(e\), \(_\)]\) =  Simplify[Part[W, 2] /. {u -> Part[W1, 1],  v -> Part[W1, 2]}]; Print["e = ", e, ",  \!\(\*OverscriptBox[\(e\), \(_\)]\) \= ", \!\(\*OverscriptBox[\(e\), \(_\)]\)];
  19. AE2 = Simplify[(a - e) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(e\), \(_\)]\))]; EC2 = Simplify[(e - c) (
  20. \!\(\*OverscriptBox[\(e\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\))];
  21. Print["d 应满足的方程为:  ", Factor[AE2 - EC2], " = 0"]; (* AE^2 = EC^2 *)
  22. Print["舍去 d = 1,解方程  ", d^2 - 4 d + 2 , " = 0,0 < d < 1,得:"]
  23. W2 = {d} /. Solve[{d^2 - 4 d + 2 == 0, 0 < d < 1}, d] // Flatten;
  24. d = Part[W2, 1]; Print["d = ", d];
  25. a = Simplify[a /. {d -> Part[W2, 1]}]; \!\(\*OverscriptBox[\(a\), \(_\)]\) =  Simplify[-(1/2) Sqrt[d - 4] Sqrt[d] (d - 1) - 1/2 (d - 3) d /. {d -> Part[W2, 1]}];
  26. Print["a = ", ComplexExpand[a]];
  27. tan\[Angle][a_, b_, c_] :=  I (k[b, a] - k[b, c])/(k[b, a] + k[b, c]);(*从AB边逆时针转到BC边的有向角\[Angle]ABC的正切*)
  28. \[Angle]BCA = Simplify[tan\[Angle][b, c, a]];
  29. Print["\[Angle]BCA = ", ArcTan[\[Angle]BCA]];
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-20 16:40
例九:
证明交点是不变量题图.png
这个题用复平面上的解析几何做是非常简单的。构图和设点方法为:设圆 O 为单位圆,圆心在坐标系原点。
H 点的坐标设为变量,令 H 点的坐标为 \(h=u+i v\),由于 H 在单位圆上,故 H 点的共轭坐标为 \(\overline{h}=1/h\) 。由此可求出\(BH\)线与圆O及椭圆的交点\(D\)、\(P\)的坐标。然后再算出\(PA\) 线与椭圆的交点 \(C\) 的坐标。继续算出\(CB\) 线与圆O的交点 \(F\) 的坐标。最后算出\(CD\) 与\(PF\) 线的交点\(E\)以及\(DF\) 线与\(OB\) 线的交点\(G\) 的坐标。
结果是 \(E\) 点坐标和 \(G\) 点坐标都是常数,都与 \(H\) 点的坐标无关。
在程序中点的名称都用大写字母表示,点的复数坐标都用小写字母表示。小写字母上加一横线表示其共轭复数。在这个计算体系中,点的坐标算出后,往往需要同时算出它的共轭复数。
用 mathematica 写的程序:
证明交点是不变量题图程序.png
运行结果:
证明交点是不变量题图程序运行结果.png
程序代码:
  1. Clear["Global`*"];
  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0; a = I; \!\(\*OverscriptBox[\(a\), \(_\)]\) = -I; b = I/2;
  3. \!\(\*OverscriptBox[\(b\), \(_\)]\) = -I/2; h = u + I v; \!\(\*OverscriptBox[\(h\), \(_\)]\) = 1/h;
  4. W1 = {d, \!\(\*OverscriptBox[\(d\), \(_\)]\)} /. Simplify@Solve[{(d - 0) (\!\(\*OverscriptBox[\(d\), \(_\)]\) - 0) == 1, (h - b)/(\!\(\*OverscriptBox[\(h\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (d - b)/(\!\(\*OverscriptBox[\(d\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)), d != h}, {d, \!\(\*OverscriptBox[\(d\), \(_\)]\)}] // Flatten;d = Part[W1, 1];
  5. \!\(\*OverscriptBox[\(d\), \(_\)]\) = Part[W1, 2]; Print["D = ", d];
  6. W2 = {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)} /. Simplify@Solve[{(p + \!\(\*OverscriptBox[\(p\), \(_\)]\))^2/20 - (p - \!\(\*OverscriptBox[\(p\), \(_\)]\))^2/16  == 1, (h - b)/(\!\(\*OverscriptBox[\(h\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (h - p)/(\!\(\*OverscriptBox[\(h\), \(_\)]\) - \!\(\*OverscriptBox[\(p\), \(_\)]\))}, {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)}] // Flatten;
  7. p = Part[W2, 1]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = Part[W2, 2]; Print["P = ", p];
  8. W3 = {c, \!\(\*OverscriptBox[\(c\), \(_\)]\)} /. Simplify@Solve[{(c + \!\(\*OverscriptBox[\(c\), \(_\)]\))^2/20 - (c -
  9. \!\(\*OverscriptBox[\(c\), \(_\)]\))^2/16  == 1, (a - c)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\)) == (a - p)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(p\), \(_\)]\)), c != p}, {c, \!\(\*OverscriptBox[\(c\), \(_\)]\)}] // Flatten;
  10. c = Part[W3, 1]; \!\(\*OverscriptBox[\(c\), \(_\)]\) = Part[W3, 2]; Print["C = ", c];
  11. W4 = {f, \!\(\*OverscriptBox[\(f\), \(_\)]\)} /. Simplify@Solve[{(f - 0) (\!\(\*OverscriptBox[\(f\), \(_\)]\) - 0) == 1, (f - b)/(\!\(\*OverscriptBox[\(f\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (c - b)/(\!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\))}, {f, \!\(\*OverscriptBox[\(f\), \(_\)]\)}] // Flatten;
  12. f = Part[W4, 3]; \!\(\*OverscriptBox[\(f\), \(_\)]\) = Part[W4, 4]; Print["F = ", f];
  13. W5 = {e, \!\(\*OverscriptBox[\(e\), \(_\)]\)} /. Simplify@Solve[{(c - d)/(\!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)) == (d - e)/(\!\(\*OverscriptBox[\(d\), \(_\)]\) - \!\(\*OverscriptBox[\(e\), \(_\)]\)), (p - f)/(\!\(\*OverscriptBox[\(p\), \(_\)]\) - \!\(\*OverscriptBox[\(f\), \(_\)]\)) == (f - e)/(\!\(\*OverscriptBox[\(f\), \(_\)]\) - \!\(\*OverscriptBox[\(e\), \(_\)]\))}, {e,
  14. \!\(\*OverscriptBox[\(e\), \(_\)]\)}] // Flatten;
  15. e = Part[W5, 1]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = Part[W5, 2]; Print["E = ", e];
  16. W6 = {g, \!\(\*OverscriptBox[\(g\), \(_\)]\)} /. Simplify@Solve[{(f - d)/(\!\(\*OverscriptBox[\(f\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)) == (d - g)/(\!\(\*OverscriptBox[\(d\), \(_\)]\) - \!\(\*OverscriptBox[\(g\), \(_\)]\)), (o - b)/(\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - g)/(\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(g\), \(_\)]\))}, {g, \!\(\*OverscriptBox[\(g\), \(_\)]\)}] // Flatten;
  17. g = Part[W6, 1]; \!\(\*OverscriptBox[\(g\), \(_\)]\) = Part[W6, 2]; Print["G = ", g];
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-24 10:31
本帖最后由 TSC999 于 2023-3-24 20:30 编辑 例十:证明泰博定理。
本题采用的构图法见 kuing.cjhb.site/forum.php?mod=viewthread&tid=10523&extra=page%3D1 中的方法(1) 。
证明泰博定理图.png
程序:
证明泰博定理图程序.png
运行结果:
结果.png
程序代码:
  1. Clear["Global`*"];  (*三个自由变量是 u,v,w,其中 u^4,1/v^4,w^2 分别是 AB、AC、AX 的复斜率 *)
  2. (*\[EmptyUpTriangle]ABC 的内心坐标*)  i = (u^2 (v^2 - 1))/(u^2 v^2 - 1); \!\(\*OverscriptBox[\(i\), \(_\)]\) = (v^2 - 1)/(
  3. u^2 v^2 - 1); (*内切圆半径*) r = (I (u^2 - 1) (v^2 - 1))/(2 (1 - u^2 v^2));
  4. a = (u^4 (v^4 - 1))/(u^4 v^4 - 1); \!\(\*OverscriptBox[\(a\), \(_\)]\) = (v^4 - 1)/(u^4 v^4 - 1);  
  5. \!\(\*OverscriptBox[\(b\), \(_\)]\) = b = 0; \!\(\*OverscriptBox[\(c\), \(_\)]\) = c = 1; Print["a = ", a];
  6. (*\[EmptyUpTriangle]ABC 的外心坐标*)  o = (u^4 v^4)/(u^4 v^4 - 1); \!\(\*OverscriptBox[\(o\), \(_\)]\) = 1/(1 - u^4 v^4); (*外接圆半径*) R = ( I u^2 v^2)/(u^4 v^4 - 1); Print["o = ", o]; Print["外接圆半径 R = ", R];
  7. m = (u^2 v^2)/(u^2 v^2 - 1);  \!\(\*OverscriptBox[\(m\), \(_\)]\) = 1/(1 - u^2 v^2);
  8. kf[a1_, b1_] := (a1 - b1)/(\!\(\*OverscriptBox[\(a1\), \(_\)]\) - \!\(\*OverscriptBox[\(b1\), \(_\)]\)); (* 复斜率定义 *)
  9. (* 以下求\[Angle]BXA平分线 m1 的复斜率, 由于BC的复斜率 kBC=1,AX 的复斜率 kAX=w^2, 所以角平分线的复斜率 km1=w  *)
  10. (* \[Angle]AXC平分线 m2 与 m1 垂直,所以直线 m2 的复斜率 km2=-w。另外因直线 KI//m2,故 KI的复斜率也等于 -w *)
  11. km1 = w; km2 = -w; kAX = w^2;
  12. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\)) - k1 (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  13. \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k1_, a1_, k2_, a2_] := -((a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\) - (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2)); (*复斜率等于k1,过点A1与复斜率等于k2,过点A2的直线交点*)
  14. x = Simplify@ Jd[kAX, a, 1, b]; \!\(\*OverscriptBox[\(x\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[kAX, a, 1, b]; Print["x = ", x];
  15. k = Simplify@ Jd[km2, i, 1, b]; \!\(\*OverscriptBox[\(k\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[km2, i, 1, b]; Print["k = ", k];
  16. p = Simplify@ Jd[km1, i, 1, b];
  17. \!\(\*OverscriptBox[\(p\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[km1, i, 1, b]; Print["p = ", p];
  18. (* Subscript[以下求I, 1]点的复坐标。它是两直线的交点,一条是复斜率为-1、经过K点的线,另一条是复斜率为 km1、经过X点的线 *)
  19. i1 = Simplify@ Jd[-1, k, km1, x]; \!\(\*OverscriptBox[\(i1\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[-1, k, km1,
  20.    x]; Print["i1 = ", i1];
  21. (* Subscript[以下求I, 2]点的复坐标。它是两直线的交点,一条是复斜率为-1、经过P点的线,另一条是复斜率为 km2、经过X点的线 *)
  22. i2 = Simplify@ Jd[-1, p, km2, x]; \!\(\*OverscriptBox[\(i2\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[-1, p, km2,
  23.    x]; Print["i2 = ", i2];
  24. kI1I = Simplify[kf[i1, i]];  (* Subscript[I, 1]I的复斜率 *) kI2I = Simplify[kf[i2, i]];  (* Subscript[I, 2]I的复斜率 *)  
  25. Print["\!\(\*SubscriptBox[\(I\), \(1\)]\)I的复斜率 = ", kI1I];Print["\!\(\*SubscriptBox[\(I\), \(2\)]\)I的复斜率 = ", kI2I];
  26. If[kI1I == kI2I, Print[ "由于二者复斜率相等,所以 I1、I、I2三点共线。"]];
  27. r1 = Simplify[(i1 - k)/I];(*r1的圆半径*) r2 = Simplify[(i2 - p)/I];(*r2的圆半径*)
  28. Print["\!\(\*SubscriptBox[\(I\), \(1\)]\)圆半径 r1 = ", r1]; Print["\!\(\*SubscriptBox[\(I\), \(2\)]\)圆半径 r2 = ", r2];
  29. Print["下面求圆I1与圆O的交点: "];
  30. W1 = {t1, \!\(\*OverscriptBox[\(t1\), \(_\)]\)} /. Simplify[Solve[{(i1 - t1) (\!\(\*OverscriptBox[\(i1\), \(_\)]\) -
  31. \!\(\*OverscriptBox[\(t1\), \(_\)]\)) == r1^2, (o - t1) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(t1\), \(_\)]\)) == R^2}, {t1, \!\(\*OverscriptBox[\(t1\), \(_\)]\)}]] // Flatten
  32. Print["上式表明圆 \!\(\*SubscriptBox[\(I\), \(1\)]\)与圆O的交点只有一个,因此两圆相切。上式中第一项是 t1,第二项是 \!\(\*OverscriptBox[\(t1\), \(_\)]\)。"];t1 = Part[W1, 1]; \!\(\*OverscriptBox[\(t1\), \(_\)]\) = Part[W1, 2];  
  33. W2 = {t2, \!\(\*OverscriptBox[\(t2\), \(_\)]\)} /. Simplify[Solve[{(i2 - t2) (\!\(\*OverscriptBox[\(i2\), \(_\)]\) -
  34. \!\(\*OverscriptBox[\(t2\), \(_\)]\)) == r2^2, (o - t2) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(t2\), \(_\)]\)) == R^2}, {t2, \!\(\*OverscriptBox[\(t2\), \(_\)]\)}]] // Flatten
  35. Print["上式表明圆 \!\(\*SubscriptBox[\(I\), \(2\)]\)与圆O的交点只有一个,因此两圆相切。上式中第一项是 t2,第二项是 \!\(\*OverscriptBox[\(t2\), \(_\)]\)。"];t2 = Part[W2, 1]; \!\(\*OverscriptBox[\(t2\), \(_\)]\) = Part[W2, 2];  
  36. kT1K = Simplify[kf[t1, k]];  kKM = Simplify[kf[k, m]];
  37. Print["T1K的复斜率 = ", kT1K]; Print["KM的复斜率 = ", kKM];
  38. If[kT1K == kKM, Print["由于T1K的复斜率 = KM的复斜率,所以 T1、K、M 三点共线 "]];
  39. kT2P = Simplify[kf[t2, p]];  kPM = Simplify[kf[p, m]];Print["T2P的复斜率 = ", kT2P]; Print["PM的复斜率 = ", kPM];
  40. If[kT2P == kPM, Print["由于二者复斜率相等,所以 T2、P、M 三点共线。 "]];
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-26 22:17
本帖最后由 TSC999 于 2023-3-26 22:33 编辑 例十一:
看到此论坛有人提出一个三角形的所谓【奔驰定理】kuing.cjhb.site/forum.php?mod=viewthread&tid=10561&extra=page%3D1,问题如下:
奔驰定理题图.png
这个题用复平面解析几何方法做是非常简单的,下面采用不同的三种构图方法做。
第一种构图,令△ABC的外接圆为单位圆,BC边平行于实轴,再令 AB、AC 的复斜率分别为 u^2 和 v^2。
奔驰定理程序一.png
第二种构图,令△ABC的B、A点坐标分别为 0、1,AB的复斜率为 u^4,AC的复斜率为 1/(v^4)。
奔驰定理程序二.png
第三种构图,令△ABC的外接圆为单位圆,各顶点坐标为 a = u^2、b = v^2、c = w^2。
奔驰定理程序三.png

注意,无论哪一种构图,在调用三角形面积的子函数时,要注意面积是“有方向的”,即 S[p, b, c]、S[p, c, a]、S[p, a, b] 的字母顺序都是逆时针方向环绕的。例如 S[p, c, a] 不能写成 S[p, a, c],否则前面要加上一个负号才行。

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-3-27 19:22
本帖最后由 TSC999 于 2023-3-27 22:02 编辑 例十二:
五线共点题图.png
程序:
五线共点题程序.png
运行结果:
五线共点题程序结果.png
程序代码略。

按 u = -0.2851;  v = 0.7571 作出两组解的图形。左图是第二组解,右图是第一组解。

两组解的图形示例.png

另外发现,无论哪个图都有 GD = CJ;  FC = IB;  HA = JB;  IA = GE;  HE = FD。

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-4-6 11:05
例十三:
四点共圆题.png
程序:
四点共圆题程序.png
运行结果:
结果.png

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-4-6 21:16
本帖最后由 TSC999 于 2023-4-6 22:02 编辑 例十四:
六点共圆题图.png
程序:
六点共圆题图程序.png
运行结果:
六点共圆题图程序结果.png

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-4-16 10:14
本帖最后由 TSC999 于 2023-4-16 10:45 编辑 例 十 五:
题 FB 等于 FN 图.png
程序:
程序.png
程序运行结果:
结果.png

这道题如果用 \(t\) 和 \(c\)  表示 \( F、H、N\)  点的坐标,坐标表达式中将会出现许多根号,即不是有理式。如此,后续计算 MMA 将不能胜任,会一直运行不停,给不出结果。为此引入了一个 \(v\)  参数,解决方法与以上各题不同, 而是设法判断目标多项式是否为零。

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-4-23 08:19
例 十 六:
四线共点题.png
程序及运行结果:
四线共点题程序及运行结果.png
程序代码:
  1. Clear["Global`*"];(*令三角形ABC的外接圆为单位圆O,BC边平行于实轴,再令AB、AC的复斜率分别为u^2、v^2、BD的复斜率为w^2*)
  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0; a = I u v;   \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/(I u v); b = (I u)/v;  
  3. \!\(\*OverscriptBox[\(b\), \(_\)]\) = v/(I u);  c = (I v)/u;  \!\(\*OverscriptBox[\(c\), \(_\)]\) = u/(I v);
  4. k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));
  5. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\)) - k1 (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  6. \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k1_, a1_, k2_, a2_] := -((a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\) - (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  7. W1 = {d, \!\(\*OverscriptBox[\(d\), \(_\)]\)} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - d) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)), k[b, d] == w^2}, {d, \!\(\*OverscriptBox[\(d\), \(_\)]\)}] // Factor // Flatten;
  8. d = Part[W1, 1]; \!\(\*OverscriptBox[\(d\), \(_\)]\) = Part[W1, 2];
  9. p = Simplify@Jd[k[b, d], b, k[c, a], c]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[b, d], b, k[c, a], c];
  10. kBC = 1; kAB = u^2; kAC = v^2; kBD = w^2; kAD =  Simplify@k[a, d]; kAD = v^2 w^2; kCD = Simplify@k[c, d]; kCD = (
  11. v^2 w^2)/u^2;
  12. kBI1 = Simplify[Sqrt[kAB kBD]]; kBI1 = u w; kAI1 =  Simplify[Sqrt[kAB kAC]]; kAI1 = -u v;
  13. i1 = Simplify@Jd[kAI1, a, kBI1, b]; \!\(\*OverscriptBox[\(i1\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[kAI1, a, kBI1, b];
  14. kBI2 = Simplify[Sqrt[kBC kBD]]; kBI2 = w; kCI2 =  Simplify[Sqrt[kBC kAC]]; kCI2 = v;
  15. i2 = Simplify@Jd[kBI2, b, kCI2, c]; \!\(\*OverscriptBox[\(i2\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[kBI2, b, kCI2, c];
  16. kCI3 = Simplify[Sqrt[kAC kCD]]; kCI3 = (v^2 w)/u; kDI3 =  Simplify[Sqrt[kBD kCD]]; kDI3 = -((v w^2)/u);
  17. i3 = Simplify@Jd[kDI3, d, kCI3, c]; \!\(\*OverscriptBox[\(i3\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[kDI3, d, kCI3, c];
  18. kAI4 = Simplify[Sqrt[kAC kAD]]; kAI4 = v^2 w; kDI4 =  Simplify[Sqrt[kAD kBD]]; kDI4 = v w^2;
  19. i4 = Simplify@Jd[kAI4, a, kDI4, d]; \!\(\*OverscriptBox[\(i4\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[kAI4, a, kDI4, d];
  20. W2 = {e} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - e) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/e), (o - e)/(\!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/e) == -k[a, b]}, {e}] // Flatten;
  21. e = Part[W2, 2]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = 1/e;f = -I; \!\(\*OverscriptBox[\(f\), \(_\)]\) = I;
  22. W3 = {g} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - g) (
  23. \!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/g), (o - g)/(\!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/g) == -k[c, d]}, {g}] // Flatten;
  24. g = Part[W3, 2]; \!\(\*OverscriptBox[\(g\), \(_\)]\) = 1/g;W4 = {h} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) -
  25. \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - h) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/h), (o - h)/(\!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/h) == -k[a, d]}, {h}] // Flatten;
  26. h = Part[W4, 2]; \!\(\*OverscriptBox[\(h\), \(_\)]\) = 1/h;
  27. q1 = Simplify@Jd[k[e, i1], e, k[f, i2], f] // Factor
  28. q2 = Simplify@Jd[k[f, i2], f, k[g, i3], g] // Factor
  29. q3 = Simplify@Jd[k[g, i3], g, k[h, i4], h] // Factor
  30. q4 = Simplify@Jd[k[h, i4], h, k[e, i1], e] // Factor
  31. Simplify[q1 == q2 == q3 == q4]
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-4-25 16:29
例 十 七:
矩形题及程序及结果.png
程序代码:
  1. Clear["Global`*"];(*令△ABC的外接圆为单位圆O,BC边平行于实轴,再令AB、AC的复斜率分别为u^2、v^2、BD的复斜率为w^2*)
  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0; a = I u v; \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/(I u v); b = (I u)/v;  
  3. \!\(\*OverscriptBox[\(b\), \(_\)]\) = v/(I u);  c = (I v)/u;  \!\(\*OverscriptBox[\(c\), \(_\)]\) = u/(I v);
  4. k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));
  5. (*直线 AB 与 CD 的交点*)
  6. Jd1[a_, b_, c_, d_] := ((\!\(\*OverscriptBox[\(c\), \(_\)]\) d - c \!\(\*OverscriptBox[\(d\), \(_\)]\)) (a - b) - (\!\(\*OverscriptBox[\(a\), \(_\)]\) b - a \!\(\*OverscriptBox[\(b\), \(_\)]\)) (c - d))/((a - b) (\!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)) - (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) (c - d));
  7. \!\(\*OverscriptBox[\(Jd1\), \(_\)]\)[a_, b_, c_, d_] := -(((c \!\(\*OverscriptBox[\(d\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\) d) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) - ( a \!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\) b) (\!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)))/((a - b) (
  8. \!\(\*OverscriptBox[\(c\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)) - (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) (c - d)));
  9. W1 = {d, \!\(\*OverscriptBox[\(d\), \(_\)]\)} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - d) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)), k[b, d] == w^2}, {d, \!\(\*OverscriptBox[\(d\), \(_\)]\)}] // Factor // Flatten;
  10. d = Part[W1, 1]; \!\(\*OverscriptBox[\(d\), \(_\)]\) = Part[W1, 2];
  11. W2 = {e} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - e) (
  12. \!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/e), (o - e)/(\!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/e) == -k[a, b]}, {e}] // Flatten;
  13. e = Part[W2, 2]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = 1/e;
  14. f = -I; \!\(\*OverscriptBox[\(f\), \(_\)]\) = I;
  15. W3 = {g} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - g) (
  16. \!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/g), (o - g)/(\!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/g) == -k[c, d]}, {g}] // Flatten;
  17. g = Part[W3, 2]; \!\(\*OverscriptBox[\(g\), \(_\)]\) = 1/g;
  18. W4 = {h} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - h) (
  19. \!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/h), (o - h)/(\!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/h) == -k[a, d]}, {h}] // Flatten;
  20. h = Part[W4, 2]; \!\(\*OverscriptBox[\(h\), \(_\)]\) = 1/h;
  21. p = Simplify@Jd1[e, d, b, h]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd1\), \(_\)]\)[e, d, b, h];
  22. q = Simplify@Jd1[a, f, c, e]; \!\(\*OverscriptBox[\(q\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd1\), \(_\)]\)[a, f, c, e];
  23. r = Simplify@Jd1[d, f, b, g]; \!\(\*OverscriptBox[\(r\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd1\), \(_\)]\)[d, f, b, g];
  24. s = Simplify@Jd1[a, g, c, h]; \!\(\*OverscriptBox[\(s\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd1\), \(_\)]\)[a, g, c, h];
  25. Print["P = ", p, ",  Q = ", q, ",  R = ", r, ",  S = ", s];
  26. Print["测试PQRS的四个角是否都是直角:"];
  27. Simplify[k[p, q] == -k[p, s]]
  28. Simplify[k[q, p] == -k[q, r]]
  29. Simplify[k[r, q] == -k[r, s]]
  30. Simplify[k[s, r] == -k[s, p]]
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-4-26 21:02
本帖最后由 TSC999 于 2023-4-27 21:41 编辑 例 十 八:
证明 N 是中点题11.png
程序和运行结果:
证明 N 是中点题和程序11.png
程序代码:
  1. Clear["Global`*"];(* 设EB、EC的复斜率分别为 kEB=u^2; kEC=-u^2; kBC=1;以及D点对横轴的倾角为\[Theta] *)
  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0; \!\(\*OverscriptBox[\(b\), \(_\)]\) = b = -1;
  3. \!\(\*OverscriptBox[\(c\), \(_\)]\) = c = 1; e = u^2; \!\(\*OverscriptBox[\(e\), \(_\)]\) = 1/u^2;
  4. f = \!\(\*OverscriptBox[\(e\), \(_\)]\); \!\(\*OverscriptBox[\(f\), \(_\)]\) = e; d = Cos[\[Theta]] + I Sin[\[Theta]];
  5. \!\(\*OverscriptBox[\(d\), \(_\)]\) = Cos[\[Theta]] - I Sin[\[Theta]];
  6. kAB[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));(*复斜率定义*)
  7. Jx[p_, a_, b_] := (\!\(\*OverscriptBox[\(a\), \(_\)]\) b - a \!\(\*OverscriptBox[\(b\), \(_\)]\) + \!\(\*OverscriptBox[\(p\), \(_\)]\) (a - b))/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));(*P点的镜线,镜线过已知点 A、B*)
  8. \!\(\*OverscriptBox[\(Jx\), \(_\)]\)[p_, a_, b_] := (a \!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\) b + p (
  9. \!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)))/(a - b);
  10. h = Simplify@Jx[d, e, f]; \!\(\*OverscriptBox[\(h\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jx\), \(_\)]\)[d, e, f];
  11. (*过A1点、复斜率等于k1的直线,与过A2点、复斜率等于k2的直线的交点*)
  12. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\)) - k1 (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  13. \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k1_, a1_, k2_, a2_] := -((a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\) - (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  14. a = Simplify@Jd[-kAB[c, h], b, -kAB[b, h], c]; \!\(\*OverscriptBox[\(a\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[-kAB[c, h], b, -kAB[b, h], c];
  15. kFH = Simplify@kAB[f, h]; kEH = Simplify@kAB[e, h];kKH = Simplify@Sqrt[kFH kEH];
  16. kKH = Cos[\[Theta]] - I Sin[\[Theta]];(*KH的复斜率*)
  17. k = Simplify@Jd[kKH, h, kAB[a, b], b]; \!\(\*OverscriptBox[\(k\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[kKH, h, kAB[a, b], b];
  18. j = Simplify@Jd[-kKH, h, kAB[a, c], c]; \!\(\*OverscriptBox[\(j\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[-kKH, h, kAB[a, c], c];
  19. Print["a = ", a]; Print["K = ", k]; Print["J = ", j];
  20. Print["H = ", h, ",   D = ", d, ",   E = ", e, ",   F = ", f];
  21. n = Simplify@Jd[kAB[a, h], a, kAB[k, j], k] // Factor;\!\(\*OverscriptBox[\(n\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[kAB[a, h], a, kAB[k, j], k] // Factor;
  22. Print["N = ", n];AN = Simplify[Sqrt[(a - n) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(n\), \(_\)]\))]];
  23. HN = Simplify[Sqrt[(h - n) (\!\(\*OverscriptBox[\(h\), \(_\)]\) - \!\(\*OverscriptBox[\(n\), \(_\)]\))]];
  24. Print["\!\(\*OverscriptBox[\(AN\), \(_\)]\) = ", AN,   ",   \!\(\*OverscriptBox[\(HN\), \(_\)]\) = ", HN];
  25. Print["测试 \!\(\*OverscriptBox[\(AN\), \(_\)]\) = \!\(\*OverscriptBox[\(HN\), \(_\)]\) 是否成立:"];
  26. Simplify[AN == HN]
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-4-27 21:24
本帖最后由 TSC999 于 2023-4-29 11:08 编辑 例 十 九:
证明 EFPQ 共圆程序及结果.png
程序代码:
  1. Clear["Global`*"];Clear["Global`*"];(*令\[CapitalDelta]ABC的外接圆为单位圆*)
  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0; \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/a;
  3. \!\(\*OverscriptBox[\(b\), \(_\)]\) = 1/b; \!\(\*OverscriptBox[\(c\), \(_\)]\) = 1/c; m = (b + c)/2;
  4. \!\(\*OverscriptBox[\(m\), \(_\)]\) = (\!\(\*OverscriptBox[\(b\), \(_\)]\) + \!\(\*OverscriptBox[\(c\), \(_\)]\))/2;
  5. k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)); (*复斜率定义*)
  6. f\[Angle][a_, b_, c_] := k[b, c]/ k[a, b];  (*左边表示\[Angle]ABC的指数函数\[ExponentialE]^\[ImaginaryI]2\[Angle]ABC*)
  7. (*复斜率等于k1,过点A1与复斜率等于k2,过点A2的直线交点:*)
  8. \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k1_, a1_, k2_, a2_] := -((a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\) - (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(  k1 - k2));
  9. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1 \!\(\*OverscriptBox[\(a1\), \(_\)]\)) - k1 (a2 - k2 \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  10. e = Jd[-a c, a, a c , b]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[-a c, a, a c ,   b];(*过单位圆上两点的直线的复斜率等于这两点复坐标的乘积冠以负号*)
  11. f = Jd[-a b, a, a b , c]; \!\(\*OverscriptBox[\(f\), \(_\)]\) = \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[-a b, a, a b , c];
  12. (*由于 kAP=-ap=-kBC=bc,所以 p=-bc/a*)p = -(b c)/a; \!\(\*OverscriptBox[\(p\), \(_\)]\) = 1/p;
  13. q = Simplify[-a b c/k[m, a]];(*由于kAJ^2=kAB\[Times]kAC=kAQ\[Times]kMA=-aq\[Times]kMA=(-ab)\[Cross](-ac),所以q=-abc/kMA*) \!\(\*OverscriptBox[\(q\), \(_\)]\) = 1/q;
  14. Print["如果四边形EFPQ的两对边复斜率之积相等,则EFPQ四点共圆,测试结果为:"]
  15. Simplify[k[e, f] k[p, q] == k[e, q] k[f, p]]
复制代码

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-4-30 14:17
本帖最后由 TSC999 于 2023-4-30 14:38 编辑 例 二 十:
ABCD 是同时具有内切圆和外接圆的四边形。圆E和圆F是△ABD和△CBD的内心。 证明AEFC四点共圆。
AEFC 共圆题程序及结果.png
说明:初始程序中采用了三个变量:\(u、v、w\),考虑到四边形具有内切圆这个条件,知两组对边
长度之和应该相等,按此约束,可找出 \(w\) 与\(u、v\) 的关系。因此最终变量只有\(u、v\) 这两个。
最后,判断四点共圆的依据是如果对应的两个圆周角相等则四点共圆。
程序代码:
  1. Clear["Global`*"];(*令△ABC的外接圆为单位圆O,BC边平行于实轴。AB、AC、BD的复斜率为u^2,v^2,w^2*)
  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0; a = I u v;   \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/(I u v); b = (I u)/v;  
  3. \!\(\*OverscriptBox[\(b\), \(_\)]\) = v/(I u);  c = (I v)/u;  \!\(\*OverscriptBox[\(c\), \(_\)]\) = u/(I v);
  4. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - d) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - 1/d), (b - d)/(\!\(\*OverscriptBox[\(b\), \(_\)]\) - 1/d) == w^2}, {d}] // Flatten;
  5. d = (I v w^2)/u; \!\(\*OverscriptBox[\(d\), \(_\)]\) = 1/d;
  6. (*以下五条线段的最终长度公式中前面取正号还是取负号,需要代入具体数字进行判断。对于此图,u=0.5326+0.8463 I;
  7. v=0.5534-0.8328 I; w=0.8526+0.5225 I;*)
  8. AB = Factor@Simplify[Sqrt[(a - b) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\))]]; AB = Sqrt[-((v^2 - 1)^2/  v^2)]; AB = (v^2 - 1)/v I;
  9. BC = Factor@Simplify[ Sqrt[(b - c) (\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\))]]; BC = Sqrt[-((u^2 - v^2)^2/(  u^2 v^2))]; BC = -((u^2 - v^2)/(u v)) I;
  10. DC = Factor@Simplify[ Sqrt[(d - c) (\!\(\*OverscriptBox[\(d\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\))]]; DC = Sqrt[-((w^2 - 1)^2/  w^2)]; DC = -((w^2 - 1)/w) I;
  11. AD = Factor@Simplify[Sqrt[(a - d) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\))]]; AD = Sqrt[-((u^2 - w^2)^2/( u^2 w^2))]; AD = -((u^2 - w^2)/(u w)) I;
  12. BD = Factor@Simplify[Sqrt[(b - d) (\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\))]]; BD = Sqrt[-((u^2 -
  13.     v^2 w^2)^2/(u^2 v^2 w^2))]; BD = -((u^2 - v^2 w^2)/(u v w)) I;
  14. e = Simplify[(a BD + b AD + d AB)/(AB + BD + AD)]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = Simplify[(\!\(\*OverscriptBox[\(a\), \(_\)]\) BD + \!\(\*OverscriptBox[\(b\), \(_\)]\) AD + \!\(\*OverscriptBox[\(d\), \(_\)]\) AB)/(AB + BD + AD)];
  15. e =  I (u + (v - 1) w); \!\(\*OverscriptBox[\(e\), \(_\)]\) = (I (u (v - 1) - v w))/(u v w);
  16. f = Simplify[(b DC + c BD + d BC)/(BC + DC + BD)]; \!\(\*OverscriptBox[\(f\), \(_\)]\) = Simplify[(\!\(\*OverscriptBox[\(b\), \(_\)]\) DC + \!\(\*OverscriptBox[\(c\), \(_\)]\) BD + \!\(\*OverscriptBox[\(d\), \(_\)]\) BC)/(BC + DC + BD)];
  17. f = ( I (u (w - 1) + v w))/u; \!\(\*OverscriptBox[\(f\), \(_\)]\) = -((I (u - v w + v))/(v w));
  18. k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\));(*定义复斜率*)
  19. Simplify@Solve[{AD + BC == AB + DC }, {w}] // Flatten;
  20. w = (u^2 + Sqrt[u^4 + u^3 (6 v^2 - 2) + u^2 (v^4 + 4 v^2 + 1) - 2 u v^2 (v^2 - 3) + v^4] + u (v^2 - 1) - v^2)/(2 (u + 1) v);
  21. d = Factor@Simplify[(I v w^2)/u]; \!\(\*OverscriptBox[\(d\), \(_\)]\) = 1/d;
  22. e = Factor@Simplify[I (u + (v - 1) w)]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = Factor@Simplify[(I (u (v - 1) - v w))/(u v w)];
  23. f = Factor@Simplify[(I (u (w - 1) + v w))/u]; \!\(\*OverscriptBox[\(f\), \(_\)]\) = Factor@Simplify[-((I (u - v w + v))/(v w))];
  24. Print["a = ", a, ", b = ", b, ", c = ", c, ", d = ", d]; Print["e = ", e]; Print["f = ", f];
  25. f\[Angle][a_, b_, c_] := k[b, c]/k[a, b];  (*左边表示∠ABC的指数函数\[ExponentialE]^\[ImaginaryI]2\[Angle]ABC*)
  26. f\[Angle]AEC = Factor@FullSimplify[ f\[Angle][a, e, c]];
  27. f\[Angle]AFC = Factor@FullSimplify[ f\[Angle][a, f, c] ];
  28. Print["f\[Angle]AEC = ", f\[Angle]AEC];
  29. Print["f\[Angle]AFC = ", f\[Angle]AFC];
  30. Print["由于 f\[Angle]AEC = f\[Angle]AFC,所以 AEFC 四点共圆。"]
复制代码

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

GMT+8, 2025-3-4 12:36

Powered by Discuz!

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