|

楼主 |
发表于 2023-10-19 07:35
|
显示全部楼层
本帖最后由 天山草 于 2023-10-19 08:29 编辑
程序代码:
- Clear["Global`*"];\!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0; \!\(\*OverscriptBox[\(a\), \(_\)]\) = a = -1; \!\(\*OverscriptBox[\(b\), \(_\)]\) = b = 1;
- kOT = u^2; kAE = v^2; kAP = w^2;
- k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)); (*复斜率定义*)
- W1 = {t, \!\(\*OverscriptBox[\(t\), \(_\)]\)} /. Simplify@Solve[{(o - t) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(t\), \(_\)]\)) == 1, k[o, t] == kOT}, {t, \!\(\*OverscriptBox[\(t\), \(_\)]\)}] // Flatten;
- t = Part[W1, 1]; \!\(\*OverscriptBox[\(t\), \(_\)]\) = Part[W1, 2];
- mAT = (a + t)/2; \!\(\*OverscriptBox[\(mAT\), \(_\)]\) = (\!\(\*OverscriptBox[\(a\), \(_\)]\) + \!\(\*OverscriptBox[\(t\), \(_\)]\))/2;(*AT的中点*)
- (*过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, t], mAT, kAE, a]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[-k[a, t], mAT, kAE, a];
- W2 = {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)} /. Simplify@Solve[{(o - p) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(p\), \(_\)]\)) == 1, k[a, p] == kAP}, {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)}] // Flatten;
- p = Part[W2, 1]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = Part[W2, 2];
- W3 = {c, \!\(\*OverscriptBox[\(c\), \(_\)]\)} /. Simplify@Solve[{(e - a) (\!\(\*OverscriptBox[\(e\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\)) == (e - c) (\!\(\*OverscriptBox[\(e\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\)), k[a, p] == k[a, c]}, {c, \!\(\*OverscriptBox[\(c\), \(_\)]\)}] // Flatten;
- c = Part[W3, 1]; \!\(\*OverscriptBox[\(c\), \(_\)]\) = Part[W3, 2];
- W4 = {d, \!\(\*OverscriptBox[\(d\), \(_\)]\)} /. Simplify@Solve[{(e - a) (\!\(\*OverscriptBox[\(e\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\)) == (e - d) (\!\(\*OverscriptBox[\(e\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)), k[c, d] == -1}, {d, \!\(\*OverscriptBox[\(d\), \(_\)]\)}] // Flatten;
- d = Part[W4, 1]; \!\(\*OverscriptBox[\(d\), \(_\)]\) = Part[W4, 2];
- 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));
- g = Simplify@WX[d, t, p]; \!\(\*OverscriptBox[\(g\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(WX\), \(_\)]\)[d, t, p];
- q = Simplify@WX[d, c, p]; \!\(\*OverscriptBox[\(q\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(WX\), \(_\)]\)[d, c, p];
- Print["复斜率 kDT 与复斜率 kPQ 之积 = ", Simplify[k[d, t] k[p, q]]];
- Print["复斜率 kPT 与复斜率 kQD 之积 = ", Simplify[k[p, t] k[q, d]]];
- Print["由于 kDT \[Times] kPQ = kPT \[Times] kQD,所以 DTPQ 共圆。"];
- Print["Q 点的坐标为 q = ", q];
- Print["由于 Q 点的坐标表达式中没有参数 w,因此 Q 点的位置与 P 点的位置无关,即 Q 是一个定点。"];
复制代码
程序运行结果:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|