Visualizing Functions of Two Variables by Roman Chijner
Loading the math board and drawing, please wait…
This example demonstrates the visualization of functions of two variables. It involves key mathematical concepts such as functions and implicit curves. Using GeoGebra commands like If, ImplicitCurve, and others, complex geometric shapes can be constructed. Suitable for high school and above students or teachers.
GeoGebra Commands & Parameters
If(b_a, Nx_a, 1) → Nx1_aPolygon((x_{max}, y_{max}), (x_{min}, y_{max}), (x_{min}, y_{min}), (x_{max}, y_{min})) → VV, j, t, c, dPointIn(VV) → E_φPointIn(VV) → PTestPolygon((x((ro; α)), y((ro; α)), z_{min}) + PTest, (x((ro; α + 180°)), y((ro; α + 180°)), z_{min}) + PTest, (x((ro; α + 180°)), y((ro; α + 180°)), z_{max}) + PTest, (x((ro; α)), y((ro; α)), z_{max}) + PTest) → poly1, k, l, m, pImplicitCurve(f(x, y) - f(x(C), y(C))) → ICurve_2IntersectPath(plane0, f(x, y)) → ICurve_3Point(ICurve_2) → R0Length(lr2) → llr2Sequence((x(Element[lr2, i]), y(Element[lr2, i]), f(x(Element[lr2, i]), y(Element[lr2, i]))), i, 1, llr2) → lllPmin01If(Length[lllPmin01] ≟ 0, false, true) → bwllPmin01Length(lr1) → llr1Sequence((x(Element[lr1, i]), y(Element[lr1, i]), f(x(Element[lr1, i]), y(Element[lr1, i]))), i, 1, llr1) → lllPmax01If(Length[lllPmax01] ≟ 0, false, true) → bwllPmax01If(bwllPmax01, Max[z(lllPmax01)], 1000) → Maxz0If(bwllPmax01, IndexOf[Maxz0, Sequence[z(Element[lllPmax01, i]), i, 1, Length[lllPmax01]]], 1000) → Indexmaxz0If(b, true, false) → hIf(h, Nx, 1) → Nx1Length(lr3) → llr3Point(Segment[(0, 0), (6.28319, 0)]) → AfPoint(Segment[Px2, Px1]) → AxPoint(Segment[Py2, Py1]) → AyTextfield(N_{V1}) → inputBox1Textfield(x_{min}) → inputBox2Textfield(x_{max}) → inputBox3Textfield(y_{min}) → inputBox4Textfield(y_{max}) → inputBox5Textfield(f) → inputBox6Textfield(z_{min}) → inputBox7Textfield(z_{max}) → inputBox8Point(Segment[Pz2, Pz1]) → AzIf(zzii < 0, 0, If[zzii > 1, 1, cos(((0.9 * zzii) * 10^(ω_c)))]) → Ra01If(zzii < 0, 0, If[zzii > 1, 0, sin(((0.5 * zzii) * 10^(ω_c)))]) → Ga01If(zzii < 0, 0, If[zzii > 1, 0, cos(((0.7 * zzii) * 10^(ω_c)))]) → Ba01Sequence((x(Element[Extrx0, i]), yi3_e), i, 1, Length[Extrx0]) → Extrx2Sequence((xi3_e, x(Element[Extry0, i])), i, 1, Length[Extry0]) → Extry2Textfield(ω_c) → inputBox9Textfield(vt) → inputBox10Sum(Sequence[If[f(x(PTest), y(PTest)) - f(x(Element[lr01, i]), y(Element[lr01, i])) > 0, 1, 0], i, 1, n]) → ext1RotateText("z_{min}=" + z_{min} + "", 90°) → Text2RotateText("z_{max}=" + z_{max} + "", 90°) → Text6Sequence(Segment[Element[l0maxmin2, k], Element[l0maxmin2, k + 1]], k, 1, Length[l0maxmin2]) → linelmaxmin2Sequence(Element[lr1, i], i, 1, llr1) → lPmaxSequence(Element[lr2, i], i, 1, llr2) → lPminSequence(Element[lr3, i], i, 1, llr3) → lPsadIf(bwllPmin01, Min[z(lllPmin01)], 1000) → Minz0If(bwllPmin01, IndexOf[Minz0, Sequence[z(Element[lllPmin01, i]), i, 1, Length[lllPmin01]]], 1000) → Indexminz0Element(lr2, Indexminz0) → P_{min0}If(bwllPmin01, Element[lllPmin01, Indexminz0], (1000, 1000, 1000)) → zmin2Point(Liste1) → C111aLocus(C1110a, C111a) → locSequence(If[abs(Element[Ffarbe, i]) > 1, 0, cos((((e * 0.9) * Element[Ffarbe, i]) * 10^(ω_c)))], i, 1, Nx1) → LvalueSequence(If[Element[Ffarbe, i] < 0.14, 0, Element[Ffarbe, i]], i, 1, Nx1) → LhueSequence(If[Element[Ffarbe, i] < 0.14, 0, 1], i, 1, Nx1) → LsatPolyLine(l0maxmin1) → linelmaxmin11If(bwllPmax01, Element[lllPmax01, Indexmaxz0], (1000, 1000, 1000)) → zmax2RemoveUndefined(Sequence[If[f(x(PTest), y(PTest)) - f(x(Element[lr01, i]), y(Element[lr01, i])) > 0, i, NaN], i, 1, n]) → lr04Zip(Vector[b, a], a, Sequence[Element[lr01, Element[lr04, i]], i, 1, Length[lr04]], b, Sequence[Element[lr02, Element[lr04, i]], i, 1, Length[lr04]]) → lr06Sequence((x(Element[lr01, i]), y(Element[lr01, i]), f(x(Element[lr01, i]), y(Element[lr01, i]))), i, 1, n) → lr013Sequence((x(Element[lr02, i]), y(Element[lr02, i]), f(x(Element[lr02, i]), y(Element[lr02, i]))), i, 1, n) → lr023Zip(Vector[b, a], a, Sequence[Element[lr013, Element[lr04, i]], i, 1, Length[lr04]], b, Sequence[Element[lr023, Element[lr04, i]], i, 1, Length[lr04]]) → lr063Zip(Vector[a, b], a, Sequence[Element[lr01, Element[lr05, i]], i, 1, Length[lr05]], b, Sequence[Element[lr02, Element[lr05, i]], i, 1, Length[lr05]]) → lr07Zip(Vector[a, b], a, Sequence[Element[lr013, Element[lr05, i]], i, 1, Length[lr05]], b, Sequence[Element[lr023, Element[lr05, i]], i, 1, Length[lr05]]) → lr073Textfield(zoom_{3D}) → InputBox1Element(lr1, rmax - 1) → PzmaxElement(lr2, rmin - 1) → PzminElement(lr3, rsad - 1) → PzsadText("( x , y , z )") → TextR01Join({{TextR01}, lllPmax01}) → llPmax01Element(lr1, Indexmaxz0) → P_{max0}Sequence((x(Element[lr3, i]), y(Element[lr3, i]), f(x(Element[lr3, i]), y(Element[lr3, i]))), i, 1, llr3) → lllPspJoin({{TextR01}, lllPmin01}) → llPmin01Join({{TextR01}, lllPsp}) → llPsad01Element(lllPsp, rsad - 1) → Pzsad_{3D}Element(lllPmax01, rmax - 1) → Pzmax_{3D}Element(lllPmin01, rmin - 1) → Pzmin_{3D}Sequence(If[Element[Ffarbe_a, i] < 0.14, 0, Element[Ffarbe_a, i]], i, 1, Nx1_a) → Lhue_aSequence(If[abs(Element[Ffarbe_a, i]) > 1, 0, cos((((e * 0.9) * Element[Ffarbe_a, i]) * 10^(ω0_c)))], i, 1, Nx1_a) → Lvalue_aSequence(If[Element[Ffarbe_a, i] < 0.14, 0, 1], i, 1, Nx1_a) → Lsat_aCircle(PTest, R) → sTextfield(A) → InputBox2RemoveUndefined(Sequence[If[f(x(PTest), y(PTest)) - f(x(Element[lr01, i]), y(Element[lr01, i])) > 0, i, (-i)], i, 1, n]) → lr04cAppend(lr04c, Element[lr04c, 1]) → lr04ccSum(Sequence[If[(Element[lr04cc, i] * Element[lr04cc, i + 1]) < 0, 1, 0], i, 1, n + 1]) → lr04cccLine(A, RoR) → iImplicitCurve(f(x, y) - zi) → list3If(dzir < 0.01, 0, dzir) → LhuezImplicitCurve(f(x, y) - zii) → list4If(dziir < 0.01, 0, dziir) → LhueziiCircle(E_φ, R + 0.2) → szVector(R0, R41) → w_11Vector(R0, R0 + R11) → u_11SlopeField(f1', n_c, a_c, x_{min}, y_{min}, x_{max}, y_{max}) → SFTextfield(ω0_c) → InputBox3Textfield(R) → InputBox4Textfield(r_a) → InputBox5Point(c) → GPoint(j) → HPoint(w_11, 1) → IVector(F, I_{3D}) → vIf(ext1 ≟ n, 1, If[ext1 ≟ 0, 2, If[(lr04ccc > 2) ∧ (lr04ccc ≤ 4), 3, 4]]) → rooTextfield(n_c) → InputBox6Textfield(a_c) → InputBox7Textfield(r_{lc}) → InputBox8