Linear Systems with and without Parameters
Loading the math board and drawing, please wait…
① This example demonstrates how to dynamically construct and solve linear equation systems with and without parameters in GeoGebra, visually showing how parameter changes affect the solutions. ② Core mathematical concepts include linear systems, matrix rank, parametric solving, existence and uniqueness of solutions, and fundamental linear algebra operations. ③ Construction highlights: using GeoGebra commands such as Take, CountIf, Sequence, IndexOf, Join, Remove, Insert, If, Append, Sort, RemoveUndefined, Length, Element, Textfield, TableText, Distance, MatrixRank, LaTeX, Flatten, along with multiple objects (e.g., f, n, a-series coefficients, listac1, e, lista4, etc.) to build an interactive interface where sliders or input fields adjust parameters and the matrix rank and solution status update in real time. ④ Suitable for high school to university-level linear algebra instruction, useful for classroom demonstrations, student exploration of how parameters affect solutions, and understanding the relationship between matrix rank and solution sets.
GeoGebra Commands & Parameters
Take({a_1, a_8, a_{15}, a_{22}, a_{29}, a_{36}}, 1, n) → listac1CountIf(t ≟ f, t, listac1) → eSequence((f(x) * i / i), i, 1, e) → lista4Sequence(Take[lista4, 1, i], i, 1, e - 1) → lista9Sequence(IndexOf[f, Remove[listac1, Element[lista9, i]]], i, 1, e - 1) → lista10Sequence(Element[lista10, i] + i, i, 1, e - 1) → lista11IndexOf(f, listac1) → hJoin({{h}, lista11}) → lista13Remove(Sequence[i, i, 1, n], lista13) → lista14Remove(Sequence[i, i, 1, n], {Element[lista14, 1], Element[lista13, 1]}) → lista15Insert(Element[lista14, 1], lista15, 1) → lista16If(Element[listac1, 1] ≟ f, Insert[Element[lista13, 1], lista16, Element[lista14, 1]], Sequence[i, i, 1, n]) → lista17Append(Take[lista1, 1, m], Element[listater, 1]) → listaf1Append(Take[lista2, 1, m], Element[listater, 2]) → listaf2Append(Take[lista5, 1, m], Element[listater, 3]) → listaf3Append(Take[lista6, 1, m], Element[listater, 4]) → listaf4Append(Take[lista7, 1, m], Element[listater, 5]) → listaf5Append(Take[lista8, 1, m], Element[listater, 6]) → listaf6Sort(Take[{listaf1, listaf2, listaf3, listaf4, listaf5, listaf6}, 1, n], lista17) → matriz1Sequence(Sequence[Expand[((-Element[lista20, i, 1]) * Element[lista20, 1, j]) + (Element[lista20, 1, 1] * Element[lista20, i, j])], j, 1, m + 1], i, 2, n) → matriz2Insert({Element[lista20, 1]}, matriz2, 1) → lista21CountIf(t ≟ f, t, Sequence[Element[lista21, i, 2], i, 2, n]) → e_1Sequence(Take[Sequence[(f(x) * j / j), j, 1, e_1], 1, i], i, 1, e_1 - 1) → lista24Sequence(Element[lista21, i, 2], i, 2, n) → lista23Sequence(IndexOf[f, Remove[lista23, Element[lista24, i]]], i, 1, e_1 - 1) → lista25Sequence(Element[lista25, i] + i, i, 1, e_1 - 1) → lista26IndexOf(f, lista23) → iJoin({{i}, lista26}) → lista27Remove(Sequence[i, i, 1, n - 1], lista27) → lista28Remove(Sequence[i, i, 1, n - 1], {Element[lista28, 1], Element[lista27, 1]}) → lista29Insert(Element[lista28, 1], lista29, 1) → lista30If(Element[lista23, 1] ≟ f, If[Length[lista27] ≟ n - 1, Sequence[i, i, 1, n - 1], Insert[Element[lista27, 1], lista30, Element[lista28, 1]]], Sequence[i, i, 1, n - 1]) → lista32If(n ≤ 1, lista21, Insert[{Element[lista21, 1]}, Sort[Sequence[Element[lista21, i], i, 2, n], lista32], 1]) → lista33If(Element[lista33, 2, 2] ≟ f, lista33, lista35) → matriz3Sequence(If[Element[matriz3, i, 2] ≟ f, Element[matriz3, i], Sequence[Expand[((-Element[matriz3, i, 2]) * Element[matriz3, 2, j]) + (Element[matriz3, 2, 2] * Element[matriz3, i, j])], j, 1, m + 1]], i, 3, n) → matriz4CountIf(t ≟ f, t, Sequence[Element[matriz4, i, 3], i, 1, n - 2]) → oSequence(Take[Sequence[(f(x) * j / j), j, 1, o], 1, i], i, 1, o - 1) → matriz5Sequence(Element[matriz4, i, 3], i, 1, n - 2) → lista36Sequence(IndexOf[f, Remove[lista36, Element[matriz5, i]]], i, 1, o - 1) → lista37Sequence(Element[lista37, i] + i, i, 1, o - 1) → lista38IndexOf(f, lista36) → rJoin({{r}, lista38}) → lista39Remove(Sequence[i, i, 1, n - 2], lista39) → lista40Remove(Sequence[i, i, 1, n - 2], {Element[lista40, 1], Element[lista39, 1]}) → lista41Insert(Element[lista40, 1], lista41, 1) → lista42If(Element[lista36, 1] ≟ f, If[Length[lista39] ≟ n - 2, Sequence[i, i, 1, n - 2], Insert[Element[lista39, 1], lista42, Element[lista40, 1]]], Sequence[i, i, 1, n - 2]) → lista43If(n ≤ 2, matriz3, Insert[Take[matriz3, 1, 2], Sort[Sequence[Element[matriz4, i], i, 1, n - 2], lista43], 1]) → matriz6Sequence(If[Element[lista44, i, 3] ≟ f, Element[lista44, i], Sequence[Expand[((-Element[lista44, i, 3]) * Element[lista44, 3, j]) + (Element[lista44, 3, 3] * Element[lista44, i, j])], j, 1, m + 1]], i, 4, n) → matriz7If(n ≤ 2, matriz3, Insert[Take[lista44, 1, 3], matriz7, 1]) → matriz8Sequence(Element[matriz8, i, 4], i, 4, n) → lista45IndexOf(f, lista45) → vCountIf(t ≟ f, t, Sequence[Element[matriz8, i, 4], i, 4, n]) → uSequence(Take[Sequence[(f(x) * j / j), j, 1, u], 1, i], i, 1, u - 1) → lista46Sequence(IndexOf[f, Remove[lista45, Element[lista46, i]]], i, 1, u - 1) → lista47Sequence(Element[lista47, i] + i, i, 1, u - 1) → lista48Join({{v}, lista48}) → lista49Remove(Sequence[i, i, 1, n - 3], lista49) → lista50Remove(Sequence[i, i, 1, n - 3], {Element[lista50, 1], Element[lista49, 1]}) → lista51Insert(Element[lista50, 1], lista51, 1) → lista52If(Element[lista45, 1] ≟ f, If[Length[lista49] ≟ n - 3, Sequence[i, i, 1, n - 3], Insert[Element[lista49, 1], lista52, Element[lista50, 1]]], Sequence[i, i, 1, n - 3]) → lista53Join({{1, 2, 3}, lista53 + 3}) → lista58If(n ≤ 2, matriz3, Sort[matriz8, lista58]) → matriz9RemoveUndefined(If[Element[lista54, 4, 4] ≟ f ∨ n ≤ 4, lista54, Join[{Take[lista54, 1, 4], {Sequence[Expand[((-Element[lista54, 4, i]) * Element[lista54, 5, 4]) + (Element[lista54, 4, 4] * Element[lista54, 5, i])], i, 1, m + 1]}, If[n ≟ 6, {Sequence[Expand[((-Element[lista54, 4, i]) * Element[lista54, 6, 4]) + (Element[lista54, 4, 4] * Element[lista54, 6, i])], i, 1, m + 1]}]}]]) → lista56RemoveUndefined(If[Element[lista56, 5, 5] ≟ f, Join[{Take[lista56, 1, 4], Reverse[Take[lista56, 5, 6]]}], lista56]) → lista57If(n ≤ 5, lista57, Join[{Take[lista57, 1, 5], {Sequence[Expand[((-Element[lista57, 5, i]) * Element[lista57, 6, 5]) + (Element[lista57, 5, 5] * Element[lista57, 6, i])], i, 1, m + 1]}}]) → matriz10Sequence(Element[matriz10, 6, j], j, 1, m + 1) → l6Sequence(Element[matriz10, 5, j], j, 1, m + 1) → l5Sequence(Element[matriz10, 4, j], j, 1, m + 1) → l4Sequence(Element[matriz10, 3, j], j, 1, m + 1) → l3Sequence(Element[matriz10, 2, j], j, 1, m + 1) → l2Sequence(Element[matriz10, 1, j], j, 1, m + 1) → l1Length(var4 \ {m + 1}) → i_1Take({"f_1", "f_2", "f_3", "f_4", "f_5", "f_6"}, 1, n) → lista3Sequence(If[Element[lista57, i, 5] ≟ f, " ", ((((((Expand[(-Element[lista57, i, 5])] * Element[lista3, 5]) * "+") * "(") * Element[lista57, 5, 5]) * ")") * Element[lista3, i])], i, 6, n) → lista61Sequence(If[Element[lista54, i, 4] ≟ f, " ", ((((((Expand[(-Element[lista54, i, 4])] * Element[lista3, 4]) * "+") * "(") * Element[lista54, 4, 4]) * ")") * Element[lista3, i])], i, 5, n) → lista60If(m ≥ n, n, m) → dElement(listac1, Element[lista14, 1]) → pAppend(Sequence[Expand[Element[lista1, i] / a_1(x)], i, 1, m], Expand[Element[listater, 1] / a_1(x)]) → listaf12Element(lista3, Element[lista13, 1]) → texto38Element(lista3, Element[lista14, 1]) → texto39Textfield(a_7) → c_{11}Textfield(a_{14}) → c_{12}Textfield(a_{21}) → c_{13}Textfield(a_{28}) → c_{14}Textfield(a_{35}) → c_{15}Textfield(a_{42}) → c_{16}Textfield(a_7) → c_{21}Textfield(a_{14}) → c_{22}Textfield(a_{21}) → c_{23}Textfield(a_{28}) → c_{24}Textfield(a_{35}) → c_{25}Textfield(a_{42}) → c_{26}Textfield(a_7) → c_{31}Textfield(a_{14}) → c_{32}Textfield(a_{21}) → c_{33}Textfield(a_{28}) → c_{34}Textfield(a_{35}) → c_{35}Textfield(a_{42}) → c_{36}Textfield(a_7) → c_{41}Textfield(a_{14}) → c_{42}Textfield(a_{21}) → c_{43}Textfield(a_{28}) → c_{44}Textfield(a_{35}) → c_{45}Textfield(a_{42}) → c_{46}Textfield(a_7) → c_{51}Textfield(a_{14}) → c_{52}Textfield(a_{21}) → c_{53}Textfield(a_{28}) → c_{54}Textfield(a_{35}) → c_{55}Textfield(a_{42}) → c_{56}Textfield(a_1) → a_{73}Textfield(a_2) → a_{74}Textfield(a_3) → a_{77}Textfield(a_4) → a_{47}Textfield(a_5) → a_{75}Textfield(a_6) → a_{48}Textfield(a_8) → a_{49}Textfield(a_9) → a_{76}Textfield(a_{10}) → a_{67}Textfield(a_{11}) → a_{68}Textfield(a_{12}) → a_{69}Textfield(a_{13}) → a_{70}Textfield(a_{15}) → a_{50}Textfield(a_{16}) → a_{57}Textfield(a_{17}) → a_{58}Textfield(a_{18}) → a_{59}Textfield(a_{19}) → a_{60}Textfield(a_{20}) → a_{78}Textfield(a_{22}) → a_{71}Textfield(a_{23}) → a_{72}Textfield(a_{24}) → a_{43}Textfield(a_{25}) → a_{44}Textfield(a_{26}) → a_{45}Textfield(a_{27}) → a_{46}Textfield(a_{29}) → a_{51}Textfield(a_{30}) → a_{52}Textfield(a_{31}) → a_{53}Textfield(a_{32}) → a_{54}Textfield(a_{33}) → a_{55}Textfield(a_{34}) → a_{56}Textfield(a_{36}) → a_{61}Textfield(a_{37}) → a_{62}Textfield(a_{38}) → a_{63}Textfield(a_{39}) → a_{64}Textfield(a_{40}) → a_{65}Textfield(a_{41}) → a_{66}Take({a_2, a_9, a_{16}, a_{23}, a_{30}, a_{37}}, 1, n) → listac2Take({a_3, a_{10}, a_{17}, a_{24}, a_{31}, a_{38}}, 1, n) → listac3Take({a_4, a_{11}, a_{18}, a_{25}, a_{32}, a_{39}}, 1, n) → listac4Take({a_5, a_{12}, a_{19}, a_{26}, a_{33}, a_{40}}, 1, n) → listac5Take({a_6, a_{13}, a_{20}, a_{27}, a_{34}, a_{41}}, 1, n) → listac6IndexOf(f, listac1) → gRemove(listac1, {f, f}) → lista12Element(lista3, 1) → texto41TableText(Take[{listaf1, listaf2, listaf3, listaf4, listaf5, listaf6}, 1, n], If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → matriz1_1TableText(lista20, If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → lista18TableText(lista21, If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → texto44Sequence(If[Element[lista20, i, 1] ≟ f, " ", ((((((Expand[(-Element[lista20, i, 1])] * Element[lista3, 1]) * "+") * "(") * Element[lista20, 1, 1]) * ")") * Element[lista3, i])], i, 2, n) → lista22TableText(matriz3, If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → texto47Element(lista33, 2, 2) → qTableText({lista22}, "cv") → texto49If(k > l ∧ k > 2, -1, If[k < l ∧ k ≥ 2, 1, 0]) → jElement(lista3, Element[lista28, 1] + 1) → texto52If(Element[lista21, 2, 2] ≟ f, texto53, " ") → texto50Sequence(If[Element[matriz3, i, 2] ≟ f, " ", ((((((Expand[(-Element[matriz3, i, 2])] * Element[lista3, 2]) * "+") * "(") * Element[matriz3, 2, 2]) * ")") * Element[lista3, i])], i, 3, n) → lista31TableText({lista31}, "cv") → texto55Insert(Take[matriz3, 1, 2], matriz4, 1) → lista34TableText(lista34, If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → texto57Element(lista33, 2, 2) → sElement(matriz6, 3, 3) → tElement(lista3, Element[lista40, 1] + 2) → texto61If(Element[lista21, 2, 2] ≟ f, texto53, texto48) → texto63If(Element[matriz4, 1, 3] ≟ f, texto62, " ") → texto64Element(lista3, Element[lista40, 1] + 2) → texto65Sequence(If[Element[lista44, i, 3] ≟ f, " ", ((((((Expand[(-Element[lista44, i, 3])] * Element[lista3, 3]) * "+") * "(") * Element[lista44, 3, 3]) * ")") * Element[lista3, i])], i, 4, n) → lista55TableText({lista55}, "cv") → texto71TableText(lista44, If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → texto67TableText(matriz8, If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → texto58TableText(lista54, If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → texto68Element(matriz8, Element[lista50, 1] + 3, 4) → f_1Element(lista3, Element[lista50, 1] + 3) → texto73If(Element[matriz8, 4, 4] ≟ f, texto74, " ") → texto75TableText(lista56, If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → texto77TableText({lista60}, "cv") → texto79Element(lista56, 5, 5) → p_1Element(lista56, 6, 5) → q_1If(p_1 ≟ f, If[q_1 ≟ f, " ", texto83], " ") → texto85TableText(matriz10, If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → texto87Element(lista57, 6, 5) → r_1TableText({lista61}, "cv") → texto89TableText(lista57, If[m ≟ 6, "c() |00000010", If[m ≟ 5, "c() |0000010", If[m ≟ 4, "c() |000010", If[m ≟ 3, "c() |00010", If[m ≟ 2, "c() |0010", "c() |010"]]]]]) → texto81If(n ≟ 1, 0, If[n ≟ 2, 3, If[n ≟ 3, 5, If[n ≟ 4, 7, If[n ≟ 5, 9, 11]]]]) → b_1Distance(E_1, F_1) → distanciaE1F1Textfield(m) → CasillaDeEntrada1Textfield(n) → CasillaDeEntrada2If(Element[listac1, 1] ≟ f, texto40, " ") → texto42Sequence(Sequence[Element[matriz1, i, j], j, 1, m], i, 1, n) → matriz11MatrixRank(matriz1) → c_1If(m ≟ 6, 180, If[m ≟ 5, 205, If[m ≟ 4, 215, If[m ≟ 3, 280, If[m ≟ 2, 315]]]]) → wLaTeX($14) → texto92LaTeX($13) → texto93LaTeX($12) → texto94LaTeX($11) → texto95LaTeX($10) → texto96LaTeX($9) → texto97Flatten(RemoveUndefined[Sequence[Solutions[Element[matriz10, var2, i] = 0], i, 1, m]]) → l7Flatten(RemoveUndefined[If[var ≟ m, If[Length[l7] ≟ 0, {Solutions[Element[matriz10, var2, m + 1] = 0]}, l7], l7]]) → l8Length(l8) → var3TableText({{"Valores x", "Rango A", "Rango A'", "Nº de incógnitas", "Tipo de solución"}, {x ≠ LaTeX[l8], LaTeX[$21], LaTeX[$20], m, LaTeX[$22]}, {("x=" * LaTeX[l8]), LaTeX[$18], LaTeX[$17], m, LaTeX[$19]}}, "vc|1111_111111") → texto128CountIf(x ≟ m + 1, var4) → d_1If(var5 ≠ var6, "SI", If[var5 ≟ m, "SCD", "SCI"]) → texto129TableText({{"Valores x", "Rango A", "Rango A'", "Nº de incógnitas", "Tipo de solución"}, {x, LaTeX[var6], LaTeX[var5], m, LaTeX[texto129]}}, "vc|111_111111") → texto130
AI Drawing Prompt Reference
Draw a linear equation system with and without parameters. Use sliders to adjust parameters and dynamically show the matrix rank and solution status. First, create a parameter list, then construct the matrix based on parameter values, calculate the matrix rank, and update the solution status according to rank changes.
The prompt above was compiled from the original drawing commands and is for reference only.