|

楼主 |
发表于 2023-10-13 19:44
|
显示全部楼层
本帖最后由 天山草 于 2023-10-13 20:04 编辑
程序代码:
- Clear["Global`*"]; (*令△ABC的外接圆为单位圆O,BC边平行于实轴,AB、AC的复斜率分别为 u^2、v^2 *)
- o = 0; \!\(\*OverscriptBox[\(o\), \(_\)]\) = 0; a = I u v; \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/(I u v); b = (I u)/v;
- \!\(\*OverscriptBox[\(b\), \(_\)]\) = v/(I u); c = (I v)/u; \!\(\*OverscriptBox[\(c\), \(_\)]\) = u/(I v);
- i = I (u + v - 1); \!\(\*OverscriptBox[\(i\), \(_\)]\) = -I (1/u + 1/v - 1);
- k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)); (*复斜率定义*)
- (*过A1点、复斜率等于k1的直线,与过A2点、复斜率等于k2的直线的交点:*)
- 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));
- e = Simplify@Jd[k[a, c], a, k[b, i], b]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[a, c], a, k[b, i], b];
- f = Simplify@Jd[k[a, b], a, k[c, i], c]; \!\(\*OverscriptBox[\(f\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k[a, b], a, k[c, i], c];
- W1 = {z, \!\(\*OverscriptBox[\(z\), \(_\)]\)} /. Simplify@Solve[{(o - z) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(z\), \(_\)]\)) == 1, k[f, e] == k[e, z]}, {z, \!\(\*OverscriptBox[\(z\), \(_\)]\)}] // Flatten;
- p = Part[W1, 1]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = Part[W1, 2]; q = Part[W1, 3]; \!\(\*OverscriptBox[\(q\), \(_\)]\) = Part[W1, 4];
- 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) + \!\(\*OverscriptBox[\(c\), \(_\)]\) (b - a));(*三角形 ABC 的外心坐标:*)
- \!\(\*OverscriptBox[\(WX\), \(_\)]\)[a_, b_, c_] := (\!\(\*OverscriptBox[\(a\), \(_\)]\) \!\(\*OverscriptBox[\(b\), \(_\)]\) (a - b) + \!\(\*OverscriptBox[\(b\), \(_\)]\) \!\(\*OverscriptBox[\(c\), \(_\)]\) (b - c) + \!\(\*OverscriptBox[\(c\), \(_\)]\) \!\(\*OverscriptBox[\(a\), \(_\)]\) (c - a))/(\!\(\*OverscriptBox[\(a\), \(_\)]\) (c - b) + \!\(\*OverscriptBox[\(b\), \(_\)]\) (a - c) + \!\(\*OverscriptBox[\(c\), \(_\)]\) (b - a));
- o1 = Simplify@WX[i, p, q]; \!\(\*OverscriptBox[\(o1\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(WX\), \(_\)]\)[i, p, q];
- Print["O1 圆的半径 = ", Simplify[Sqrt[(o1 - i) (\!\(\*OverscriptBox[\(o1\), \(_\)]\) - \!\(\*OverscriptBox[\(i\), \(_\)]\))]]];
- Print["由于圆O1的半径为 2,圆O的半径为 1,所以圆O1半径等于圆O半径的二倍。"];
- BC = Simplify[Sqrt[(b - c) (\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\))]]; BC = ( I (v^2 - u^2))/(u v);
- AC = Simplify[Sqrt[(a - c) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\))]]; AC = (I (1 - u^2))/u;
- AB = Simplify[Sqrt[(a - b) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\))]]; AB = (I (v^2 - 1))/v;
- Subscript[I, B] = Simplify[(BC a - AC b + AB c)/(BC - AC + AB)];
- \!\(\*OverscriptBox[SubscriptBox[\(I\), \(B\)], \(_\)]\) = Simplify[(BC \!\(\*OverscriptBox[\(a\), \(_\)]\) - AC \!\(\*OverscriptBox[\(b\), \(_\)]\) + AB \!\(\*OverscriptBox[\(c\), \(_\)]\))/(BC - AC + AB)];
- Subscript[I, C] = Simplify[(BC a + AC b - AB c)/(BC + AC - AB)]; \!\(\*OverscriptBox[SubscriptBox[\(I\), \(C\)], \(_\)]\) = Simplify[(BC \!\(\*OverscriptBox[\(a\), \(_\)]\) + AC \!\(\*OverscriptBox[\(b\), \(_\)]\) - AB \!\(\*OverscriptBox[\(c\), \(_\)]\))/(BC + AC - AB)];
- Print["p = ", p]; Print["q = ", q]; Print["o1 = ", o1]; Print["\!\(\*SubscriptBox[\(I\), \(B\)]\) = ", Subscript[I, B]]; \
- Print["\!\(\*SubscriptBox[\(I\), \(C\)]\) = ", Subscript[I, C]];
- Print["\!\(\*SubscriptBox[\(O1I\), \(B\)]\) = ", Simplify[Sqrt[(o1 - Subscript[I, B]) (\!\(\*OverscriptBox[\(o1\), \(_\)]\) - \!\(\*OverscriptBox[SubscriptBox[\(I\), \(B\)], \(_\)]\))]]];
- Print["\!\(\*SubscriptBox[\(O1I\), \(C\)]\) = ", Simplify[Sqrt[(o1 - Subscript[I, C]) (\!\(\*OverscriptBox[\(o1\), \(_\)]\) - \!\(\*OverscriptBox[SubscriptBox[\(I\), \(C\)], \(_\)]\))]]];
- Print["由于 \!\(\*SubscriptBox[\(O1I\), \(B\)]\) = 2,所以 \!\(\*SubscriptBox[\(I\), \(B\)]\) 在 O1 圆上。"];
- Print["由于 \!\(\*SubscriptBox[\(O1I\), \(C\)]\) = 2,所以 \!\(\*SubscriptBox[\(I\), \(C\)]\) 在 O1 圆上。"];
复制代码
程序运行结果:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|