找回密码
 欢迎注册
查看: 11337|回复: 28

[求助] 直线交点在圆上,实在不知道程序错在哪里

[复制链接]
发表于 2021-12-2 21:37:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
360截图20211202211144632.jpg

  1. \!\(\*OverscriptBox["o", "_"]\) = o = 0;
  2. \!\(\*OverscriptBox["c", "_"]\) = c = 1;
  3. \!\(\*OverscriptBox["a", "_"]\) = 1/a;
  4. \!\(\*OverscriptBox["b", "_"]\) = 1/b;
  5. \!\(\*OverscriptBox["t", "_"]\) = 1/t; b = t^2; h = a + b + c;
  6. \!\(\*OverscriptBox["h", "_"]\) =
  7. \!\(\*OverscriptBox["a", "_"]\) +
  8. \!\(\*OverscriptBox["b", "_"]\) +
  9. \!\(\*OverscriptBox["c", "_"]\); m = (a + h)/2;
  10. \!\(\*OverscriptBox["m", "_"]\) = (
  11. \!\(\*OverscriptBox["a", "_"]\) +
  12. \!\(\*OverscriptBox["h", "_"]\))/2;
  13. k[a_, b_] := (a - b)/(
  14. \!\(\*OverscriptBox["a", "_"]\) -
  15. \!\(\*OverscriptBox["b", "_"]\));
  16. \!\(\*OverscriptBox["k", "_"]\)[a_, b_] := 1/k[a, b];(*复斜率定义*)

  17. \!\(\*OverscriptBox["Jd", "_"]\)[k1_, a1_, k2_, a2_] := -((a1 - k1
  18. \!\(\*OverscriptBox["a1", "_"]\) - (a2 - k2
  19. \!\(\*OverscriptBox["a2", "_"]\)))/(k1 - k2));
  20. (*复斜率等于k1,过点A1与复斜率等于k2,过点A2的直线交点*)
  21. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1
  22. \!\(\*OverscriptBox["a1", "_"]\)) - k1 (a2 - k2
  23. \!\(\*OverscriptBox["a2", "_"]\)))/(k1 - k2));
  24. FourPoint[a_, b_, c_, d_] := ((
  25. \!\(\*OverscriptBox["c", "_"]\) d - c
  26. \!\(\*OverscriptBox["d", "_"]\)) (a - b) - (
  27. \!\(\*OverscriptBox["a", "_"]\) b - a
  28. \!\(\*OverscriptBox["b", "_"]\)) (c - d))/((a - b) (
  29. \!\(\*OverscriptBox["c", "_"]\) -
  30. \!\(\*OverscriptBox["d", "_"]\)) - (
  31. \!\(\*OverscriptBox["a", "_"]\) -
  32. \!\(\*OverscriptBox["b", "_"]\)) (c - d));(*过两点A和B、C和D的交点*)

  33. \!\(\*OverscriptBox["FourPoint", "_"]\)[a_, b_, c_, d_] := -(((c
  34. \!\(\*OverscriptBox["d", "_"]\) -
  35. \!\(\*OverscriptBox["c", "_"]\) d) (
  36. \!\(\*OverscriptBox["a", "_"]\) -
  37. \!\(\*OverscriptBox["b", "_"]\)) - ( a
  38. \!\(\*OverscriptBox["b", "_"]\) -
  39. \!\(\*OverscriptBox["a", "_"]\) b) (
  40. \!\(\*OverscriptBox["c", "_"]\) -
  41. \!\(\*OverscriptBox["d", "_"]\)))/((a - b) (
  42. \!\(\*OverscriptBox["c", "_"]\) -
  43. \!\(\*OverscriptBox["d", "_"]\)) - (
  44. \!\(\*OverscriptBox["a", "_"]\) -
  45. \!\(\*OverscriptBox["b", "_"]\)) (c - d)));
  46. Duichengdian[a_, b_, p_] := (
  47. \!\(\*OverscriptBox["a", "_"]\) b - a
  48. \!\(\*OverscriptBox["b", "_"]\) +
  49. \!\(\*OverscriptBox["p", "_"]\) (a - b))/(
  50. \!\(\*OverscriptBox["a", "_"]\) -
  51. \!\(\*OverscriptBox["b", "_"]\));(*P关于AB的对称点*)

  52. \!\(\*OverscriptBox["Duichengdian", "_"]\)[a_, b_, p_] := (a
  53. \!\(\*OverscriptBox["b", "_"]\) -
  54. \!\(\*OverscriptBox["a", "_"]\) b + p (
  55. \!\(\*OverscriptBox["a", "_"]\) -
  56. \!\(\*OverscriptBox["b", "_"]\)))/(a - b);
  57. o1 = Jd[a b, m, -a t, a];
  58. \!\(\*OverscriptBox["o1", "_"]\) =
  59. \!\(\*OverscriptBox["Jd", "_"]\)[a b, m, -a t, a];
  60. d = a b (
  61. \!\(\*OverscriptBox["a", "_"]\) -
  62. \!\(\*OverscriptBox["o1", "_"]\)) + o1;
  63. \!\(\*OverscriptBox["d", "_"]\) =
  64. \!\(\*OverscriptBox["a", "_"]\)
  65. \!\(\*OverscriptBox["b", "_"]\) (a - o1) +
  66. \!\(\*OverscriptBox["o1", "_"]\); e = a c (
  67. \!\(\*OverscriptBox["a", "_"]\) -
  68. \!\(\*OverscriptBox["o1", "_"]\)) + o1;
  69. \!\(\*OverscriptBox["e", "_"]\) =
  70. \!\(\*OverscriptBox["a", "_"]\)
  71. \!\(\*OverscriptBox["c", "_"]\) (a - o1) +
  72. \!\(\*OverscriptBox["o1", "_"]\);
  73. x = Duichengdian[o, o1, a];
  74. \!\(\*OverscriptBox["x", "_"]\) =
  75. \!\(\*OverscriptBox["Duichengdian", "_"]\)[o, o1, a];
  76. q = -(k[x, d]/x);
  77. \!\(\*OverscriptBox["q", "_"]\) = 1/q; p = -(k[x, e]/x);
  78. \!\(\*OverscriptBox["p", "_"]\) = 1/p;
  79. s = FourPoint[q, e, p, d];
  80. \!\(\*OverscriptBox["s", "_"]\) =
  81. \!\(\*OverscriptBox["FourPoint", "_"]\)[q, e, p, d];
  82. s1 = -k[q, e] (
  83. \!\(\*OverscriptBox["e", "_"]\) -
  84. \!\(\*OverscriptBox["o1", "_"]\)) + o1; s2 = -k[p, d] (
  85. \!\(\*OverscriptBox["d", "_"]\) -
  86. \!\(\*OverscriptBox["o1", "_"]\)) + o1;
  87. Simplify[{1, o1,
  88. \!\(\*OverscriptBox["o1", "_"]\), , d,
  89. \!\(\*OverscriptBox[
  90. RowBox[{"d", "\[IndentingNewLine]"}], "_"]\), e,
  91. \!\(\*OverscriptBox[
  92. RowBox[{"e", "\[IndentingNewLine]"}], "_"]\), , x,
  93. \!\(\*OverscriptBox["x", "_"]\)}]
  94. Simplify[{2, p,
  95. \!\(\*OverscriptBox["p", "_"]\), , q,
  96. \!\(\*OverscriptBox[
  97. RowBox[{"q", "\[IndentingNewLine]"}], "_"]\), , s,
  98. \!\(\*OverscriptBox["s", "_"]\)}]
  99. Simplify[{3, k[s, e], -((s - o1)/(
  100. \!\(\*OverscriptBox["e", "_"]\) -
  101. \!\(\*OverscriptBox["o1", "_"]\))), , k[s, d], k[p, d], -((s - o1)/(
  102. \!\(\*OverscriptBox["d", "_"]\) -
  103. \!\(\*OverscriptBox["o1", "_"]\))), -((d - o1)/(
  104. \!\(\*OverscriptBox["s", "_"]\) -
  105. \!\(\*OverscriptBox["o1", "_"]\))), , -((s - o1)/(
  106. \!\(\*OverscriptBox["d", "_"]\) -
  107. \!\(\*OverscriptBox["o1", "_"]\))) + (d - o1)/(
  108. \!\(\*OverscriptBox["s", "_"]\) -
  109. \!\(\*OverscriptBox["o1", "_"]\))}](*验证S在圆O1上*)
  110. Simplify[{(s - o1) (
  111. \!\(\*OverscriptBox["s", "_"]\) -
  112. \!\(\*OverscriptBox["o1", "_"]\)), , (x - o1) (
  113. \!\(\*OverscriptBox["x", "_"]\) -
  114. \!\(\*OverscriptBox["o1", "_"]\)), (o1 - a) (
  115. \!\(\*OverscriptBox["o1", "_"]\) -
  116. \!\(\*OverscriptBox["a", "_"]\)), , (e - o1) (
  117. \!\(\*OverscriptBox["e", "_"]\) -
  118. \!\(\*OverscriptBox["o1", "_"]\)), (d - o1) (
  119. \!\(\*OverscriptBox["d", "_"]\) -
  120. \!\(\*OverscriptBox["o1", "_"]\)), x
  121. \!\(\*OverscriptBox["x", "_"]\)}]
  122. Simplify[{(s - o1) (
  123. \!\(\*OverscriptBox["s", "_"]\) -
  124. \!\(\*OverscriptBox["o1", "_"]\)) - (x - o1) (
  125. \!\(\*OverscriptBox["x", "_"]\) -
  126. \!\(\*OverscriptBox["o1", "_"]\))}]
  127. Simplify[{k[a, d], k[a, e], -((a - o1)/(
  128. \!\(\*OverscriptBox["d", "_"]\) -
  129. \!\(\*OverscriptBox["o1", "_"]\)))}]
  130. Simplify[{s1, s2, , s1 - s2}]
  131. (*验证S在圆O1上*)

复制代码

最后结果错误

最后结果错误

最后的S点错误,三次都不同,不知道错在哪里
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2021-12-3 20:40:53 | 显示全部楼层
你的运行结果中没有共轭字符出现,复制你的代码在我的 mathematica 9.0 上运行,运行结果中就有共轭字符出现(简化不彻底)。不知是何原因。
你在程序最前面加上一条清除所有变量的指令,看看每次运行情况是不是都一样。

点评

你去掉试试,两次应该可以  发表于 2021-12-3 21:13
加上Clear["Global`*"]反而出现共轭字符,不用只出现一次,第二次就可以了,从p和q的表达式看前面应该没有错。  发表于 2021-12-3 21:13
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2021-12-5 19:24:34 | 显示全部楼层
本帖最后由 TSC999 于 2021-12-5 19:31 编辑

为查找问题,把程序弄到最简,如下图。
这个程序首次运行有问题 (结果中有共轭复数),但是第二次、第三次、.....  运行就一直正常了。
估计问题出在图中的蓝色字符上。

最简程序.png

下图是首次运行结果与再次运行结果的比较:

两次运行结果不一样.png

点评

这结果与我的相同,9.0版本输出更符合代数从高次变量到常数的习惯,从P和Q的表达式来看,似乎只有最后的S错误  发表于 2021-12-5 19:42
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2021-12-5 19:52:39 | 显示全部楼层
本帖最后由 TSC999 于 2021-12-5 20:15 编辑

A 点、P 点的位置在哪里? 程序中只表明它们都在单位圆上,但是并没有具体位置的定义。这也许是导致 s 出错的原因?

s  的结果是稳定的,并没有三次运行的结果都不相同。S  点位于 O1 圆上的判定依据是什么?

s 结果.png

点评

P是直线与单位圆的交点,A是自由点  发表于 2021-12-5 21:36
怀疑是程序计算错误  发表于 2021-12-5 21:06
S应该唯一,S与A到O的距离平方相等  发表于 2021-12-5 21:05
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2021-12-5 21:33:52 | 显示全部楼层
如果S在O1上,S与A到O1的距离平方相等 或者-(s-o1)/(e'-o1')=kqe,-(d-o1)/(s'-o1')=kpd,为简化用撇号代替共轭
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2021-12-6 09:39:01 | 显示全部楼层
本帖最后由 TSC999 于 2021-12-6 18:37 编辑

为了查找程序中的计算错误,画出下图。

给定 A、T 的坐标,其它点的坐标都可按程序计算出来。在图中实测各点坐标,发现有的点 (例如 D、E 、X、O1、S 点) 计算与实测不符。

AD、AE  长度的计算值也与实测值不一样。

查找错误.png

以下是换一种方法计算 O1、D、E 、X、P、Q、S 各点的坐标以及 AD、AE 的长度,结果全都与实测值相符合:

o1= - 0.4280947 + I 0.2345752
d = - 0.587453 - I 0 .26846
e =   0.092019 + I 0 .323577
x = - 0.950037 + I 0 .312138
p =   0.942956 + I 0 .332918
q = - 0.136446 - I 0 .990647
s =   0.0313717 - I 0 .0252913
AD = 0.920377
AE = 0.920111

终于发现原程序中的错误是求 o1 的那条语句,应改为  o1=Simplify[Jd[-k[a, h] , m , k[a, t], a ]];  原程序中的  o1=Simplify[Jd[a b , m , -a t, a ]]; 是不对的。这个错误不但造成计算结果不对,并且发生程序开头不能加上清除所有变量语句的奇怪现象。
改正这个错误后,一切问题都解决了。下页是更正后的正确程序代码。


毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2021-12-6 18:24:10 | 显示全部楼层
  1. Clear["Global`*"]; (*设三角形ABC的外接圆为单位圆,C 点在正 x 轴上*)

  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0;
  3. \!\(\*OverscriptBox[\(c\), \(_\)]\) = c = 1;

  4. \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/a; b = t^2;
  5. \!\(\*OverscriptBox[\(b\), \(_\)]\) = 1/b;
  6. \!\(\*OverscriptBox[\(t\), \(_\)]\) = 1/t;
  7. \!\(\*OverscriptBox[\(p\), \(_\)]\) = 1/p;
  8. h = a + b + c(*当三角形外心在坐标原点时此式成立*);

  9. \!\(\*OverscriptBox[\(h\), \(_\)]\) =
  10. \!\(\*OverscriptBox[\(a\), \(_\)]\) +
  11. \!\(\*OverscriptBox[\(b\), \(_\)]\) +
  12. \!\(\*OverscriptBox[\(c\), \(_\)]\); m = (a + h)/2;(* M是A、H的中点*)
  13. \!\(\*OverscriptBox[\(m\), \(_\)]\) = (
  14. \!\(\*OverscriptBox[\(a\), \(_\)]\) +
  15. \!\(\*OverscriptBox[\(h\), \(_\)]\))/2;
  16. k[a_, b_] := (a - b)/(
  17. \!\(\*OverscriptBox[\(a\), \(_\)]\) -
  18. \!\(\*OverscriptBox[\(b\), \(_\)]\));
  19. \!\(\*OverscriptBox[\(k\), \(_\)]\)[a_, b_] := 1/k[a, b];(*复斜率定义*)
  20. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1
  21. \!\(\*OverscriptBox[\(a1\), \(_\)]\)) - k1 (a2 - k2
  22. \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));

  23. \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[k1_, a1_, k2_, a2_] := -((a1 - k1
  24. \!\(\*OverscriptBox[\(a1\), \(_\)]\) - (a2 - k2
  25. \!\(\*OverscriptBox[\(a2\), \(_\)]\)))/(k1 - k2));
  26. (*复斜率等于k1且经过A1点的直线,与复斜率等于k2且经过A2点的直线,两直线的交点*)
  27. FourPoint[a_, b_, c_, d_] := ((
  28. \!\(\*OverscriptBox[\(c\), \(_\)]\) d - c
  29. \!\(\*OverscriptBox[\(d\), \(_\)]\)) (a - b) - (
  30. \!\(\*OverscriptBox[\(a\), \(_\)]\) b - a
  31. \!\(\*OverscriptBox[\(b\), \(_\)]\)) (c - d))/((a - b) (
  32. \!\(\*OverscriptBox[\(c\), \(_\)]\) -
  33. \!\(\*OverscriptBox[\(d\), \(_\)]\)) - (
  34. \!\(\*OverscriptBox[\(a\), \(_\)]\) -
  35. \!\(\*OverscriptBox[\(b\), \(_\)]\)) (c - d));

  36. \!\(\*OverscriptBox[\(FourPoint\), \(_\)]\)[a_, b_, c_, d_] := -(((c
  37. \!\(\*OverscriptBox[\(d\), \(_\)]\) -
  38. \!\(\*OverscriptBox[\(c\), \(_\)]\) d) (
  39. \!\(\*OverscriptBox[\(a\), \(_\)]\) -
  40. \!\(\*OverscriptBox[\(b\), \(_\)]\)) - ( a
  41. \!\(\*OverscriptBox[\(b\), \(_\)]\) -
  42. \!\(\*OverscriptBox[\(a\), \(_\)]\) b) (
  43. \!\(\*OverscriptBox[\(c\), \(_\)]\) -
  44. \!\(\*OverscriptBox[\(d\), \(_\)]\)))/((a - b) (
  45. \!\(\*OverscriptBox[\(c\), \(_\)]\) -
  46. \!\(\*OverscriptBox[\(d\), \(_\)]\)) - (
  47. \!\(\*OverscriptBox[\(a\), \(_\)]\) -
  48. \!\(\*OverscriptBox[\(b\), \(_\)]\)) (c - d)));
  49. (*过A、B点的直线与过C、D点的直线的交点*)
  50. Duichengdian[a_, b_, p_] := (
  51. \!\(\*OverscriptBox[\(a\), \(_\)]\) b - a
  52. \!\(\*OverscriptBox[\(b\), \(_\)]\) +
  53. \!\(\*OverscriptBox[\(p\), \(_\)]\) (a - b))/(
  54. \!\(\*OverscriptBox[\(a\), \(_\)]\) -
  55. \!\(\*OverscriptBox[\(b\), \(_\)]\));(*P关于直线AB的镜像点*)

  56. \!\(\*OverscriptBox[\(Duichengdian\), \(_\)]\)[a_, b_, p_] := (a
  57. \!\(\*OverscriptBox[\(b\), \(_\)]\) -
  58. \!\(\*OverscriptBox[\(a\), \(_\)]\) b + p (
  59. \!\(\*OverscriptBox[\(a\), \(_\)]\) -
  60. \!\(\*OverscriptBox[\(b\), \(_\)]\)))/(a - b);
  61. (*右边语句错了,不但计算结果不对,并且发生程序开头不能加上清除所有变量语句的奇怪现象o1 =Simplify[ Jd[a b, m, \
  62. -a t, a]];  Overscript[o1, _] =Simplify[Overscript[Jd, _][a b, m, -a \
  63. t, a]];*)
  64. o1 = Simplify[ Jd[-k[a, h], m, k[a, t], a]];

  65. \!\(\*OverscriptBox[\(o1\), \(_\)]\) = Simplify[
  66. \!\(\*OverscriptBox[\(Jd\), \(_\)]\)[-k[a, h], m, k[a, t], a]];
  67. Print["o1=", o1, ",    \!\(\*OverscriptBox[\(o1\), \(_\)]\)=",
  68. \!\(\*OverscriptBox[\(o1\), \(_\)]\)];
  69. d = Simplify[ a b (
  70. \!\(\*OverscriptBox[\(a\), \(_\)]\) -
  71. \!\(\*OverscriptBox[\(o1\), \(_\)]\)) + o1];

  72. \!\(\*OverscriptBox[\(d\), \(_\)]\) = Simplify[
  73. \!\(\*OverscriptBox[\(a\), \(_\)]\)
  74. \!\(\*OverscriptBox[\(b\), \(_\)]\) (a - o1) +
  75. \!\(\*OverscriptBox[\(o1\), \(_\)]\)];
  76. Print["d=", d, ",    \!\(\*OverscriptBox[\(d\), \(_\)]\)=",
  77. \!\(\*OverscriptBox[\(d\), \(_\)]\)];
  78. e = Simplify[ a c (
  79. \!\(\*OverscriptBox[\(a\), \(_\)]\) -
  80. \!\(\*OverscriptBox[\(o1\), \(_\)]\)) + o1];

  81. \!\(\*OverscriptBox[\(e\), \(_\)]\) = Simplify[
  82. \!\(\*OverscriptBox[\(a\), \(_\)]\)
  83. \!\(\*OverscriptBox[\(c\), \(_\)]\) (a - o1) +
  84. \!\(\*OverscriptBox[\(o1\), \(_\)]\)];
  85. Print["e=", e, ",    \!\(\*OverscriptBox[\(e\), \(_\)]\)=",
  86. \!\(\*OverscriptBox[\(e\), \(_\)]\)];
  87. x = Simplify[Duichengdian[o, o1, a]];
  88. \!\(\*OverscriptBox[\(x\), \(_\)]\) = Simplify[
  89. \!\(\*OverscriptBox[\(Duichengdian\), \(_\)]\)[o, o1, a]];
  90. Print["x=", x, ",    \!\(\*OverscriptBox[\(x\), \(_\)]\)=",
  91. \!\(\*OverscriptBox[\(x\), \(_\)]\)];
  92. q = Simplify[-(k[x, d]/x)];
  93. \!\(\*OverscriptBox[\(q\), \(_\)]\) = Simplify[1/q]; p =
  94. Simplify[-(k[x, e]/x)];
  95. \!\(\*OverscriptBox[\(p\), \(_\)]\) = Simplify[1/p];
  96. Print["p=", p, ",    \!\(\*OverscriptBox[\(p\), \(_\)]\)=",
  97. \!\(\*OverscriptBox[\(p\), \(_\)]\)];
  98. Print["q=", q, ",    \!\(\*OverscriptBox[\(q\), \(_\)]\)=",
  99. \!\(\*OverscriptBox[\(q\), \(_\)]\)];
  100. s = Simplify[FourPoint[q, e, p, d]];
  101. \!\(\*OverscriptBox[\(s\), \(_\)]\) = Simplify[
  102. \!\(\*OverscriptBox[\(FourPoint\), \(_\)]\)[q, e, p, d]];
  103. s1 = Simplify[-k[q, e] (
  104. \!\(\*OverscriptBox[\(e\), \(_\)]\) -
  105. \!\(\*OverscriptBox[\(o1\), \(_\)]\)) + o1]; s2 = Simplify[-k[p, d] (
  106. \!\(\*OverscriptBox[\(d\), \(_\)]\) -
  107. \!\(\*OverscriptBox[\(o1\), \(_\)]\)) + o1];
  108. Print["s=", s, ",    \!\(\*OverscriptBox[\(s\), \(_\)]\)=",
  109. \!\(\*OverscriptBox[\(s\), \(_\)]\)];
  110. Print["s1=", s1];
  111. Print["s2=", s2];
  112. Print["s1-s2=", Simplify[s1 - s2]];
  113. Print["。。。。。。。。。。。。。。。。。。。。。。。。。。"];
  114. Simplify[{1, o1,
  115. \!\(\*OverscriptBox[\(o1\), \(_\)]\), , d,
  116. \!\(\*OverscriptBox[\(\(d\)\(\ \)\), \(_\)]\), e,
  117. \!\(\*OverscriptBox[\(\(e\)\(\ \)\), \(_\)]\), , x,
  118. \!\(\*OverscriptBox[\(x\), \(_\)]\)}]
  119. Simplify[{2, p,
  120. \!\(\*OverscriptBox[\(p\), \(_\)]\), , q,
  121. \!\(\*OverscriptBox[\(\(q\)\(\ \)\), \(_\)]\), , s,
  122. \!\(\*OverscriptBox[\(s\), \(_\)]\)}]
  123. Simplify[{3, k[s, e], -((s - o1)/(
  124. \!\(\*OverscriptBox[\(e\), \(_\)]\) -
  125. \!\(\*OverscriptBox[\(o1\), \(_\)]\))), , k[s, d],
  126.   k[p, d], -((s - o1)/(
  127. \!\(\*OverscriptBox[\(d\), \(_\)]\) -
  128. \!\(\*OverscriptBox[\(o1\), \(_\)]\))), -((d - o1)/(
  129. \!\(\*OverscriptBox[\(s\), \(_\)]\) -
  130. \!\(\*OverscriptBox[\(o1\), \(_\)]\))), , -((s - o1)/(
  131. \!\(\*OverscriptBox[\(d\), \(_\)]\) -
  132. \!\(\*OverscriptBox[\(o1\), \(_\)]\))) + (d - o1)/(
  133. \!\(\*OverscriptBox[\(s\), \(_\)]\) -
  134. \!\(\*OverscriptBox[\(o1\), \(_\)]\))}](*验证S在圆O1上*)
  135. Simplify[{4, (s - o1) (
  136. \!\(\*OverscriptBox[\(s\), \(_\)]\) -
  137. \!\(\*OverscriptBox[\(o1\), \(_\)]\)), , (x - o1) (
  138. \!\(\*OverscriptBox[\(x\), \(_\)]\) -
  139. \!\(\*OverscriptBox[\(o1\), \(_\)]\)), (o1 - a) (
  140. \!\(\*OverscriptBox[\(o1\), \(_\)]\) -
  141. \!\(\*OverscriptBox[\(a\), \(_\)]\)), , (e - o1) (
  142. \!\(\*OverscriptBox[\(e\), \(_\)]\) -
  143. \!\(\*OverscriptBox[\(o1\), \(_\)]\)), (d - o1) (
  144. \!\(\*OverscriptBox[\(d\), \(_\)]\) -
  145. \!\(\*OverscriptBox[\(o1\), \(_\)]\)), x
  146. \!\(\*OverscriptBox[\(x\), \(_\)]\)}]
  147. Simplify[{5, (s - o1) (
  148. \!\(\*OverscriptBox[\(s\), \(_\)]\) -
  149. \!\(\*OverscriptBox[\(o1\), \(_\)]\)) - (x - o1) (
  150. \!\(\*OverscriptBox[\(x\), \(_\)]\) -
  151. \!\(\*OverscriptBox[\(o1\), \(_\)]\))}]
  152. Simplify[{6, k[a, d], k[a, e], -((a - o1)/(
  153. \!\(\*OverscriptBox[\(d\), \(_\)]\) -
  154. \!\(\*OverscriptBox[\(o1\), \(_\)]\)))}]
  155. Simplify[{7, s1, s2, , s1 - s2}](*验证S在圆O1上*)

复制代码


部分运行结果如下:

部分运行结果.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2021-12-6 20:20:55 | 显示全部楼层
谢谢老朋友,找了很久没有发现,的确是那句错了,也可以改成 o1=Simplify[Jd[-b c , m , k[a, t], a ]];你的计算结论还说明S是△APQ的垂心其它结果可能还可以发现新的几何关系,奇怪为什么原来的错误程序P和Q点的表达式却是正确的?是否可能不利用T点来证明?写了一封信给你,你注意查收。

点评

这是一个很好看的结果  发表于 2021-12-6 20:29
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2021-12-6 21:41:58 | 显示全部楼层
下面是用向量商的结果

  1. Clear["Global`*"](*v=-1/a^2;*)
  2. b = a^2 v^2;(*这句是根据AD=AE判定O1在角DAE平分线上,由Factor[k[o1,a]^2-a^2b c]可以推出*)

  3. \!\(\*OverscriptBox["o", "_"]\) = o = 0;
  4. \!\(\*OverscriptBox["c", "_"]\) = c = 1;
  5. \!\(\*OverscriptBox["a", "_"]\) = 1/a; b = a^2 v^2;
  6. \!\(\*OverscriptBox["b", "_"]\) = 1/b;
  7. \!\(\*OverscriptBox["v", "_"]\) = 1/v; h = a + b + c;
  8. \!\(\*OverscriptBox["h", "_"]\) =
  9. \!\(\*OverscriptBox["a", "_"]\) +
  10. \!\(\*OverscriptBox["b", "_"]\) +
  11. \!\(\*OverscriptBox["c", "_"]\); m = (a + h)/2;
  12. \!\(\*OverscriptBox["m", "_"]\) = (
  13. \!\(\*OverscriptBox["a", "_"]\) +
  14. \!\(\*OverscriptBox["h", "_"]\))/2;
  15. o1 = (h - a v)/(1 - v);
  16. \!\(\*OverscriptBox["o1", "_"]\) = (
  17. \!\(\*OverscriptBox["h", "_"]\) -
  18. \!\(\*OverscriptBox["a", "_"]\)
  19. \!\(\*OverscriptBox["v", "_"]\))/(1 -
  20. \!\(\*OverscriptBox["v", "_"]\));(*假设
  21. \!\(\*OverscriptBox["O1H", "\[RightVector]"]\)/
  22. \!\(\*OverscriptBox["O1A", "\[RightVector]"]\)=v*)
  23. k[a_, b_] := (a - b)/(
  24. \!\(\*OverscriptBox["a", "_"]\) -
  25. \!\(\*OverscriptBox["b", "_"]\));
  26. \!\(\*OverscriptBox["k", "_"]\)[a_, b_] := 1/k[a, b];(*复斜率定义*)

  27. \!\(\*OverscriptBox["Jd", "_"]\)[k1_, a1_, k2_, a2_] := -((a1 - k1
  28. \!\(\*OverscriptBox["a1", "_"]\) - (a2 - k2
  29. \!\(\*OverscriptBox["a2", "_"]\)))/(k1 - k2));
  30. (*复斜率等于k1,过点A1与复斜率等于k2,过点A2的直线交点*)
  31. Jd[k1_, a1_, k2_, a2_] := -((k2 (a1 - k1
  32. \!\(\*OverscriptBox["a1", "_"]\)) - k1 (a2 - k2
  33. \!\(\*OverscriptBox["a2", "_"]\)))/(k1 - k2));
  34. FourPoint[a_, b_, c_, d_] := ((
  35. \!\(\*OverscriptBox["c", "_"]\) d - c
  36. \!\(\*OverscriptBox["d", "_"]\)) (a - b) - (
  37. \!\(\*OverscriptBox["a", "_"]\) b - a
  38. \!\(\*OverscriptBox["b", "_"]\)) (c - d))/((a - b) (
  39. \!\(\*OverscriptBox["c", "_"]\) -
  40. \!\(\*OverscriptBox["d", "_"]\)) - (
  41. \!\(\*OverscriptBox["a", "_"]\) -
  42. \!\(\*OverscriptBox["b", "_"]\)) (c - d));(*过两点A和B、C和D的交点*)

  43. \!\(\*OverscriptBox["FourPoint", "_"]\)[a_, b_, c_, d_] := -(((c
  44. \!\(\*OverscriptBox["d", "_"]\) -
  45. \!\(\*OverscriptBox["c", "_"]\) d) (
  46. \!\(\*OverscriptBox["a", "_"]\) -
  47. \!\(\*OverscriptBox["b", "_"]\)) - ( a
  48. \!\(\*OverscriptBox["b", "_"]\) -
  49. \!\(\*OverscriptBox["a", "_"]\) b) (
  50. \!\(\*OverscriptBox["c", "_"]\) -
  51. \!\(\*OverscriptBox["d", "_"]\)))/((a - b) (
  52. \!\(\*OverscriptBox["c", "_"]\) -
  53. \!\(\*OverscriptBox["d", "_"]\)) - (
  54. \!\(\*OverscriptBox["a", "_"]\) -
  55. \!\(\*OverscriptBox["b", "_"]\)) (c - d)));
  56. Duichengdian[a_, b_, p_] := (
  57. \!\(\*OverscriptBox["a", "_"]\) b - a
  58. \!\(\*OverscriptBox["b", "_"]\) +
  59. \!\(\*OverscriptBox["p", "_"]\) (a - b))/(
  60. \!\(\*OverscriptBox["a", "_"]\) -
  61. \!\(\*OverscriptBox["b", "_"]\));(*P关于AB的对称点*)

  62. \!\(\*OverscriptBox["Duichengdian", "_"]\)[a_, b_, p_] := (a
  63. \!\(\*OverscriptBox["b", "_"]\) -
  64. \!\(\*OverscriptBox["a", "_"]\) b + p (
  65. \!\(\*OverscriptBox["a", "_"]\) -
  66. \!\(\*OverscriptBox["b", "_"]\)))/(a - b);
  67.    (* o1=Jd[ - b c,m,-a t,a];
  68. \!\(\*OverscriptBox["o1", "_"]\)=
  69. \!\(\*OverscriptBox["Jd", "_"]\)[- b c,m,-a t,a];o1=Jd[a b,m,-a t,a];
  70. \!\(\*OverscriptBox["o1", "_"]\)=
  71. \!\(\*OverscriptBox["Jd", "_"]\)[a b,m,-a t,a];*)
  72. d = a b (
  73. \!\(\*OverscriptBox["a", "_"]\) -
  74. \!\(\*OverscriptBox["o1", "_"]\)) + o1;
  75. \!\(\*OverscriptBox["d", "_"]\) =
  76. \!\(\*OverscriptBox["a", "_"]\)
  77. \!\(\*OverscriptBox["b", "_"]\) (a - o1) +
  78. \!\(\*OverscriptBox["o1", "_"]\); e = a c (
  79. \!\(\*OverscriptBox["a", "_"]\) -
  80. \!\(\*OverscriptBox["o1", "_"]\)) + o1;
  81. \!\(\*OverscriptBox["e", "_"]\) =
  82. \!\(\*OverscriptBox["a", "_"]\)
  83. \!\(\*OverscriptBox["c", "_"]\) (a - o1) +
  84. \!\(\*OverscriptBox["o1", "_"]\);
  85. x = Duichengdian[o, o1, a];
  86. \!\(\*OverscriptBox["x", "_"]\) =
  87. \!\(\*OverscriptBox["Duichengdian", "_"]\)[o, o1, a];
  88. q = -(k[x, d]/x);
  89. \!\(\*OverscriptBox["q", "_"]\) = 1/q; p = -(k[x, e]/x);
  90. \!\(\*OverscriptBox["p", "_"]\) = 1/p;
  91. s = FourPoint[q, e, p, d];
  92. \!\(\*OverscriptBox["s", "_"]\) =
  93. \!\(\*OverscriptBox["FourPoint", "_"]\)[q, e, p, d];
  94. s1 = -k[q, e] (
  95. \!\(\*OverscriptBox["e", "_"]\) -
  96. \!\(\*OverscriptBox["o1", "_"]\)) + o1; s2 = -k[p, d] (
  97. \!\(\*OverscriptBox["d", "_"]\) -
  98. \!\(\*OverscriptBox["o1", "_"]\)) + o1;
  99. Simplify[{1, o1,
  100. \!\(\*OverscriptBox["o1", "_"]\), , d,
  101. \!\(\*OverscriptBox[
  102. RowBox[{"d", "\[IndentingNewLine]"}], "_"]\), e,
  103. \!\(\*OverscriptBox[
  104. RowBox[{"e", "\[IndentingNewLine]"}], "_"]\), , x,
  105. \!\(\*OverscriptBox["x", "_"]\)}]
  106. Simplify[{2, p,
  107. \!\(\*OverscriptBox["p", "_"]\), , q,
  108. \!\(\*OverscriptBox[
  109. RowBox[{"q", "\[IndentingNewLine]"}], "_"]\), , s,
  110. \!\(\*OverscriptBox["s", "_"]\)}]
  111. Simplify[{3, k[s, e], -((s - o1)/(
  112. \!\(\*OverscriptBox["e", "_"]\) -
  113. \!\(\*OverscriptBox["o1", "_"]\))), , k[s, d], k[p, d], -((s - o1)/(
  114. \!\(\*OverscriptBox["d", "_"]\) -
  115. \!\(\*OverscriptBox["o1", "_"]\))), -((d - o1)/(
  116. \!\(\*OverscriptBox["s", "_"]\) -
  117. \!\(\*OverscriptBox["o1", "_"]\))), , -((s - o1)/(
  118. \!\(\*OverscriptBox["d", "_"]\) -
  119. \!\(\*OverscriptBox["o1", "_"]\))) + (d - o1)/(
  120. \!\(\*OverscriptBox["s", "_"]\) -
  121. \!\(\*OverscriptBox["o1", "_"]\))}](*验证S在圆O1上*)
  122. Simplify[{4, (s - o1) (
  123. \!\(\*OverscriptBox["s", "_"]\) -
  124. \!\(\*OverscriptBox["o1", "_"]\)), (x - o1) (
  125. \!\(\*OverscriptBox["x", "_"]\) -
  126. \!\(\*OverscriptBox["o1", "_"]\)), (o1 - a) (
  127. \!\(\*OverscriptBox["o1", "_"]\) -
  128. \!\(\*OverscriptBox["a", "_"]\)), , (e - o1) (
  129. \!\(\*OverscriptBox["e", "_"]\) -
  130. \!\(\*OverscriptBox["o1", "_"]\)), (d - o1) (
  131. \!\(\*OverscriptBox["d", "_"]\) -
  132. \!\(\*OverscriptBox["o1", "_"]\)), x
  133. \!\(\*OverscriptBox["x", "_"]\)}]
  134. Simplify[{5, (s - o1) (
  135. \!\(\*OverscriptBox["s", "_"]\) -
  136. \!\(\*OverscriptBox["o1", "_"]\)) - (x - o1) (
  137. \!\(\*OverscriptBox["x", "_"]\) -
  138. \!\(\*OverscriptBox["o1", "_"]\))}]
  139. Simplify[{6, k[a, d], k[a, e], -((a - o1)/(
  140. \!\(\*OverscriptBox["d", "_"]\) -
  141. \!\(\*OverscriptBox["o1", "_"]\)))}]
  142. Simplify[{7, s1, s2}]
  143. Simplify[k[o1, a]^2 - a^2 b c]
  144. Factor[k[o1, a]^2 - a^2 b c]



复制代码

直线交点在圆上向量商.gif

点评

由 b = a^2 v^2 得v^2=b/a^2 ,设b=t^2,得v=正负t/a,不是 v=-1/a^2  发表于 2021-12-7 19:31
这个程序似乎不对。令 a = -0.7747 + I 0.63245; 由 v=-1/a^2 可求得 v,由 b = a^2 v^2 可求出 b,然后算出其余各点坐标。结果是 e=1 与 C 点重合了。一个自由变量 a 就决定了三角形 ABC 的形状不合适。  发表于 2021-12-7 10:36
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2021-12-6 21:44:22 | 显示全部楼层
收到了您发给我邮箱的邮件。还没有来得及看各个附件的内容。关于向量商、共轭比的说法,我也觉得不如称为复斜率更简单、清晰,容易被人接受。您以前那篇论文,内容太少了,完全能把内容扩充十倍以上,主要是列出用于机器证明的公式,构图的方法。
我对复斜率的理解见下图。

复斜率的概念.png

点评

这种推导复杂了,原文比较简洁,数学所信箱发不进去,您看看能不能用教育信箱。  发表于 2021-12-6 21:56
那是以前写的,扩充太费时间了,的确用复斜率更形象,最早也是用这个词,考虑到可能会与斜率混淆,所以改用共轭比,在中科院,李教授也赞成用复斜率,现在改过来了。有关向量商已经向投稿,你先不要公布出来,  发表于 2021-12-6 21:54
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-22 15:07 , Processed in 0.032965 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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