Linear Systems with and without Parameters

Linear Systems with and without Parameters
Loading the math board and drawing, please wait…
2019-11-06 06:17
① 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

  1. Take({a_1, a_8, a_{15}, a_{22}, a_{29}, a_{36}}, 1, n) → listac1
  2. CountIf(t ≟ f, t, listac1) → e
  3. Sequence((f(x) * i / i), i, 1, e) → lista4
  4. Sequence(Take[lista4, 1, i], i, 1, e - 1) → lista9
  5. Sequence(IndexOf[f, Remove[listac1, Element[lista9, i]]], i, 1, e - 1) → lista10
  6. Sequence(Element[lista10, i] + i, i, 1, e - 1) → lista11
  7. IndexOf(f, listac1) → h
  8. Join({{h}, lista11}) → lista13
  9. Remove(Sequence[i, i, 1, n], lista13) → lista14
  10. Remove(Sequence[i, i, 1, n], {Element[lista14, 1], Element[lista13, 1]}) → lista15
  11. Insert(Element[lista14, 1], lista15, 1) → lista16
  12. If(Element[listac1, 1] ≟ f, Insert[Element[lista13, 1], lista16, Element[lista14, 1]], Sequence[i, i, 1, n]) → lista17
  13. Append(Take[lista1, 1, m], Element[listater, 1]) → listaf1
  14. Append(Take[lista2, 1, m], Element[listater, 2]) → listaf2
  15. Append(Take[lista5, 1, m], Element[listater, 3]) → listaf3
  16. Append(Take[lista6, 1, m], Element[listater, 4]) → listaf4
  17. Append(Take[lista7, 1, m], Element[listater, 5]) → listaf5
  18. Append(Take[lista8, 1, m], Element[listater, 6]) → listaf6
  19. Sort(Take[{listaf1, listaf2, listaf3, listaf4, listaf5, listaf6}, 1, n], lista17) → matriz1
  20. Sequence(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) → matriz2
  21. Insert({Element[lista20, 1]}, matriz2, 1) → lista21
  22. CountIf(t ≟ f, t, Sequence[Element[lista21, i, 2], i, 2, n]) → e_1
  23. Sequence(Take[Sequence[(f(x) * j / j), j, 1, e_1], 1, i], i, 1, e_1 - 1) → lista24
  24. Sequence(Element[lista21, i, 2], i, 2, n) → lista23
  25. Sequence(IndexOf[f, Remove[lista23, Element[lista24, i]]], i, 1, e_1 - 1) → lista25
  26. Sequence(Element[lista25, i] + i, i, 1, e_1 - 1) → lista26
  27. IndexOf(f, lista23) → i
  28. Join({{i}, lista26}) → lista27
  29. Remove(Sequence[i, i, 1, n - 1], lista27) → lista28
  30. Remove(Sequence[i, i, 1, n - 1], {Element[lista28, 1], Element[lista27, 1]}) → lista29
  31. Insert(Element[lista28, 1], lista29, 1) → lista30
  32. If(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]) → lista32
  33. If(n ≤ 1, lista21, Insert[{Element[lista21, 1]}, Sort[Sequence[Element[lista21, i], i, 2, n], lista32], 1]) → lista33
  34. If(Element[lista33, 2, 2] ≟ f, lista33, lista35) → matriz3
  35. Sequence(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) → matriz4
  36. CountIf(t ≟ f, t, Sequence[Element[matriz4, i, 3], i, 1, n - 2]) → o
  37. Sequence(Take[Sequence[(f(x) * j / j), j, 1, o], 1, i], i, 1, o - 1) → matriz5
  38. Sequence(Element[matriz4, i, 3], i, 1, n - 2) → lista36
  39. Sequence(IndexOf[f, Remove[lista36, Element[matriz5, i]]], i, 1, o - 1) → lista37
  40. Sequence(Element[lista37, i] + i, i, 1, o - 1) → lista38
  41. IndexOf(f, lista36) → r
  42. Join({{r}, lista38}) → lista39
  43. Remove(Sequence[i, i, 1, n - 2], lista39) → lista40
  44. Remove(Sequence[i, i, 1, n - 2], {Element[lista40, 1], Element[lista39, 1]}) → lista41
  45. Insert(Element[lista40, 1], lista41, 1) → lista42
  46. If(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]) → lista43
  47. If(n ≤ 2, matriz3, Insert[Take[matriz3, 1, 2], Sort[Sequence[Element[matriz4, i], i, 1, n - 2], lista43], 1]) → matriz6
  48. Sequence(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) → matriz7
  49. If(n ≤ 2, matriz3, Insert[Take[lista44, 1, 3], matriz7, 1]) → matriz8
  50. Sequence(Element[matriz8, i, 4], i, 4, n) → lista45
  51. IndexOf(f, lista45) → v
  52. CountIf(t ≟ f, t, Sequence[Element[matriz8, i, 4], i, 4, n]) → u
  53. Sequence(Take[Sequence[(f(x) * j / j), j, 1, u], 1, i], i, 1, u - 1) → lista46
  54. Sequence(IndexOf[f, Remove[lista45, Element[lista46, i]]], i, 1, u - 1) → lista47
  55. Sequence(Element[lista47, i] + i, i, 1, u - 1) → lista48
  56. Join({{v}, lista48}) → lista49
  57. Remove(Sequence[i, i, 1, n - 3], lista49) → lista50
  58. Remove(Sequence[i, i, 1, n - 3], {Element[lista50, 1], Element[lista49, 1]}) → lista51
  59. Insert(Element[lista50, 1], lista51, 1) → lista52
  60. If(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]) → lista53
  61. Join({{1, 2, 3}, lista53 + 3}) → lista58
  62. If(n ≤ 2, matriz3, Sort[matriz8, lista58]) → matriz9
  63. RemoveUndefined(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]}]}]]) → lista56
  64. RemoveUndefined(If[Element[lista56, 5, 5] ≟ f, Join[{Take[lista56, 1, 4], Reverse[Take[lista56, 5, 6]]}], lista56]) → lista57
  65. If(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]}}]) → matriz10
  66. Sequence(Element[matriz10, 6, j], j, 1, m + 1) → l6
  67. Sequence(Element[matriz10, 5, j], j, 1, m + 1) → l5
  68. Sequence(Element[matriz10, 4, j], j, 1, m + 1) → l4
  69. Sequence(Element[matriz10, 3, j], j, 1, m + 1) → l3
  70. Sequence(Element[matriz10, 2, j], j, 1, m + 1) → l2
  71. Sequence(Element[matriz10, 1, j], j, 1, m + 1) → l1
  72. Length(var4 \ {m + 1}) → i_1
  73. Take({"f_1", "f_2", "f_3", "f_4", "f_5", "f_6"}, 1, n) → lista3
  74. Sequence(If[Element[lista57, i, 5] ≟ f, " ", ((((((Expand[(-Element[lista57, i, 5])] * Element[lista3, 5]) * "+") * "(") * Element[lista57, 5, 5]) * ")") * Element[lista3, i])], i, 6, n) → lista61
  75. Sequence(If[Element[lista54, i, 4] ≟ f, " ", ((((((Expand[(-Element[lista54, i, 4])] * Element[lista3, 4]) * "+") * "(") * Element[lista54, 4, 4]) * ")") * Element[lista3, i])], i, 5, n) → lista60
  76. If(m ≥ n, n, m) → d
  77. Element(listac1, Element[lista14, 1]) → p
  78. Append(Sequence[Expand[Element[lista1, i] / a_1(x)], i, 1, m], Expand[Element[listater, 1] / a_1(x)]) → listaf12
  79. Element(lista3, Element[lista13, 1]) → texto38
  80. Element(lista3, Element[lista14, 1]) → texto39
  81. Textfield(a_7) → c_{11}
  82. Textfield(a_{14}) → c_{12}
  83. Textfield(a_{21}) → c_{13}
  84. Textfield(a_{28}) → c_{14}
  85. Textfield(a_{35}) → c_{15}
  86. Textfield(a_{42}) → c_{16}
  87. Textfield(a_7) → c_{21}
  88. Textfield(a_{14}) → c_{22}
  89. Textfield(a_{21}) → c_{23}
  90. Textfield(a_{28}) → c_{24}
  91. Textfield(a_{35}) → c_{25}
  92. Textfield(a_{42}) → c_{26}
  93. Textfield(a_7) → c_{31}
  94. Textfield(a_{14}) → c_{32}
  95. Textfield(a_{21}) → c_{33}
  96. Textfield(a_{28}) → c_{34}
  97. Textfield(a_{35}) → c_{35}
  98. Textfield(a_{42}) → c_{36}
  99. Textfield(a_7) → c_{41}
  100. Textfield(a_{14}) → c_{42}
  101. Textfield(a_{21}) → c_{43}
  102. Textfield(a_{28}) → c_{44}
  103. Textfield(a_{35}) → c_{45}
  104. Textfield(a_{42}) → c_{46}
  105. Textfield(a_7) → c_{51}
  106. Textfield(a_{14}) → c_{52}
  107. Textfield(a_{21}) → c_{53}
  108. Textfield(a_{28}) → c_{54}
  109. Textfield(a_{35}) → c_{55}
  110. Textfield(a_{42}) → c_{56}
  111. Textfield(a_1) → a_{73}
  112. Textfield(a_2) → a_{74}
  113. Textfield(a_3) → a_{77}
  114. Textfield(a_4) → a_{47}
  115. Textfield(a_5) → a_{75}
  116. Textfield(a_6) → a_{48}
  117. Textfield(a_8) → a_{49}
  118. Textfield(a_9) → a_{76}
  119. Textfield(a_{10}) → a_{67}
  120. Textfield(a_{11}) → a_{68}
  121. Textfield(a_{12}) → a_{69}
  122. Textfield(a_{13}) → a_{70}
  123. Textfield(a_{15}) → a_{50}
  124. Textfield(a_{16}) → a_{57}
  125. Textfield(a_{17}) → a_{58}
  126. Textfield(a_{18}) → a_{59}
  127. Textfield(a_{19}) → a_{60}
  128. Textfield(a_{20}) → a_{78}
  129. Textfield(a_{22}) → a_{71}
  130. Textfield(a_{23}) → a_{72}
  131. Textfield(a_{24}) → a_{43}
  132. Textfield(a_{25}) → a_{44}
  133. Textfield(a_{26}) → a_{45}
  134. Textfield(a_{27}) → a_{46}
  135. Textfield(a_{29}) → a_{51}
  136. Textfield(a_{30}) → a_{52}
  137. Textfield(a_{31}) → a_{53}
  138. Textfield(a_{32}) → a_{54}
  139. Textfield(a_{33}) → a_{55}
  140. Textfield(a_{34}) → a_{56}
  141. Textfield(a_{36}) → a_{61}
  142. Textfield(a_{37}) → a_{62}
  143. Textfield(a_{38}) → a_{63}
  144. Textfield(a_{39}) → a_{64}
  145. Textfield(a_{40}) → a_{65}
  146. Textfield(a_{41}) → a_{66}
  147. Take({a_2, a_9, a_{16}, a_{23}, a_{30}, a_{37}}, 1, n) → listac2
  148. Take({a_3, a_{10}, a_{17}, a_{24}, a_{31}, a_{38}}, 1, n) → listac3
  149. Take({a_4, a_{11}, a_{18}, a_{25}, a_{32}, a_{39}}, 1, n) → listac4
  150. Take({a_5, a_{12}, a_{19}, a_{26}, a_{33}, a_{40}}, 1, n) → listac5
  151. Take({a_6, a_{13}, a_{20}, a_{27}, a_{34}, a_{41}}, 1, n) → listac6
  152. IndexOf(f, listac1) → g
  153. Remove(listac1, {f, f}) → lista12
  154. Element(lista3, 1) → texto41
  155. TableText(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_1
  156. TableText(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"]]]]]) → lista18
  157. TableText(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"]]]]]) → texto44
  158. Sequence(If[Element[lista20, i, 1] ≟ f, " ", ((((((Expand[(-Element[lista20, i, 1])] * Element[lista3, 1]) * "+") * "(") * Element[lista20, 1, 1]) * ")") * Element[lista3, i])], i, 2, n) → lista22
  159. TableText(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"]]]]]) → texto47
  160. Element(lista33, 2, 2) → q
  161. TableText({lista22}, "cv") → texto49
  162. If(k > l ∧ k > 2, -1, If[k < l ∧ k ≥ 2, 1, 0]) → j
  163. Element(lista3, Element[lista28, 1] + 1) → texto52
  164. If(Element[lista21, 2, 2] ≟ f, texto53, " ") → texto50
  165. Sequence(If[Element[matriz3, i, 2] ≟ f, " ", ((((((Expand[(-Element[matriz3, i, 2])] * Element[lista3, 2]) * "+") * "(") * Element[matriz3, 2, 2]) * ")") * Element[lista3, i])], i, 3, n) → lista31
  166. TableText({lista31}, "cv") → texto55
  167. Insert(Take[matriz3, 1, 2], matriz4, 1) → lista34
  168. TableText(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"]]]]]) → texto57
  169. Element(lista33, 2, 2) → s
  170. Element(matriz6, 3, 3) → t
  171. Element(lista3, Element[lista40, 1] + 2) → texto61
  172. If(Element[lista21, 2, 2] ≟ f, texto53, texto48) → texto63
  173. If(Element[matriz4, 1, 3] ≟ f, texto62, " ") → texto64
  174. Element(lista3, Element[lista40, 1] + 2) → texto65
  175. Sequence(If[Element[lista44, i, 3] ≟ f, " ", ((((((Expand[(-Element[lista44, i, 3])] * Element[lista3, 3]) * "+") * "(") * Element[lista44, 3, 3]) * ")") * Element[lista3, i])], i, 4, n) → lista55
  176. TableText({lista55}, "cv") → texto71
  177. TableText(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"]]]]]) → texto67
  178. TableText(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"]]]]]) → texto58
  179. TableText(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"]]]]]) → texto68
  180. Element(matriz8, Element[lista50, 1] + 3, 4) → f_1
  181. Element(lista3, Element[lista50, 1] + 3) → texto73
  182. If(Element[matriz8, 4, 4] ≟ f, texto74, " ") → texto75
  183. TableText(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"]]]]]) → texto77
  184. TableText({lista60}, "cv") → texto79
  185. Element(lista56, 5, 5) → p_1
  186. Element(lista56, 6, 5) → q_1
  187. If(p_1 ≟ f, If[q_1 ≟ f, " ", texto83], " ") → texto85
  188. TableText(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"]]]]]) → texto87
  189. Element(lista57, 6, 5) → r_1
  190. TableText({lista61}, "cv") → texto89
  191. TableText(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"]]]]]) → texto81
  192. If(n ≟ 1, 0, If[n ≟ 2, 3, If[n ≟ 3, 5, If[n ≟ 4, 7, If[n ≟ 5, 9, 11]]]]) → b_1
  193. Distance(E_1, F_1) → distanciaE1F1
  194. Textfield(m) → CasillaDeEntrada1
  195. Textfield(n) → CasillaDeEntrada2
  196. If(Element[listac1, 1] ≟ f, texto40, " ") → texto42
  197. Sequence(Sequence[Element[matriz1, i, j], j, 1, m], i, 1, n) → matriz11
  198. MatrixRank(matriz1) → c_1
  199. If(m ≟ 6, 180, If[m ≟ 5, 205, If[m ≟ 4, 215, If[m ≟ 3, 280, If[m ≟ 2, 315]]]]) → w
  200. LaTeX($14) → texto92
  201. LaTeX($13) → texto93
  202. LaTeX($12) → texto94
  203. LaTeX($11) → texto95
  204. LaTeX($10) → texto96
  205. LaTeX($9) → texto97
  206. Flatten(RemoveUndefined[Sequence[Solutions[Element[matriz10, var2, i] = 0], i, 1, m]]) → l7
  207. Flatten(RemoveUndefined[If[var ≟ m, If[Length[l7] ≟ 0, {Solutions[Element[matriz10, var2, m + 1] = 0]}, l7], l7]]) → l8
  208. Length(l8) → var3
  209. TableText({{"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") → texto128
  210. CountIf(x ≟ m + 1, var4) → d_1
  211. If(var5 ≠ var6, "SI", If[var5 ≟ m, "SCD", "SCI"]) → texto129
  212. TableText({{"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.