简介:《相似三角形培优训练(含答案)》是一份面向初中几何培优的Word文档,精选多道相似三角形综合题,覆盖动点问题、双垂直模型、A/X字型辅助线、折叠翻折变换、线段比值与等积式证明等典型题型,适合需要强化相似三角形判定、对应边成比例及面积比关系的学生,也适合数学教师作为专题培优或课后练习的选题参考。资源包内共1个doc文档,大小约591KB,题目按难度与类型分层编排,从基础动点求值到构造辅助线的综合证明,每道题均配有较详细的解题思路和答案,便于自测与讲评。目前已有53人学习下载。通过这份训练,读者不仅能熟悉动态几何中建立函数解析式、分类讨论的方法,还能掌握双垂直模型、A字型与X字型辅助线、折叠对称等常见处理手段,从而提升几何综合题的解题效率与准确率。
1. 相似三角形培优训练:把几何题当成算法题来拆
很多人拿到“相似三角形培优训练(含答案).doc”这个标题,第一反应是打开 Word 翻答案页。我习惯反过来处理:把这份训练当成一套可以计算、可以验证、还能自动排版的几何题库,直接用工程视角解一遍。相似三角形的核心是比例关系,而比例关系在计算机视觉、三维投影和图像缩放里都是基础操作。如果你能熟练写出两个三角形相似的判定条件,等价于能判断两组点构成的两个图形是否只差一个缩放。所以这篇文章不打算罗列定理,而是把判定、构造、动态验证和文档生成串成一条可复用的链路。不论你是要给学生编题,还是正在做教育信息化工具,这套流程都能直接抄去用。
2. 相似三角形判定逻辑的可计算表达:AA、SAS 与 SSS
相似三角形的判定在欧氏几何里是定理,但在工程视角下更像“等价判断”:给定两组有条件限制的几何数据,在误差允许范围内判断它们是否匹配。培优训练里所有题目最终都会落到三条判定定理上,所以先把计算模型打通,后面构造 A 字型、X 字型还是处理动点题,都能用同一套代码验证。
2.1 AA 判定:先比较角度,容差比精确值更可靠
AA 判定要求两个三角形有两组对应角相等,第三组角由内角和自动满足。在平行线密集的几何题里,同位角、内错角、对顶角经常直接给出等角关系,所以 AA 往往是手算时最快的方法。但写成代码时,直接从坐标算角度容易踩浮点误差的坑。
import math def angle_between(v1, v2): dot = v1[0] * v2[0] + v1[1] * v2[1] n1 = math.hypot(v1[0], v1[1]) n2 = math.hypot(v2[0], v2[1]) cos_a = max(-1.0, min(1.0, dot / (n1 * n2))) return math.degrees(math.acos(cos_a)) A, B, C = (0, 0), (4, 0), (0, 3) angle_at_B = angle_between((C[0] - B[0], C[1] - B[1]), (A[0] - B[0], A[1] - B[1])) print(angle_at_B)这段代码用向量点积反推夹角,核心是先把点积归一化到 -1 到 1 之间。max(-1.0, min(1.0, ...))这一行很关键,因为浮点计算里点积除以模长后可能得到 1.0000000002,直接传给acos会返回nan。比较两个角是否相等时,我不会用==,而是用abs(a1 - a2) < 1e-6。AA 判定的优点是它对平移、旋转、缩放都不敏感,所以适合做图形相似的前置筛选。
2.2 SAS 判定:边比与夹角是二元组,不能单独比较
SAS 需要两组对应边成比例,并且夹角相等。这个“夹角”必须是两条对应边中间夹住的那个角,顺序反了结论就错了。工程上实现 SAS 时,我一般先算边长比例,再算夹角,两步都通过才返回相似:
def similar_by_sas(t1, t2, eps=1e-6): # t1, t2: 每个元素是 (坐标点A, 坐标点B, 夹角顶点坐标) n1 = math.dist(t1[0], t1[1]) n2 = math.dist(t2[0], t2[1]) m1 = math.dist(t1[1], t1[2]) m2 = math.dist(t2[1], t2[2]) if abs(n1 / n2 - m1 / m2) > eps: return False angle1 = angle_between((t1[0][0] - t1[1][0], t1[0][1] - t1[1][1]), (t1[2][0] - t1[1][0], t1[2][1] - t1[1][1])) angle2 = angle_between((t2[0][0] - t2[1][0], t2[0][1] - t2[1][1]), (t2[2][0] - t2[1][0], t2[2][1] - t2[1][1])) return abs(angle1 - angle2) < eps代码里n1 / n2和m1 / m2分别表示两组对应边的比例,注意对应关系必须由调用者保证。math.dist计算欧氏距离,比手写sqrt((x1-x2)**2 + ...)更清晰。需要提醒的是,SAS 判定里边长比例的误差会被放大,比如两边都在 100 像素量级时,eps设为 1e-6 就会过于严格,实际题目的坐标比例不会这么极端。反过来,如果题目给出的是小数边长,我会把eps放宽到 1e-4。
2.3 SSS 判定:边长排序后再算比值,对应关系才不会乱
SSS 是指三边对应成比例,代码实现时最容易出错的地方是“对应”二字。几何题里两个三角形的顶点顺序未必一致,直接按输入顺序比会得到错误结论。所以我拿到三个顶点后,会先把三条边长按大小排序,再逐位相除:
def side_lengths(p1, p2): return math.hypot(p2[0] - p1[0], p2[1] - p1[1]) def is_similar_sss(t1, t2, eps=1e-6): s1 = sorted(side_lengths(t1[i % 3], t1[(i + 1) % 3]) for i in range(3)) s2 = sorted(side_lengths(t2[i % 3], t2[(i + 1) % 3]) for i in range(3)) if any(abs(a) < eps for a in s1 + s2): return False ratios = [a / b for a, b in zip(s1, s2)] return all(abs(r - ratios[0]) < eps for r in ratios)sorted排序后,最长的边对应最长的边,最短的对应最短的,这样规避了顶点顺序问题。i % 3配合(i + 1) % 3用来完整遍历三条边。中间那个any(abs(a) < eps)是防止除零,因为退化三角形的边长可能为 0。注意 SSS 判定只能说明“形状相同”,不能区分镜像关系;如果培优题里明确要求方向一致,还得额外检查顶点绕向,比如用叉积符号判断三个顶点是顺时针还是逆时针。
| 判定方式 | 需要的数据 | 编程侧重点 | 容差建议 |
|---|---|---|---|
| AA | 两组角 | 反余弦截断,浮点差比较 | 1e-6 |
| SAS | 两边比例 + 夹角 | 除法比例误差与角度比较 | 1e-4 ~ 1e-6 |
| SSS | 三边比例 | 排序后对应,防除零 | 1e-6 |
提示:几何题目给出的边长坐标如果是手工测量或屏幕取点,不建议把容差设到 1e-8 以下。否则会把本来相似的两个三角形误判为不相似。
3. 培优题里出现频率最高的两类构造:A 字型与 X 字型
判定定理只是地基。培优训练之所以叫“培优”,是因为题目通常不会直接把相似关系写在题干里,而是把图形藏在辅助线后面。A 字型和 X 字型是初中相似三角形题里出现频率最高的两类结构,识别它们比套定理更重要。
3.1 从平行线出发,识别 A 字型相似结构
A 字型指在一个大三角形 ABC 内部,DE 与 BC 平行,D 在 AB 上,E 在 AC 上,此时三角形 ADE 与三角形 ABC 相似。这个模型的名字很形象:形状像一个大写的 A 被中间横线截断。识别它的关键线索是“平行”两个字。
3.1.1 辅助线做法一:过点作平行,构造 A 字型
如果题目没有直接给出平行关系,但出现了某个边的中点或等分点,我会主动添加辅助线。比如 D 是 AB 中点,过 D 作 DE 平行于 BC,交 AC 于 E,那么 DE 就是中位线,三角形 ADE 与 ABC 的相似比是 1:2。这种构造能让隐藏的比例关系立刻显式化。
def midpoint(p1, p2): return ((p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2) A, B, C = (0, 0), (6, 0), (2, 4) D = midpoint(A, B) # 过 D 作平行 BC 的线,求与 AC 的交点 E # 用参数方程: E = A + t * (C - A) # D + s * (C - B) 与 AC 相交,用叉积求解 E = (A[0] + 0.5 * (C[0] - A[0]), A[1] + 0.5 * (C[1] - A[1])) print("D:", D, "E:", E)这里我直接用中点比例算出 E,而不是真正求解平行线的交点,因为 DE 平行于 BC 时,D 和 E 在同一条边上的比例一致,都是 1:2。实际工程里如果比例不是 1:2,可以改写成一般形式:设t为 D 在 AB 上的比例,则 E = A + t * (C - A)。这个结论在动态几何里会反复用到。
3.1.2 辅助线做法二:延长相交,得到 X 字型
X 字型也叫 8 字型,结构是两条线段交叉,形成两对对顶角相等的三角形。比如四边形 ABCD 的对角线 AC 和 BD 交于 O,如果 AB 平行于 CD,那么三角形 AOB 与 COD 相似。添加辅助线时,如果两条边看起来迟早会相交,优先考虑延长它们,把隐藏的 X 字型“压”出来。延长线产生的对顶角和同旁内角都是判定的现成材料。
3.2 用坐标法验证 X 字型的比例关系
X 字型的比例关系可以用坐标法快速验证:把相关点放进坐标系,计算两条线段所在方向的叉积,判断平行关系,再算边长比。
def is_parallel(p1, p2, q1, q2, eps=1e-9): v1x, v1y = p2[0] - p1[0], p2[1] - p1[1] v2x, v2y = q2[0] - q1[0], q2[1] - q1[1] cross = v1x * v2y - v1y * v2x return abs(cross) < eps def cross_ratio(p1, p2, q1, q2): l1 = math.hypot(p2[0] - p1[0], p2[1] - p1[1]) l2 = math.hypot(q2[0] - q1[0], q2[1] - q1[1]) return l1 / l2 if abs(l2) > 1e-9 else Noneis_parallel里用叉积判断平行,叉积为零表示两个向量方向相同或相反。X 字型里只要有一组对边平行,就可以继续用cross_ratio计算对应边的比例。这段代码的好处是绕开了角度,直接用向量几何得到结论。我在出题时也会用cross_ratio反推题目条件是否自洽,避免给出一个实际不存在的相似比。
3.3 一线三等角模型:等角在同一条直线上时的识别技巧
一线三等角是培优训练的高频考点:直线上有三个相等的角,且角的顶点在同一条直线上,此时会出现一对相似的三角形。识别技巧是先把这条直线画出来,标出三个等角的位置,再寻找共享边的两个三角形。这种题比 A 字型和 X 字型多了两个条件,但本质还是用 AA 判定。
| 模型 | 触发条件 | 关键辅助线 | 常用判定 |
|---|---|---|---|
| A 字型 | 三角形内部有一条平行线 | 过等分点作平行线 | AA |
| X 字型 | 两条线段交叉且有平行关系 | 延长线段至相交 | AA 或 SAS |
| 一线三等角 | 一条直线上出现三个等角 | 连接等角顶点 | AA |
4. 动态几何中的相似不变性:动点题怎么算、怎么验
动态几何题是培优训练的进阶关卡。题目给出一个固定图形,再让一个点沿某条边移动,问两个三角形是否始终保持相似,或者某些线段比是否为定值。这类题的落点和普通相似题不同:你必须把动点坐标化,并验证相似关系在参数变化时是否稳定。
4.1 动点参数化:让点 P 等于 A 加上 t 倍的向量差
最常见的处理方法是设动点 P 在线段 AB 上运动,令 P = A + t * (B - A),其中 t 属于 [0, 1]。这样所有涉及 P 的线段长度都变成 t 的一次函数,相似比也随之成为 t 的表达式。判断“恒相似”等价于判断这个表达式在 t 的整个区间上是否为常数。
def point_on_segment(A, B, t): return (A[0] + (B[0] - A[0]) * t, A[1] + (B[1] - A[1]) * t) def check_similarity_over_t(A, B, C, D, E, steps=100): prev_ratio = None for i in range(steps + 1): t = i / steps P = point_on_segment(A, B, t) d1 = math.hypot(P[0] - C[0], P[1] - C[1]) d2 = math.hypot(P[0] - D[0], P[1] - D[1]) ratio = d1 / d2 if prev_ratio and abs(ratio - prev_ratio) > 1e-6: return False prev_ratio = ratio return True这段代码把 t 从 0 到 1 切成 100 个采样点,逐个计算线段长度比。只要有一个采样点上的比例和之前不一致,就说明相似关系并非恒成立。注意采样法不能证明“永远成立”,它只能证明这些采样点上成立;严格的验证还是要把相似比写成 t 的解析式,看它是否恒等于常数。动手写题时我会两个做法都做一遍,采样法做快速检查,解析式做最终判断。
4.2 用 GeoGebra 做动态验证的两个关键操作
GeoGebra 很适合用来做动态相似性的可视化验证。第一个关键操作是建立滑动条 t,范围设成 0 到 1,增量设成 0.01。第二个关键操作是把动点定义成A + t (B - A),而不是直接输入一个固定坐标。这样拖动滑动条时,点会严格沿线段移动,所有依赖它的几何对象都会重算。此时用工具栏里的“距离或长度”工具量出两条对应边,再计算比例,拖动过程中可以看到比例数值是否稳定。如果比例在某一小段明显变化,说明该相似关系只在局部成立。
4.3 动点题容易掉进的三个坑
动点题验证时有三个坑我反复踩过,整理成表供参考:
| 坑 | 现象 | 防范手段 |
|---|---|---|
| 浮点等号失效 | d1 == d2在个别 t 值上返回 False | 用abs(d1 - d2) < 1e-6 |
| 采样间距太大 | 跳过了比例突变的中间区间 | 将 steps 提高到 200 以上 |
| t 越界 | 点跑到线段延长线上,三角形退化 | 先判断 t 是否在 [0, 1] 内,再继续计算 |
提示:如果题目要求“相似比不变”而不是“相似关系存在”,验证时不要只看
abs(d1 - d2),要看d1 / d2是否恒定。两个量在相似关系中含义不同。
5. 把培优训练装进一份含答案的 doc:LaTeX 排版与检查
最后一步是把题目和答案组织成可打印的文档。基于标题里的.doc后缀,我常用的流程是:用 LaTeX 写源文件,编译成 PDF,再转成 doc。TikZ 画几何图、答案区单独隔离是排版的核心。
5.1 TikZ 画相似图形的三个常用命令
\documentclass{article} \usepackage[left=2cm,right=2cm]{geometry} \usepackage{amsmath, tikz} \begin{document} \begin{tikzpicture}[scale=1.2] \coordinate (A) at (0,0); \coordinate (B) at (5,0); \coordinate (C) at (0,3); \draw (A) -- (B) -- (C) -- cycle; \node[below] at (A) {$A$}; \node[below] at (B) {$B$}; \node[left] at (C) {$C$}; \end{tikzpicture} \end{document}coordinate定义三个顶点,\draw画出三角形的三条边,cycle让路径闭合回起点。\node用来标注顶点名,below和left控制标签在顶点的哪个方向。画相似三角形时,第二个三角形可以用[scale=0.5]整体缩小,再配合\draw的坐标偏移放到合适位置。这样两个三角形的比例关系在视觉上一眼就能看出来。
5.2 题目与答案分离的版面套路
同一份训练要同时输出纯题目版和含答案版,我的做法是定义一个大括号命令:
\newcommand{\answer}[1]{} % 发布答案版时改成: % \newcommand{\answer}[1]{\textbf{答案:} #1}题目区域正文写\answer{...},编辑答案是直接在源文件里写;发布纯题目版时保留空定义,答案内容会被自动忽略。这样避免维护两份几乎相同的文档,也不会出现题目改了答案忘改的情况。
5.3 交稿前检查相似三角形的三个关键点
- 对应边顺序。写成
\frac{AD}{AB}=\frac{AE}{AC}前,先确认 AD 和 AB 指向同一个顶点,AE 和 AC 也是同一个顶点,顺序颠倒会导致整个比例错误。 - 相似比和坐标是否一致。用第 2 章的
is_similar_sss跑一遍题目数据,确保算出来的比值和文档里写的一致。 - 答案区是否被正确隐藏。编译前查一次
\newcommand{\answer}的定义,避免把答案发给学生。
本文还有配套的精品资源,点击获取