解方程练习 - 第一级(系统试数与可视化)
几何画板及绘图内容加载中,请稍等……
该范例是一个面向小学高年级(5-6年级)的代数方程求解练习工具,通过随机生成简单线性方程,引导学生用系统试数的方法寻找未知数的值,并借助可视化界面直观呈现方程两边的平衡关系。核心数学概念包括一元一次方程、等式的性质、未知数、因数与倍数、以及通过试错法验证解的正确性。作图要点:利用GeoGebra的随机数生成(Shuffle、RandomNos、DivisorsList、Factors)构造不重复的系数与常数,通过If、Append、Remove等命令控制题目生成逻辑,使用Text对象显示方程文本,并借助RoundBox、Corner等美化界面,最终实现每次刷新产生新题目的交互练习。适合5-6年级学生作为课堂练习或家庭作业,也可用于教师演示解方程的系统化策略。
GeoGebra 命令及参数
Shuffle(Sequence[Random[21, 40], i, 1, 100]) → randomNosFora, {30, 25, 24, 35, 21, 32, 40, 28, 26, 36, 33, 38, 38, 38, 38, 24, 39, 40, 35, 27, 40, 32, 22, 23, 35, 27, 37, 31, 22, 32, 35, 36, 25, 38, 22, 28, 29, 40, 35, 34, 26, 22, 23, 34, 30, 38, 40, 37, 23, 31, 39, 31, 32, 23, 26, 27, 24, 31, 31, 29, 37, 30, 39, 25, 30, 27, 33, 36, 32, 28, 36, 26, 37, 38, 39, 33, 35, 28, 38, 21, 40, 40, 21, 29, 31, 35, 26, 29, 39, 37, 35, 38, 35, 38, 25, 31, 39, 23, 39, 21}Append(true, Sequence[If[randomNosFora(i) ≟ randomNosFora(i - 1), false, true], i, 2, 100]) → stayyShuffle(Sequence[Random[2, 20], i, 1, 100]) → RandomNosFory, {3, 13, 4, 10, 18, 13, 7, 16, 20, 11, 16, 15, 5, 20, 8, 4, 14, 17, 10, 5, 3, 20, 5, 4, 20, 9, 13, 16, 15, 18, 9, 20, 8, 19, 7, 10, 19, 17, 6, 8, 13, 17, 3, 17, 15, 4, 6, 13, 9, 14, 17, 9, 11, 13, 19, 5, 3, 18, 8, 19, 19, 3, 3, 12, 18, 12, 9, 9, 10, 17, 13, 16, 10, 11, 3, 18, 20, 2, 2, 3, 17, 6, 19, 13, 18, 11, 2, 10, 13, 2, 11, 7, 5, 3, 6, 20, 20, 13, 19, 14}Remove(Sequence[If[stayy(i), RandomNosFory(i), 0], i, 1, 100], Sequence[0, i, 1, 100]) → randomNosForywithoutRepeatElement(randomNosForywithoutRepeat, Mod[questionCount, Length[randomNosForywithoutRepeat]] + 1) → numywithoutRepeatDivisorsList(numywithoutRepeat) → teilerListForyFactors(numywithoutRepeat) →Shuffle(Sequence[RandomElement[l1], i, 1, 100]) → l1zufi, {"a - 4", "4 : a", "a \cdot 4", "a \cdot 4", "a + 4", "4 \cdot a", "a \cdot 4", "4 + a", "a \cdot 4", "4 + a", "a \cdot 4", "a - 4", "4 + a", "4 + a", "4 + a", "a + 4", "a + 4", "4 : a", "a \cdot 4", "a - 4", "a + 4", "4 + a", "a + 4", "4 + a", "4 \cdot a", "4 : a", "4 \cdot a", "4 : a", "a + 4", "a \cdot 4", "a + 4", "a \cdot 4", "4 + a", "4 + a", "a \cdot 4", "4 \cdot a", "4 : a", "a \cdot 4", "4 \cdot a", "a + 4", "4 : a", "4 \cdot a", "4 \cdot a", "4 \cdot a", "a - 4", "4 \cdot a", "a - 4", "4 \cdot a", "4 + a", "4 + a", "a - 4", "a \cdot 4", "a - 4", "4 + a", "4 \cdot a", "4 + a", "a \cdot 4", "4 \cdot a", "4 \cdot a", "a \cdot 4", "4 \cdot a", "a + 4", "a \cdot 4", "4 \cdot a", "4 \cdot a", "4 : a", "a \cdot 4", "a + 4", "a + 4", "a \cdot 4", "4 + a", "a + 4", "a - 4", "4 + a", "a \cdot 4", "a + 4", "a - 4", "a - 4", "a + 4", "4 : a", "a + 4", "4 + a", "4 : a", "4 \cdot a", "4 : a", "4 \cdot a", "a \cdot 4", "4 : a", "4 : a", "a \cdot 4", "a - 4", "a + 4", "4 + a", "4 : a", "a + 4", "a \cdot 4", "a \cdot 4", "4 \cdot a", "a - 4", "4 + a"}Append(true, Sequence[If[l1zufi(i) ≟ l1zufi(i - 1), false, true], i, 2, 100]) → stayzufiRemove(Sequence[If[stayzufi(i), l1zufi(i), 0], i, 1, 100], Sequence[0, i, 1, 100]) → l1zufiwithoutRepeatElement(l1zufiwithoutRepeat, Mod[questionCount, 100] + 1) → numzufiIf(numzufi ≟ F8, RandomElement[teilerListFory], Element[randomNosFora, Mod[questionCount, 100] + 1]) → numaElement(l1zufiwithoutRepeat, Mod[questionCount, 100] + 1) → Text2If(numzufi ≟ F9, E9, If[numzufi ≟ F8, E8, If[numzufi ≟ F7, E7, If[numzufi ≟ F6, E6, If[numzufi ≟ F5, E5, If[numzufi ≟ F4, E4, If[numzufi ≟ F3, E3, If[numzufi ≟ F2, E2]]]]]]]) → Text1Split(GlTxt, {""}) → splittedTextIf(corrAdd, Text1 + numywithoutRepeat, If[corrSub, numywithoutRepeat - Text1, If[corrMult, (Text1 * numywithoutRepeat), If[corrDivi, Text1 + numywithoutRepeat]]]) → number2If(corrAdd, (Text1 * numywithoutRepeat), If[corrSub, (Text1 * numywithoutRepeat), If[corrMult, numywithoutRepeat - Text1, If[corrDivi, Text1 - numywithoutRepeat]]]) → number3Shuffle(Sequence[RandomElement[{6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66}], i, 1, 100]) → randomNosForaDividend, {24, 54, 24, 12, 30, 24, 66, 24, 18, 18, 6, 12, 30, 18, 36, 66, 66, 30, 54, 60, 42, 54, 24, 30, 66, 66, 6, 54, 30, 42, 42, 42, 30, 66, 6, 36, 48, 48, 42, 54, 42, 24, 60, 24, 54, 24, 30, 54, 36, 48, 48, 54, 18, 54, 48, 48, 48, 42, 30, 54, 36, 60, 66, 12, 60, 6, 30, 48, 36, 48, 36, 18, 18, 36, 48, 18, 54, 36, 48, 12, 66, 42, 12, 60, 12, 30, 30, 18, 66, 30, 12, 36, 42, 24, 48, 24, 66, 42, 30, 48}If(showanswer, "\bold{Lösung: }", "") → LoesungTextAppend(true, Sequence[If[l1zufi(i) ≟ l1zufi(i - 1), false, true], i, 2, 100]) → randomNosForawithoutRepeatIf(numzufi ≟ F8, Element[randomNosForaDividend, Mod[questionCount, Length[randomNosForaDividend]] + 1], Element[randomNosForawithoutRepeat, Mod[questionCount, Length[randomNosForawithoutRepeat]] + 1]) → numawithoutRepeatCorner(HinweisText, 2) → CornerHint2Corner(HinweisText, 3) → CornerHint3Corner(Angabe, 1) → CornerAngabeCorner(HinweisText, 1) → CornerHint1If(tries ≠ 3, y(CornerHint3) - y(CornerHint2) - 0.15, y(Corner[SolutionText, 3]) - y(Corner[SolutionText, 2]) - 0.15) → heighthintRemoveUndefined({richtig1, If[RO > 1, richtig2], If[RO > 2, richtig3], If[RO > 3, richtig4], If[RO > 4, richtig5]}) → ListeRichtigRemoveUndefined({If[MCO ≟ 5 ∧ RO < 5 ∨ MCO ≟ 4 ∧ RO < 4 ∨ MCO ≟ 3 ∧ RO < 3, falsch1], If[MCO ≟ 5 ∧ RO < 4 ∨ MCO ≟ 4 ∧ RO < 3 ∨ MCO ≟ 3 ∧ RO < 2, falsch2], If[MCO ≟ 5 ∧ RO < 3 ∨ MCO ≟ 4 ∧ RO < 2, falsch3], If[MCO ≟ 5 ∧ RO < 2, falsch4]}) → ListeFalschUnion(ListeRichtig, ListeFalsch) → ListeAlleShuffle(ListeAlle) → Reihenfolge, {"\textsf{x = 24}", "\textsf{x = -92}", "\textsf{x = 384}"}If(Reihenfolge(1) ∈ ListeRichtig, (("\math{" * Reihenfolge(1)) * "}\\\\"), "") → Loesungstext1If(Reihenfolge(2) ∈ ListeRichtig, (("\math{" * Reihenfolge(2)) * "}\\\\"), "") → Loesungstext2If(Reihenfolge(3) ∈ ListeRichtig, (("\math{" * Reihenfolge(3)) * "}\\\\"), "") → Loesungstext3If(Reihenfolge(4) ∈ ListeRichtig, (("\math{" * Reihenfolge(4)) * "}\\\\"), "") → Loesungstext4If(Reihenfolge(5) ∈ ListeRichtig, (("\math{" * Reihenfolge(5)) * "}\\\\"), "") → Loesungstext5Corner(Optionstext5, 3) → Corner53Corner(Optionstext5, 1) → Corner51Corner(Optionstext5, 2) → Corner52Corner(Optionstext4, 1) → Corner41Corner(Optionstext4, 2) → Corner42Corner(Optionstext3, 1) → Corner31Corner(Optionstext3, 2) → Corner32Corner(Optionstext2, 1) → Corner21Corner(Optionstext2, 2) → Corner22Corner(Optionstext1, 2) → Corner12Corner(Optionstext1, 1) → Corner11Max({x(Corner12) - x(Corner11), x(Corner22) - x(Corner21), x(Corner32) - x(Corner31), x(Corner42) - x(Corner41), x(Corner52) - x(Corner51)}) → maxwidthCorner(Optionstext4, 3) → Corner43Corner(Optionstext3, 3) → Corner33Corner(Optionstext2, 3) → Corner23Corner(Optionstext1, 3) → Corner13If(step < 3, Erklaerung2, "\\\textsf{ \large{\bold{. . .}}}") → ShowErkl2If(MCO ≥ 4, If[Reihenfolge(4) ∈ ListeRichtig ∧ option4 ≟ true ∨ Reihenfolge(4) ∈ ListeFalsch ∧ option4 ≟ false, true, false], true) → correct4If(correct4, 1, 0) → point4If(MCO ≟ 5, If[Reihenfolge(5) ∈ ListeRichtig ∧ option5 ≟ true ∨ Reihenfolge(5) ∈ ListeFalsch ∧ option5 ≟ false, true, false], true) → correct5If(correct5, 1, 0) → point5If(Reihenfolge(3) ∈ ListeRichtig ∧ option3 ≟ true ∨ Reihenfolge(3) ∈ ListeFalsch ∧ option3 ≟ false, true, false) → correct3If(correct3, 1, 0) → point3If(Reihenfolge(2) ∈ ListeRichtig ∧ option2 ≟ true ∨ Reihenfolge(2) ∈ ListeFalsch ∧ option2 ≟ false, true, false) → correct2If(correct2, 1, 0) → point2If(Reihenfolge(1) ∈ ListeRichtig ∧ option1 ≟ true ∨ Reihenfolge(1) ∈ ListeFalsch ∧ option1 ≟ false, true, false) → correct1If(correct1, 1, 0) → point1If(option1 ∨ option2 ∨ option3 ∨ option4 ∨ option5, (point1 + point2 + point3 + point4 + point5) / 5, 0) → scoreCountIf(x ≟ true, {option1, option2, option3, option4, option5}) → angekreuztRoundBox(radius, Box1, height1, width) → box14, box11, box15, box12, box13RoundBox(radius, Box2, height2, width) → box24, box21, box25, box22, box23RoundBox(radius, Box3, height3, width) → box34, box31, box35, box32, box33RoundBox(radius, Box4, height4, width) → box44, box41, box45, box42, box43RoundBox(radius, Box5, height5, width) → box54, box51, box55, box52, box53If(step ≟ 3, "", step ≟ 1, ("\\\\" * Erklaerung3), "\\\textsf{ \large{\bold{. . .}}}") → ShowErkl3CountIf(x ≟ true, {correct1 ∧ option1, correct2 ∧ option2, correct3 ∧ option3, correct4 ∧ option4, correct5 ∧ option5}) → richtigIf(richtig > 0 ∧ (¬correct), "✘ Teilweise richtig", correct, "✓ Richtig", "✘ Falsch") → CheckTextIf(tries ≠ 3, x(CornerHint2) - x(CornerHint1) - 0.15, x(Corner[SolutionText, 2]) - x(Corner[SolutionText, 1]) - 0.15) → widthhintRoundBox(radius, PosBoxHint, heighthint, widthhint) → boxh1, boxh2, boxh5, boxh3, boxh4Corner(Angabe, 4) → CornerAngabe2Shuffle(Sequence[RandomElement[{2, 3}], i, 1, 100]) → randomNosForaDivisor, {2, 3, 2, 2, 3, 3, 2, 2, 2, 2, 3, 3, 2, 3, 2, 2, 3, 2, 2, 2, 3, 3, 2, 3, 2, 3, 3, 2, 3, 3, 2, 3, 2, 2, 3, 2, 3, 2, 2, 2, 2, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 3, 2, 3, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 3, 2, 3, 3, 3, 3, 2, 3, 2, 3, 2}Append(true, Sequence[If[randomNosFora(i) ≟ randomNosFora(i - 1), false, true], i, 2, 100]) → stayaElement(randomNosForaDividend, Mod[questionCount, 100] + 1) → numForDividendElement(randomNosForaDivisor, Mod[questionCount, 100] + 1) → numForDivisorElement(RandomNosFory, Mod[questionCount, 100] + 1) → numyDivisors(numywithoutRepeat) → aFactors(numywithoutRepeat) →If(showsolution, Corner[LoesungswegText, 2] - (1, 1), (3, y(PosButton1))) → PosButton3
AI 绘图提示语参考
画一个包含多个方程的图形,包括一个线性方程和一个分数方程,方程的左边和右边分别包含一个变量和一个常数,常数可以是正整数或负整数,变量可以是 x 或 y。图形中还包含一个滑动条,用于调整方程的系数和常数。图形的背景中有一个提示语,提示用户如何解决方程。
以上提示语为根据原始绘图命令整理而来,仅供参考。