二项式乘法特例:完全平方公式的交互式练习
几何画板及绘图内容加载中,请稍等……
所属专题
Binomische Formeln
该GeoGebra范例演示了二项式乘法中的特殊情形——完全平方公式(第一、第二类二项式公式)的图形化与交互式练习。核心数学概念包括二项式展开、完全平方公式 (a+b)² = a² + 2ab + b² 及其逆向应用,以及通过拆分大数快速计算平方数。作图要点:范例使用了Sequence、Element、Textfield、PolyLine、Segment、Point、Polygon、Text、If、SelectedIndex、CircleArc、Mirror、Join、RemoveUndefined、Angle等GeoGebra命令,构建了包含文本框、按钮、滑块、图形反馈和动态验证的交互界面,对象包括输入框、按钮、文本、图形元素等,用于实现选择题、开放题和即时反馈。适合初中7-8年级学生,用于推导、图形化理解并应用三个二项式公式,尤其适合课堂互动和自主练习。
GeoGebra 命令及参数
Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {9, 9, 7, 5, 7, 4, 2, 8, 9, 7}Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumberTextfield(input) → inputBoxPolyLine(PosSB, Corner[txt021, 2] + (-0.5, 0.1), Corner[txt021, 1] + (0, 0.1), Corner[txt021, 4] + (0, 0.1), Corner[txt021, 3] + (0.1, 0.1), Corner[txt021, 2] + (0.1, 0.5), PosSB) → sb02Segment(PosP1, PosA1) → seg11Segment(PosP4, PosA2) → seg12Point(Diagonalen) → PointPSegment(PosC + (0, disCap2), PosD + (0, disCap2)) → segCap11Segment(PosD + (0, disCap1), PosP3 + (0, disCap1)) → segCap12Segment(PosP3 + (0, disCap1), PosC + (0, disCap1)) → segCap13Segment(PosA + ((-disCap2), 0), PosD + ((-disCap2), 0)) → segCap14Segment(PosA + ((-disCap1), 0), PosP4 + ((-disCap1), 0)) → segCap15Segment(PosD + ((-disCap1), 0), PosP4 + ((-disCap1), 0)) → segCap16Sequence(PosD + (k * (PosA - PosD)), k, 0, 1, 0.05) → PointList03Point(PointList03) → Pos03PolyLine(PosSB, Corner[txt041, 2] + (-0.5, 0.1), Corner[txt041, 1] + (0, 0.1), Corner[txt041, 4] + (0, 0.1), Corner[txt041, 3] + (0.1, 0.1), Corner[txt041, 2] + (0.1, 0.5), PosSB) → sb04PolyLine(PosSB, Corner[txt051, 2] + (-0.5, 0.1), Corner[txt051, 1] + (0, 0.1), Corner[txt051, 4] + (0, 0.1), Corner[txt051, 3] + (0.1, 0.1), Corner[txt051, 2] + (0.1, 0.5), PosSB) → sb05Polygon(PosDD1, PosDD1 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD1 + (widthdd / 2, ((-heightdd)) / 2), PosDD1 + (widthdd / 2, heightdd / 2), PosDD1 + (((-widthdd)) / 2, heightdd / 2), PosDD1 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → polydd1, f_1, g_2, h_1, i_1, j_1, k_1PolyLine(PosDD1 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD1 + (widthdd / 2, ((-heightdd)) / 2), PosDD1 + (widthdd / 2, heightdd / 2), PosDD1 + (((-widthdd)) / 2, heightdd / 2), PosDD1 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → pldd1Polygon(PosDD2, PosDD2 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD2 + (widthdd / 2, ((-heightdd)) / 2), PosDD2 + (widthdd / 2, heightdd / 2), PosDD2 + (((-widthdd)) / 2, heightdd / 2), PosDD2 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → polydd2, posdd2, l_1, m_1, n_1, p_1, q_1Polygon(PosDD3, PosDD3 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD3 + (widthdd / 2, ((-heightdd)) / 2), PosDD3 + (widthdd / 2, heightdd / 2), PosDD3 + (((-widthdd)) / 2, heightdd / 2), PosDD3 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → polydd3, posdd3, r_1, s_1, t_1, a_1, b_1Polygon(PosDD4, PosDD4 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD4 + (widthdd / 2, ((-heightdd)) / 2), PosDD4 + (widthdd / 2, heightdd / 2), PosDD4 + (((-widthdd)) / 2, heightdd / 2), PosDD4 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → polydd4, posdd4, c_1, d_1, e_1, f_{2}, g_1PolyLine(PosDD2 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD2 + (widthdd / 2, ((-heightdd)) / 2), PosDD2 + (widthdd / 2, heightdd / 2), PosDD2 + (((-widthdd)) / 2, heightdd / 2), PosDD2 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → pldd2PolyLine(PosDD3 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD3 + (widthdd / 2, ((-heightdd)) / 2), PosDD3 + (widthdd / 2, heightdd / 2), PosDD3 + (((-widthdd)) / 2, heightdd / 2), PosDD3 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → pldd3PolyLine(PosDD4 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD4 + (widthdd / 2, ((-heightdd)) / 2), PosDD4 + (widthdd / 2, heightdd / 2), PosDD4 + (((-widthdd)) / 2, heightdd / 2), PosDD4 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → pldd4Text("\textsf{\Big{a²}}", PosDD2 + (0, 0.05), false, true, 0, 0) → txtDD2Text("\textsf{\Big{b²}}", PosDD4 + (0, 0.05), false, true, 0, 0) → txtDD4Text("\textsf{\Big{a \cdot b}}", PosDD1 + (0, 0.05), false, true, 0, 0) → txtDD1Text("\textsf{\Big{a \cdot b}}", PosDD3 + (0, 0.05), false, true, 0, 0) → txtDD3If(IndexOf[true, Sequence[IsInRegion[PosDD1 + (((-widthdd)) / 2, ((-heightdd)) / 2), QuadratList(k, 1)], k, 1, 5]] ≟ IndexOf[true, Sequence[IsInRegion[PosDD1 + (widthdd / 2, heightdd / 2), QuadratList(k, 1)], k, 1, 5]], IndexOf[true, Sequence[IsInRegion[PosDD1, QuadratList(k, 1)], k, 1, 5]], NaN) → RegionDD1If(IndexOf[true, Sequence[IsInRegion[PosDD2 + (((-widthdd)) / 2, ((-heightdd)) / 2), QuadratList(k, 1)], k, 1, 5]] ≟ IndexOf[true, Sequence[IsInRegion[PosDD2 + (widthdd / 2, heightdd / 2), QuadratList(k, 1)], k, 1, 5]], IndexOf[true, Sequence[IsInRegion[PosDD2, QuadratList(k, 1)], k, 1, 5]], NaN) → RegionDD2If(IndexOf[true, Sequence[IsInRegion[PosDD3 + (((-widthdd)) / 2, ((-heightdd)) / 2), QuadratList(k, 1)], k, 1, 5]] ≟ IndexOf[true, Sequence[IsInRegion[PosDD3 + (widthdd / 2, heightdd / 2), QuadratList(k, 1)], k, 1, 5]], IndexOf[true, Sequence[IsInRegion[PosDD3, QuadratList(k, 1)], k, 1, 5]], NaN) → RegionDD3If(IndexOf[true, Sequence[IsInRegion[PosDD4 + (((-widthdd)) / 2, ((-heightdd)) / 2), QuadratList(k, 1)], k, 1, 5]] ≟ IndexOf[true, Sequence[IsInRegion[PosDD4 + (widthdd / 2, heightdd / 2), QuadratList(k, 1)], k, 1, 5]], IndexOf[true, Sequence[IsInRegion[PosDD4, QuadratList(k, 1)], k, 1, 5]], NaN) → RegionDD4PolyLine(PosSB, Corner[txt061, 2] + (-0.5, 0.1), Corner[txt061, 1] + (0, 0.1), Corner[txt061, 4] + (0, 0.1), Corner[txt061, 3] + (0.1, 0.1), Corner[txt061, 2] + (0.1, 0.5), PosSB) → sb06PolyLine(PosSB, Corner[txt081, 2] + (-0.5, 0.1), Corner[txt081, 1] + (0, 0.1), Corner[txt081, 4] + (0, 0.1), Corner[txt081, 3] + (0.1, 0.1), Corner[txt081, 2] + (0.1, 0.5), PosSB) → sb08PolyLine(PosSB, Corner[txt101, 2] + (-0.5, 0.1), Corner[txt101, 1] + (0, 0.1), Corner[txt101, 4] + (0, 0.1), Corner[txt101, 3] + (0.1, 0.1), Corner[txt101, 2] + (0.1, 0.5), PosSB) → sb10If(PointP ∈ Diagonalen(1), 1, 2) → CasePSegment(PosA + (0, (-disCap2)), PosB + (0, (-disCap2))) → segCap21Segment(PosA + (0, (-disCap1)), PosQ1 + (0, (-disCap1))) → segCap22Segment(PosQ1 + (0, (-disCap1)), PosB + (0, (-disCap1))) → segCap23Segment(PosB + (disCap2, 0), PosC + (disCap2, 0)) → segCap24Segment(PosB + (disCap1, 0), PosQ2 + (disCap1, 0)) → segCap25Segment(PosC + (disCap1, 0), PosQ2 + (disCap1, 0)) → segCap26Sequence(PosImgTrixi1 + (0, -1.25) + (k * (0, (-heightdd) - 0.75)), k, 0, 3) → PosParkSelectedIndex(dropdown41) → index4SelectedIndex(dropdown111) → index111SelectedIndex(dropdown112) → index112If(step ≟ 3, (7.5, 3.5), (7.37, 1.25)) → PosImgFink1PolyLine(PosSB, Corner[txt011, 2] + (0.1, 0.4), Corner[txt011, 2] + (0.1, 0.1), Corner[txt011, 1] + (0, 0.1), Corner[txt011, 4] + (0, 0.1), Corner[txt011, 3] + (0.1, 0.1), Corner[txt011, 3] + (0.1, -0.3), PosSB) → sb01Textfield(input061) → InputBox061Textfield(input062) → InputBox062Textfield(input063) → InputBox063Textfield(input064) → InputBox064CircleArc(Midpoint[Pos101, Pos103] + (0, dis6), Pos103, Pos101) → arc101CircleArc(Midpoint[Pos101, Pos104] + (0, dis6), Pos104, Pos101) → arc102Mirror(CircleArc[Midpoint[Pos102, Pos103] + (0, dis6), Pos103, Pos102], SpiegelGerade) → arc103Mirror(CircleArc[Midpoint[Pos102, Pos104] + (0, dis6), Pos104, Pos102], SpiegelGerade) → arc104Textfield(input021) → InputBox021Textfield(input022) → InputBox022Textfield(input023) → InputBox023Textfield(input024) → InputBox024If(step ≟ 2, correct021 ∧ correct022 ∧ correct023 ∧ correct024, step ≟ 3, IndexOf[Pos03, PointList03] ≟ Length[PointList03], step ≟ 6, correct061 ∧ correct062 ∧ correct063 ∧ correct064, true) → clickableBtnNextPolyLine(PosSB, Corner[txt031, 2] + (0.1, 0.75), Corner[txt031, 2] + (0.1, 0.1), Corner[txt031, 1] + (0, 0.1), Corner[txt031, 4] + (0, 0.1), Corner[txt031, 3] + (0.1, 0.1), Corner[txt031, 2] + (0.1, 1.25), PosSB) → sb03Join({Sequence[Segment[Corner[4] + (RasterPixMat * ((k * RasterStepXY), 0)), Corner[4] + (RasterPixMat * ((k * RasterStepXY), RasterMaxY))], k, 0, RasterMaxX / RasterStepXY], Sequence[Segment[Corner[4] + (RasterPixMat * (0, (k * RasterStepXY))), Corner[4] + (RasterPixMat * (RasterMaxX, (k * RasterStepXY)))], k, 0, RasterMaxY / RasterStepXY]}) → RasterStreckenJoin({Sequence[Text[UnicodeToLetter[65 + k], Midpoint[Corner[4] + (RasterPixMat * ((k * RasterStepXY), RasterMaxY)), Corner[4] + (RasterPixMat * (((k + 1) * RasterStepXY), RasterMaxY))], false, true, 0, -1], k, 0, RasterMaxX / RasterStepXY - 1], Sequence[Text[("" * k), Midpoint[Corner[4] + (RasterPixMat * (RasterMaxX, ((k - 1) * RasterStepXY))), Corner[4] + (RasterPixMat * (RasterMaxX, (k * RasterStepXY)))], false, true, 1, 0], k, 1, RasterMaxY / RasterStepXY]}) → RasterBeschriftungSequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunktePolyLine(PosSB, Corner[txt071, 2] + (-0.25, -0.1), Corner[txt071, 1] + (0, -0.1), Corner[txt071, 4] + (0, 0.1), Corner[txt071, 3] + (0.1, 0.1), Corner[txt071, 2] + (0.1, 0.5), PosSB) → sb07Text("\textsf{\begin{array}{c}\bold{Zieh mich}\\\bold{↓}\end{array}", Pos03, false, true, 1, -1) → Cap03RemoveUndefined({Segment[PosP3, (x(PosP3), y(Pos03))], If[IndexOf[Pos03, PointList03] ≥ IndexOf[PosP4, PointList03], SegList1(2)]}) → SegList03Text((If[step ≟ 6 ∧ correct061, "\bold{", "{"] * "\textsf{\Big{a²}}}"), Midpoint[PosD, PosP5], false, true, 0, 0) → txtCap1Text((If[step ≟ 6 ∧ correct064, "\bold{", "{"] * "\textsf{\Big{b²}}}"), Midpoint[PosB, PosP5], false, true, 0, 0) → txtCap2Angle(Center[arc101] + (1, 0), Center[arc101], Point[arc101, 1]) → Angle611Angle(Center[arc101] + (1, 0), Center[arc101], Point[arc101, 0]) → Angle612CircleArc(Center[arc101], Center[arc101] + (Radius[arc101] * (cos(Angle611 + (anim061 * (Angle612 - Angle611))), sin(Angle611 + (anim061 * (Angle612 - Angle611))))), Point[arc101, 1]) → AnimArc101Angle(Center[arc102] + (1, 0), Center[arc102], Point[arc102, 1]) → Angle621Angle(Center[arc102] + (1, 0), Center[arc102], Point[arc102, 0]) → Angle622CircleArc(Center[arc102], Center[arc102] + (Radius[arc102] * (cos(Angle621 + (anim062 * (Angle622 - Angle621))), sin(Angle621 + (anim062 * (Angle622 - Angle621))))), Point[arc102, 1]) → AnimArc102Angle(Center[arc103] + (1, 0), Center[arc103], Point[arc103, 1]) → Angle631Angle(Center[arc104] + (1, 0), Center[arc104], Point[arc104, 1]) → Angle641Angle(Center[arc103] + (1, 0), Center[arc103], Point[arc103, 0]) → Angle632Angle(Center[arc104] + (1, 0), Center[arc104], Point[arc104, 0]) → Angle642CircleArc(Center[arc103], Point[arc103, 1], Center[arc103] + (Radius[arc103] * (cos(Angle631 + (anim063 * (Angle632 - Angle631))), sin(Angle631 + (anim063 * (Angle632 - Angle631)))))) → AnimArc103CircleArc(Center[arc104], Point[arc104, 1], Center[arc104] + (Radius[arc104] * (cos(Angle641 + (anim064 * (Angle642 - Angle641))), sin(Angle641 + (anim064 * (Angle642 - Angle641)))))) → AnimArc104PolyLine(PosSB, Corner[txt063, 2] + (-0.25, 0), Corner[txt063, 1] + (-0.1, 0), Corner[txt063, 4] + (-0.1, 0.1), Corner[txt063, 3] + (0.1, 0.1), Corner[txt063, 2] + (0.1, 0.35), PosSB) → sb062Text((((If[step ≟ 6 ∧ correct063, "\bold{", "{"] * "\textsf{\Big{") * If[step < 6.5 ∧ Text[InputBox063] ≟ "b a", "b \cdot a", "a \cdot b"]) * "}}}"), Midpoint[PosA, PosP5], false, true, 0, 0) → txtCap3Text((((If[step ≟ 6 ∧ correct062, "\bold{", "{"] * "\textsf{\Big{") * If[step < 6.5 ∧ Text[InputBox062] ≟ "b a", "b \cdot a", "a \cdot b"]) * "}}}"), Midpoint[PosC, PosP5], false, true, 0, 0) → txtCap4
AI 绘图提示语参考
画一个包含两个正方形和两个三角形的图形,两个正方形的边长分别为 a 和 b,两个三角形的底边分别为 a 和 b,高分别为 a*b 和 b*a。两个正方形的顶点分别位于 x 轴上的两点,两个三角形的顶点分别位于正方形的顶点和 x 轴上的两点。
以上提示语为根据原始绘图命令整理而来,仅供参考。