Percentages(I): Profit and Loss

Percentages(I): Profit and Loss
Loading the math board and drawing, please wait…
2016-11-15 12:12
This example demonstrates how to visualize profit and loss calculations through geometric representations. Key math concepts include percentage calculations, geometric operations, and data analysis. GeoGebra commands and objects like Point, Polygon, Intersect, Sequence, Textfield, Midpoint, If, Segment are used to construct shapes, calculate lengths, widths, and percentage changes. Suitable for middle school and above students learning percentage applications, geometric computations, and data analysis.

GeoGebra Commands & Parameters

  1. Point(yAxis) → A
  2. Point(yAxis) → B
  3. Point(Segment[A, A + (length * maxchange, 0)]) → P
  4. Point(Segment[A + (0, width), A + (length * maxchange, width)]) → Q
  5. Polygon(A, P, P + (0, width), A + (0, width)) → poly1, poly1a, poly1d, poly1b, poly1c
  6. Polygon(B, B + (length, 0), B + (length, width), B + (0, width)) → poly2, poly2b, poly2a, poly2c, poly2d
  7. Intersect(Ray[P, P + (1, 0)], x = length) → A1
  8. Intersect(Ray[Q, Q + (1, 0)], x = length) → A2
  9. Intersect(Ray[B1, B1 + (1, 0)], x = x(P)) → P'
  10. Intersect(Ray[B2, B2 + (1, 0)], x = x(P)) → Q'
  11. Polygon(P, Q, A2, A1) → poly3, poly3b, poly3b_1, poly3d, poly3c
  12. Polygon(B1, B2, Q', P') → poly4, poly4c, poly4d, poly4b, poly4a
  13. Sequence(Segment[B + (i * length / 10, 0), B + (i * length / 10, width)], i, 1, 9) → list1
  14. Sequence(Sequence[Segment[B + (j * length / 100 + i * length / 10, 0), B + (j * length / 100 + i * length / 10, width)], j, 1, 9], i, 0, 9) → list2
  15. Sequence(Segment[A + (i * length / 10, 0), A + (i * length / 10, width)], i, 1, 9) → list3
  16. Sequence(Sequence[Segment[A + (j * length / 100 + i * length / 10, 0), A + (j * length / 100 + i * length / 10, width)], j, 1, 9], i, 0, 9) → list4
  17. Textfield(cost) → inputBox1
  18. Textfield(cost) → inputBox2
  19. Midpoint(B, B2) → C
  20. Midpoint(A, Q) → D
  21. Midpoint(P, A2) → E
  22. Midpoint(B1, Q') → F
  23. Midpoint(B1, Q') → G
  24. Textfield(price) → inputBox3
  25. Midpoint(P, A1) → H
  26. Midpoint(poly4a) → I
  27. Midpoint(poly3b_1) → J
  28. Midpoint(poly4d) → K
  29. If(o_2, "$ y", "$" + cost) → text9
  30. If(o_2, "$ y", "$" + cost) → text4
  31. If(o_3, "y %", abs(change_%) * "%") → text11
  32. If(o_1, "$ y", "$" + price) → text13
  33. If(change_% < 0, "-", "+") → text24
  34. If(o_3, "y %", abs(change_%) * "%") → text17
  35. If(o_3, "1 " * text24 * " y %", "1 " + (text24 * " " * abs(change_%) * "%")) → text34
  36. If(o_3, "1 " * text24 * " y %", "1 " + (text24 * " " * abs(change_%) * "%")) → text14
  37. If(o_1 ∨ o_4, If[o_1, "$ y", cost * " " * text24 * " $ y"], "$" + price) → text12
  38. If(o_4, cost * " " * text24 * " $ y", "$" + price) → text15
  39. Textfield(price) → inputBox4
  40. Segment(B + (0, width), A) → g
  41. Segment(B2, A + (length, 0)) → i
  42. Segment(P, If[x(P) < length, Intersect[poly2c, x = x(P)], Intersect[poly4d, x = x(P)]]) → h
  43. Sequence(Segment[A + (i * length / 10, 0), A + (i * length / 10, width)], i, 1, floor(x(P) / length * 10)) → list3_1
  44. Sequence(Sequence[Segment[A + (j * length / 100 + i * length / 10, 0), A + (j * length / 100 + i * length / 10, width)], j, 1, 9], i, 0, floor(x(P) / length * 10) - 1) → list4_1
  45. Sequence(Segment[B + (i * length / 10, 0), B + (i * length / 10, width)], i, 1, floor(x(P) / length * 10)) → list5
  46. Sequence(Sequence[Segment[B + (j * length / 100 + i * length / 10, 0), B + (j * length / 100 + i * length / 10, width)], j, 1, 9], i, 0, floor(x(P) / length * 10) - 1) → list6_1
  47. Sequence(Segment[A + (j * length / 100 + floor(x(P) / length * 10) * length / 10, 0), A + (j * length / 100 + floor(x(P) / length * 10) * length / 10, width)], j, 1, floor((x(P) - floor(x(P) / length * 10) * length / 10) / length * 100)) → list4_2
  48. Sequence(Segment[B + (j * length / 100 + floor(x(P) / length * 10) * length / 10, 0), B + (j * length / 100 + floor(x(P) / length * 10) * length / 10, width)], j, 1, floor((x(P) - floor(x(P) / length * 10) * length / 10) / length * 100)) → list6_2
  49. If(b ∧ (change_% < 0), "Loss", "Discount") → text8
  50. If(b, "Cost", "Marked Price") → text6