数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 3800|回复: 6

A,B,C,D∈圆,AD//BC,P=AC∩BD,PE⊥BD,K=DE∩圆,F∈圆,AF⊥BD,H=BD∩KF,证∠BHK=∠BHC

[复制链接]
发表于 2023-7-15 07:36 | 显示全部楼层 |阅读模式

本帖子中包含更多资源

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

x
 楼主| 发表于 2023-7-15 07:40 | 显示全部楼层
本帖最后由 天山草 于 2023-7-15 17:30 编辑

注:两条直线平行,则它们的复斜率相同。逆命题也成立。
       如果三个点 A、B、C 在一条直线上,则任何两点的复斜率相同。逆命题也成立。
两条直线垂直,则它们的复斜率互为相反数。逆命题也成立。
一个角的平分线的复斜率的平方,等于这个角两边复斜率的乘积。逆命题也成立。
如果已知两个点 A 和 B 的复坐标分别是 a 与 b,则直线 AB 的复斜率为\(\frac{a-b}{\overline{a}-\overline{b}}\),字母上面带一横的表示共轭复数。直线 AB 长度的平方为 \((a-b)(\overline{a}-\overline{b})\)。

知道了上面这几条,此题的程序就基本能看懂了。语句都是列方程求点的坐标。点的坐标多数情况下需要同时求出其共轭坐标,因为后续计算中需要。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-7-15 08:20 | 显示全部楼层
程序代码:
  1. Clear["Global`*"];(*令△ABC的外接圆为单位圆,圆心O为坐标原点,且BC边平行于实轴,AB、AC的复斜率分别为 u^2、v^2 *)
  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0; a = I u v; \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/a; b = I u/v;
  3. \!\(\*OverscriptBox[\(b\), \(_\)]\) = 1/b; c = I v/u; \!\(\*OverscriptBox[\(c\), \(_\)]\) = 1/c;
  4. K[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)); (*复斜率定义*)
  5. W1 = {d, \!\(\*OverscriptBox[\(d\), \(_\)]\)} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - d) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(d\), \(_\)]\)), K[a, d] == K[b, c]}, {d, \!\(\*OverscriptBox[\(d\), \(_\)]\)}] // Flatten ;d = Part[W1, 1]; \!\(\*OverscriptBox[\(d\), \(_\)]\) = Part[W1, 2];
  6. W2 = {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)} /. Simplify@Solve[{K[a, p] == K[a, c], K[b, p] == K[b, d]}, {p, \!\(\*OverscriptBox[\(p\), \(_\)]\)}] // Flatten ; p = Part[W2, 1]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = Part[W2, 2];
  7. W3 = {e, \!\(\*OverscriptBox[\(e\), \(_\)]\)} /. Simplify@Solve[{K[a, e] == K[a, b], K[e, p] == -K[b, d]}, {e, \!\(\*OverscriptBox[\(e\), \(_\)]\)}] // Flatten; e = Part[W3, 1]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = Part[W3, 2];
  8. W4 = {k, \!\(\*OverscriptBox[\(k\), \(_\)]\)} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - k) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(k\), \(_\)]\)), K[d, e] == K[d, k]}, {k, \!\(\*OverscriptBox[\(k\), \(_\)]\)}] // Flatten;k = Part[W4, 1]; \!\(\*OverscriptBox[\(k\), \(_\)]\) = Part[W4, 2];
  9. W5 = {f, \!\(\*OverscriptBox[\(f\), \(_\)]\)} /. Simplify@Solve[{(o - b) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)) == (o - f) (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(f\), \(_\)]\)), K[b, d] == -K[a, f]}, {f, \!\(\*OverscriptBox[\(f\), \(_\)]\)}] // Flatten;f = Part[W5, 1]; \!\(\*OverscriptBox[\(f\), \(_\)]\) = Part[W5, 2];
  10. W6 = {h, \!\(\*OverscriptBox[\(h\), \(_\)]\)} /. Simplify@Solve[{K[b, h] == K[b, d], K[k, h] == K[k, f]}, {h, \!\(\*OverscriptBox[\(h\), \(_\)]\)}] // Flatten;h = Part[W6, 1]; \!\(\*OverscriptBox[\(h\), \(_\)]\) = Part[W6, 2];
  11. Simplify[K[h, k] K[h, c] == K[h, b]^2]
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-15 19:09 | 显示全部楼层
本帖最后由 天山草 于 2023-7-15 19:20 编辑

主帖或 3#楼的程序中,为了求得六个点的坐标,列出了六个方程。其中三个方程是直线与直线相交,另外三个方程是直线与圆相交。
我们也可以事先把直线与直线的交点写成一个可以被调用的函数,把直线与圆的交点写成另一个可以被调用的函数。这样,程序就可以避免列方程,而是直接调用现成的函数,程序就可以写成更加简明的形式:

程序代码:
  1. Clear["Global`*"];(*令△ABC的外接圆为单位圆,圆心O为坐标原点,且BC边平行于实轴,AB、AC的复斜率分别为 u^2、v^2 *)
  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0; a = I u v; \!\(\*OverscriptBox[\(a\), \(_\)]\) = 1/a; b = I u/v; \!\(\*OverscriptBox[\(b\), \(_\)]\) = 1/b; c = I v/u; \!\(\*OverscriptBox[\(c\), \(_\)]\) = 1/c;
  3. K[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\)-\!\(\*OverscriptBox[\(b\), \(_\)]\)); (*复斜率定义*)
  4. (*过A1点、复斜率等于k1的直线,与过A2点、复斜率等于k2的直线的交点:*)
  5. 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));
  6. Jd2[a_, k_, o_] := o + (\!\(\*OverscriptBox[\(o\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\)) k;(*A点在圆O上,过A点且复斜率为k的直线与圆的另一个交点*)
  7. \!\(\*OverscriptBox[\(Jd2\), \(_\)]\)[a_, k_, o_] := \!\(\*OverscriptBox[\(o\), \(_\)]\) + (o - a)/k;
  8. d = Simplify@Jd2[a, K[b, c], o]; \!\(\*OverscriptBox[\(d\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd2\), \(_\)]\)[a, K[b, c], o];
  9. p = Simplify@Jd[ K[a, c], c, K[b, d], d]; \!\(\*OverscriptBox[\(p\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[ K[a, c], c, K[b, d], d];
  10. e = Simplify@Jd[ K[a, b], b, -K[b, d], p]; \!\(\*OverscriptBox[\(e\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[ K[a, b], b, -K[b, d], p];
  11. k = Simplify@Jd2[d, K[d, e], o]; \!\(\*OverscriptBox[\(k\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd2\), \(_\)]\)[d, K[d, e], o];
  12. f = Simplify@Jd2[a, -K[b, d], o]; \!\(\*OverscriptBox[\(f\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd2\), \(_\)]\)[a, -K[b, d], o];
  13. h = Simplify@Jd[ K[b, d], d,  K[k, f], f]; \!\(\*OverscriptBox[\(h\), \(_\)]\) = Simplify@\!\(\*OverscriptBox[\(Jd\), \(_\)]\)[K[b, d], d,  K[k, f], f];
  14. Simplify[K[h, k] K[h, c] == K[h, b]^2]
复制代码

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-15 19:34 | 显示全部楼层
本帖最后由 天山草 于 2023-7-15 19:50 编辑

被调用的函数是怎样来的?说明如下。
以直线与圆的交点为例,设圆心为 O 是已知点,圆周上有一个已知点 A,一条直线经过 A 点,该直线的复斜率 k 也已知,求该直线与圆的另一个交点 Z 的坐标。列方程及解算结果如下:


类似的,写一个“过A1点、复斜率等于k1的直线,与过A2点、复斜率等于k2的直线的交点 Z”的函数,列方程及解算结果如下:

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2023-7-15 22:02 | 显示全部楼层
为增加可读性 ,建议把中间构造的各点写出来 ,说明构图顺序
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-16 07:13 | 显示全部楼层
本帖最后由 天山草 于 2023-7-16 07:19 编辑

证明两角相等的方法除了上面那一种外,还有另外三种:
第一种是写出每个角度的直接表达式,看二者是否相同。
第二种是写出每个角度正切表达式,看二者是否相同。
第三种是写出每个角度的某个指数表达式,看二者是否相同。
这部分的程序如下(程序的其它部分省略):


程序代码:

  1. \[Angle][a_, b_, c_] := ArcTan[I (K[b, a] - K[b, c])/(K[b, a] + K[b, c])];(*从AB边逆时针转到BC边的有向角\[Angle]ABC的角度值:*)
  2. Print["\[Angle]CHB = ", Simplify[\[Angle][c, h, b]]];
  3. Print["\[Angle]BHK = ", Simplify[\[Angle][b, h, k]]];
  4. Print["由于 \[Angle]CHB 与 \[Angle]BHK 有相同的表达式,所以这两角相等。"];
  5. tan\[Angle][a_, b_, c_] :=  I (K[b, a] - K[b, c])/(K[b, a] + K[b, c]);(*从AB边逆时针转到BC边的有向角\[Angle]ABC的正切函数*)
  6. Print["tan(\[Angle]CHB) = ", Simplify[tan\[Angle][c, h, b]]];
  7. Print["tan(\[Angle]BHK) = ", Simplify[tan\[Angle][b, h, k]]];
  8. Print["由于 tan(\[Angle]CHB) = tan(\[Angle]BHK),所以 \[Angle]CHB) = \[Angle]BHK。"];
  9. expI2\[Angle][a_, b_, c_] := K[b, c]/K[a, b];(*从AB边逆时针转到BC边的有向角\[Angle]ABC的指数函数 \[ExponentialE]^(2\ImaginaryI]\[Angle]ABC)*)
  10. Print["\[ExponentialE]^(2\[ImaginaryI]\[Angle]CHB) = ", Simplify[expI2\[Angle][c, h, b]]];
  11. Print["\[ExponentialE]^(2\[ImaginaryI]\[Angle]BHK) = ", Simplify[expI2\[Angle][b, h, k]]];
  12. Print["由于 \[ExponentialE]^(2\[ImaginaryI]\[Angle]CHB) = \[ExponentialE]^(2\[ImaginaryI]\[Angle]BHK),所以 \[Angle]CHB) = \[Angle]BHK。"];
复制代码

由于缺少前面的程序,所以上述代码不能单独运行。其作用仅是为了方便读者将这部分代码录入前面的程序中与之对接。

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-6-22 21:01 , Processed in 0.085797 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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