余弦定理的无字证明(几何直观演示)
几何画板及绘图内容加载中,请稍等……
① 本范例通过纯几何构造,以无字证明的方式直观展示余弦定理 a² = b² + c² − 2bc·cosA 的成立过程,无需代数推导即可看出面积关系。② 核心数学概念是余弦定理、勾股定理的推广、三角形边角关系以及面积恒等变换。③ 作图要点:从构造摘要可见,使用了 Intersect(交点)、CircleSector(圆扇形)、Polygon(多边形)、Midpoint(中点)、Circle(圆)、Ray(射线)、Line(直线)、Vector(向量)、Translate(平移)、OrthogonalLine(垂线)等命令,并创建了多个点、线段、多边形对象(如 poly1、poly2、poly3)以及辅助圆和扇形,通过分割与重组图形来呈现面积等式。④ 适合高中几何教学、数学证明的直观演示,也可用于师范生或数学爱好者理解定理的几何本质,作为课堂互动或自主探索的素材。
GeoGebra 命令及参数
Intersect(xAxis, yAxis) → BPoint(yAxis) → CPoint(xAxis) → DCircleSector(B, C, D) → cPointIn(c) → APolygon(B, A, 4) → poly3, s, t, a, b, L, MMidpoint(L, B) → TCircle(B, A) → eIntersect(e, xAxis, 2) → EPoint(xAxis) → FRay(E, F) → fPoint(f) → GPolygon(G, B, 4) → poly2, n, p, q, r, J, KIf(4 < d < 5, Translate[M, Vector[J, Dilate[J, 5 - d, K]]], Translate[M, Vector[J, Dilate[J, 0, K]]]) → ULine(U, xAxis) → i_1Polygon(A, G, 4) → poly1, j, k, l, m, H, IMidpoint(A, H) → SVector(T, S) → wTranslate(M, w) → M'Polygon(B, A, G) → t1, g, h, iOrthogonalLine(M', h) → h_1Intersect(i_1, h_1) → A_1Intersect(h_1, i) → ZMidpoint(B, K) → NOrthogonalLine(N, h) → f_1OrthogonalLine(N, f_1) → g_1Intersect(g_1, poly2) → O, PIntersect(f_1, poly2) → Q, RPolygon(N, P, B, R) → q1, n_1, p_1, b_1, r_1Polygon(N, R, G, O) → q2, n_2, r_2, g_2, oPolygon(N, Q, J, P) → q3, n_3, q_1, j_1, p_2Polygon(Q, N, O, K) → q4, q_2, n_4, o_1, k_1If(0 < d < 1, Polygon[Translate[Q, Vector[N, Dilate[N, 1 - d, I]]], Translate[N, Vector[N, Dilate[N, 1 - d, I]]], Translate[O, Vector[N, Dilate[N, 1 - d, I]]], Translate[K, Vector[N, Dilate[N, 1 - d, I]]]], Polygon[Translate[Q, Vector[N, Dilate[N, 0, I]]], Translate[N, Vector[N, Dilate[N, 0, I]]], Translate[O, Vector[N, Dilate[N, 0, I]]], Translate[K, Vector[N, Dilate[N, 0, I]]]]) → q5If(0 < d < 1, Polygon[Translate[N, Vector[N, Dilate[N, 1 - d, H]]], Translate[Q, Vector[N, Dilate[N, 1 - d, H]]], Translate[J, Vector[N, Dilate[N, 1 - d, H]]], Translate[P, Vector[N, Dilate[N, 1 - d, H]]]], Polygon[Translate[N, Vector[N, Dilate[N, 0, H]]], Translate[Q, Vector[N, Dilate[N, 0, H]]], Translate[J, Vector[N, Dilate[N, 0, H]]], Translate[P, Vector[N, Dilate[N, 0, H]]]]) → q6If(0 < d < 1, Polygon[Translate[N, Vector[N, Dilate[N, 1 - d, A]]], Translate[R, Vector[N, Dilate[N, 1 - d, A]]], Translate[G, Vector[N, Dilate[N, 1 - d, A]]], Translate[O, Vector[N, Dilate[N, 1 - d, A]]]], Polygon[Translate[N, Vector[N, Dilate[N, 0, A]]], Translate[R, Vector[N, Dilate[N, 0, A]]], Translate[G, Vector[N, Dilate[N, 0, A]]], Translate[O, Vector[N, Dilate[N, 0, A]]]]) → q7If(0 < d < 1, Polygon[Translate[N, Vector[N, Dilate[N, 1 - d, G]]], Translate[P, Vector[N, Dilate[N, 1 - d, G]]], Translate[B, Vector[N, Dilate[N, 1 - d, G]]], Translate[R, Vector[N, Dilate[N, 1 - d, G]]]], Polygon[Translate[N, Vector[N, Dilate[N, 0, G]]], Translate[P, Vector[N, Dilate[N, 0, G]]], Translate[B, Vector[N, Dilate[N, 0, G]]], Translate[R, Vector[N, Dilate[N, 0, G]]]]) → q8Polygon(L, M, B, A) → q9, l_1, m_1, b_2, a_1If(2 < d < 3, Polygon[Translate[L, Vector[T, Dilate[T, 3 - d, S]]], Translate[M, Vector[T, Dilate[T, 3 - d, S]]], Translate[B, Vector[T, Dilate[T, 3 - d, S]]], Translate[A, Vector[T, Dilate[T, 3 - d, S]]]], Polygon[Translate[L, Vector[T, Dilate[T, 0, S]]], Translate[M, Vector[T, Dilate[T, 0, S]]], Translate[B, Vector[T, Dilate[T, 0, S]]], Translate[A, Vector[T, Dilate[T, 0, S]]]]) → q10If(4 < d < 5, Translate[B, Vector[J, Dilate[J, 5 - d, K]]], Translate[B, Vector[J, Dilate[J, 0, K]]]) → VPolygon(M, U, V, B) → q11, m_2, u, v, b_3Translate(B, w) → B'Translate(L, w) → L'Translate(A, w) → A'Vector(N, G) → u_1Vector(N, A) → v_1Vector(N, H) → w_1Vector(N, I) → c_1Translate(Q, w_1) → Q'Translate(R, u_1) → R'Intersect(h_1, p) → WPolygon(M, A_1, Z, B) → q12, s_1, t_1, d_1, e_1Polygon(A_1, Z, G, U) → q13, f_2, h_2, i_2, j_2If(6 < d < 7, Polygon[Translate[M, Vector[B, Dilate[B, 7 - d, B']]], Translate[A_1, Vector[B, Dilate[B, 7 - d, B']]], Translate[Z, Vector[B, Dilate[B, 7 - d, B']]], Translate[B, Vector[B, Dilate[B, 7 - d, B']]]], Polygon[Translate[M, Vector[B, Dilate[B, 0, B']]], Translate[A_1, Vector[B, Dilate[B, 0, B']]], Translate[Z, Vector[B, Dilate[B, 0, B']]], Translate[B, Vector[B, Dilate[B, 0, B']]]]) → q14If(6 < d < 7, Polygon[Translate[A_1, Vector[G, Dilate[G, 7 - d, A']]], Translate[Z, Vector[G, Dilate[G, 7 - d, A']]], Translate[G, Vector[G, Dilate[G, 7 - d, A']]], Translate[U, Vector[G, Dilate[G, 7 - d, A']]]], Polygon[Translate[A_1, Vector[G, Dilate[G, 0, A']]], Translate[Z, Vector[G, Dilate[G, 0, A']]], Translate[G, Vector[G, Dilate[G, 0, A']]], Translate[U, Vector[G, Dilate[G, 0, A']]]]) → q15If(6 < d < 7, Rotate[Polygon[Translate[M, Vector[B, Dilate[B, 7 - d, M']]], Translate[A_1, Vector[B, Dilate[B, 7 - d, M']]], Translate[Z, Vector[B, Dilate[B, 7 - d, M']]], Translate[B, Vector[B, Dilate[B, 7 - d, M']]]], ((-(d - 6)) * π / 2), M'], Rotate[Polygon[Translate[M, Vector[B, Dilate[B, 0, M']]], Translate[A_1, Vector[B, Dilate[B, 0, M']]], Translate[Z, Vector[B, Dilate[B, 0, M']]], Translate[B, Vector[B, Dilate[B, 0, M']]]], ((-π)) / 2, M']) → q16If(6 < d < 7, Rotate[Polygon[Translate[A_1, Vector[G, Dilate[G, 7 - d, B']]], Translate[Z, Vector[G, Dilate[G, 7 - d, B']]], Translate[G, Vector[G, Dilate[G, 7 - d, B']]], Translate[U, Vector[G, Dilate[G, 7 - d, B']]]], ((-(d - 6)) * π / 2), B'], Rotate[Polygon[Translate[A_1, Vector[G, Dilate[G, 0, B']]], Translate[Z, Vector[G, Dilate[G, 0, B']]], Translate[G, Vector[G, Dilate[G, 0, B']]], Translate[U, Vector[G, Dilate[G, 0, B']]]], ((-π)) / 2, B']) → q17Circle(B, Segment[Q', B']) → c_2Circle(U, Radius[c_2]) → d_2