|
本帖最后由 天山草 于 2021-12-7 11:23 编辑
以下机器证明程序是网友 denglongshan 的作品,本人只是更正了其中的一个小错误。下面是更正后的程序及运行结果。
- Clear["Global`*"]; (*设三角形ABC的外接圆为单位圆,C 点在正 x 轴上*)
- \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0;
- \!\(\*OverscriptBox[\(c\), \(_\)]\) = c = 1;
- \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/a; b = t^2;
- \!\(\*OverscriptBox[\(b\), \(_\)]\) = 1/b;
- \!\(\*OverscriptBox[\(t\), \(_\)]\) = 1/t;
- \!\(\*OverscriptBox[\(p\), \(_\)]\) = 1/p;
- h = a + b + c(*当三角形外心在坐标原点时此式成立*);
- \!\(\*OverscriptBox[\(h\), \(_\)]\) =
- \!\(\*OverscriptBox[\(a\), \(_\)]\) +
- \!\(\*OverscriptBox[\(b\), \(_\)]\) +
- \!\(\*OverscriptBox[\(c\), \(_\)]\); m = (a + h)/2;(* M是A、H的中点*)
- \!\(\*OverscriptBox[\(m\), \(_\)]\) = (
- \!\(\*OverscriptBox[\(a\), \(_\)]\) +
- \!\(\*OverscriptBox[\(h\), \(_\)]\))/2;
- k[a_, b_] := (a - b)/(
- \!\(\*OverscriptBox[\(a\), \(_\)]\) -
- \!\(\*OverscriptBox[\(b\), \(_\)]\));
- \!\(\*OverscriptBox[\(k\), \(_\)]\)[a_, b_] := 1/k[a, b];(*直线的复斜率*)
- 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));
- (*复斜率等于k1且经过A1点的直线,与复斜率等于k2且经过A2点的直线,两直线的交点*)
- FourPoint[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));
- \!\(\*OverscriptBox[\(FourPoint\), \(_\)]\)[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) (
- \!\(\*OverscriptBox[\(c\), \(_\)]\) -
- \!\(\*OverscriptBox[\(d\), \(_\)]\)) - (
- \!\(\*OverscriptBox[\(a\), \(_\)]\) -
- \!\(\*OverscriptBox[\(b\), \(_\)]\)) (c - d)));
- (*过A、B点的直线与过C、D点的直线的交点*)
- Duichengdian[a_, b_, p_] := (
- \!\(\*OverscriptBox[\(a\), \(_\)]\) b - a
- \!\(\*OverscriptBox[\(b\), \(_\)]\) +
- \!\(\*OverscriptBox[\(p\), \(_\)]\) (a - b))/(
- \!\(\*OverscriptBox[\(a\), \(_\)]\) -
- \!\(\*OverscriptBox[\(b\), \(_\)]\));(*P关于直线AB的镜像点*)
- \!\(\*OverscriptBox[\(Duichengdian\), \(_\)]\)[a_, b_, p_] := (a
- \!\(\*OverscriptBox[\(b\), \(_\)]\) -
- \!\(\*OverscriptBox[\(a\), \(_\)]\) b + p (
- \!\(\*OverscriptBox[\(a\), \(_\)]\) -
- \!\(\*OverscriptBox[\(b\), \(_\)]\)))/(a - b);
- o1 = Simplify[ Jd[-k[a, h], m, k[a, t], a]];
-
- \!\(\*OverscriptBox[\(o1\), \(_\)]\) = Simplify[
- \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[-k[a, h], m, k[a, t], a]];
- Print["o1=", o1];
- d = Simplify[ a b (
- \!\(\*OverscriptBox[\(a\), \(_\)]\) -
- \!\(\*OverscriptBox[\(o1\), \(_\)]\)) + o1];
- \!\(\*OverscriptBox[\(d\), \(_\)]\) = Simplify[
- \!\(\*OverscriptBox[\(a\), \(_\)]\)
- \!\(\*OverscriptBox[\(b\), \(_\)]\) (a - o1) +
- \!\(\*OverscriptBox[\(o1\), \(_\)]\)];
- Print["d=", d];
- e = Simplify[ a c (
- \!\(\*OverscriptBox[\(a\), \(_\)]\) -
- \!\(\*OverscriptBox[\(o1\), \(_\)]\)) + o1];
- \!\(\*OverscriptBox[\(e\), \(_\)]\) = Simplify[
- \!\(\*OverscriptBox[\(a\), \(_\)]\)
- \!\(\*OverscriptBox[\(c\), \(_\)]\) (a - o1) +
- \!\(\*OverscriptBox[\(o1\), \(_\)]\)];
- Print["e=", e];
- x = Simplify[Duichengdian[o, o1, a]];
- \!\(\*OverscriptBox[\(x\), \(_\)]\) = Simplify[
- \!\(\*OverscriptBox[\(Duichengdian\), \(_\)]\)[o, o1, a]];
- Print["x=", x];
- q = Simplify[-(k[x, d]/x)];
- \!\(\*OverscriptBox[\(q\), \(_\)]\) = Simplify[1/q]; p =
- Simplify[-(k[x, e]/x)];
- \!\(\*OverscriptBox[\(p\), \(_\)]\) = Simplify[1/p];
- Print["p=", p];
- Print["q=", q];
- s = Simplify[FourPoint[q, e, p, d]];
- \!\(\*OverscriptBox[\(s\), \(_\)]\) = Simplify[
- \!\(\*OverscriptBox[\(FourPoint\), \(_\)]\)[q, e, p, d]];
- Print["s=", s];
- Print["\!\(\*FractionBox[\(SE的复斜率\), \(SD的复斜率\)]\)=",
- Simplify[k[s, e]/k[s, d]]]
- Print["\!\(\*FractionBox[\(AE的复斜率\), \(AD的复斜率\)]\)=",
- Simplify[k[a, e]/k[a, d]]]
- Print["由于上述两个复斜率的比值相等,因此 ADSE 四点共圆。"]
复制代码
程序运行结果:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|