|

楼主 |
发表于 2023-3-30 14:45
|
显示全部楼层
无需手工推导,直接用 MMA 硬解出 A 和 D 的坐标,反而轻松证得。
- ClearAll["Global`*"];
- (* 假设 b=(0,0), c=(1,0) *)
- (* 为了使代码更加可嵌入到 web 页面中,用小写字母 a 表示 A 的复坐标,而 a' 表示 a 的共轭,下同 *)
- b' = b = 0; c' = c = 1;
- (*过 A、B 两点的复斜率定义*)
- k[a_, b_] := (a - b)/(a' - b');
- k'[a_, b_] := 1/k[a, b];
- (*直线 AB 与 CD 的交点 *)
- FourPoint[a_, b_, c_, d_] := ((c' d - c d') (a - b) - (a' b - a b') (c - d))/((a - b) (c' - d') - (a' - b') (c - d));
- FourPoint'[a_, b_, c_, d_] := -((c d' - c' d) (a' - b') - (a b' - a' b) (c' - d'))/((a - b) (c' - d') - (a' - b') (c - d));
- (* 由 ∠ABP = ∠PCD,得到 k[a, b]/k[p, b] = k[p,c]/k[d, c], 记它们的商为 u *)
- (* 由 PA⊥AB,PD⊥ DC 得到 k[p, a] == -k[a, b],k[p, d] == -k[d, c] *)
- (* 建立方程,硬解之 *)
- sol = Solve[{k[a, b]/k[p, b] == u, k[p,c]/k[d, c] == u, k[p, a] == -k[a, b], k[p, d] == -k[d, c]}, {a, a', d, d'}];
- {a, a', d, d'} = {a, a', d, d'} /. Last[sol];
- (* 求 AC 与 BD 的交点 O *)
- o = FourPoint[a, c, b, d]; o' = FourPoint'[a, c, b, d];
- (* 分别求 OP 与 AD 的复斜率,验证其互为相反数 *)
- kop = Simplify[k[o, p]]; kad = Simplify[k[a, d]];
- (* 若 OP⊥AD,则结果应为 0,反之亦然 *)
- Simplify[kop + kad];
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|