Covariant and Contravariant Vector Components
Loading the math board and drawing, please wait…
This example demonstrates the concepts of covariant and contravariant vector components. It shows how vectors change in different coordinate systems through a 3D coordinate system. Commands like Intersect, Vector, and Sequence are used to construct basis vectors, dual basis vectors, and other objects. Suitable for high school and above students learning vector geometry and transformations.
GeoGebra Commands & Parameters
Intersect(zAxis, xOyPlane) → OVector(O, V) → vSequence(Vector[If[(v * DualBasis(1)) > 0, Vector[O + (i * Basis(1)), O + ((i + 1) * Basis(1))], Vector[O - (i * Basis(1)), O - ((i + 1) * Basis(1))]]], i, 0, If[(v * DualBasis(1)) > 0, floor((v * DualBasis(1))), abs(ceil((v * DualBasis(1))))] - 1) → l1Sequence(Vector[If[(v * DualBasis(2)) > 0, Vector[((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) + (i * Basis(2)), ((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) + ((i + 1) * Basis(2))], Vector[((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) - (i * Basis(2)), ((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) - ((i + 1) * Basis(2))]]], i, 0, If[(v * DualBasis(2)) > 0, floor((v * DualBasis(2))), abs(ceil((v * DualBasis(2))))] - 1) → l4Sequence(Vector[If[(v * DualBasis(3)) > 0, Vector[((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) + ((v * DualBasis(2)) * Basis(2)) + (i * Basis(3)), ((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) + ((v * DualBasis(2)) * Basis(2)) + ((i + 1) * Basis(3))], Vector[((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) + ((v * DualBasis(2)) * Basis(2)) - (i * Basis(3)), ((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) + ((v * DualBasis(2)) * Basis(2)) - ((i + 1) * Basis(3))]]], i, 0, If[(v * DualBasis(3)) > 0, floor((v * DualBasis(3))), abs(ceil((v * DualBasis(3))))] - 1) → l3Vector(O + (If[(v * DualBasis(1)) > 0, floor((v * DualBasis(1))), abs(ceil((v * DualBasis(1))))] * Basis(1)), O + ((v * DualBasis(1)) * Basis(1))) → e1restVector(((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) + ((v * DualBasis(2)) * Basis(2)) + (If[(v * DualBasis(3)) > 0, floor((v * DualBasis(3))), ceil((v * DualBasis(3)))] * Basis(3)), ((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) + ((v * DualBasis(2)) * Basis(2)) + ((v * DualBasis(3)) * Basis(3))) → e3restVector(((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) + (If[(v * DualBasis(2)) > 0, floor((v * DualBasis(2))), ceil((v * DualBasis(2)))] * Basis(2)), ((((v * DualBasis(1)) * Basis(1)) * (1, 0, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 1, 0)), (((v * DualBasis(1)) * Basis(1)) * (0, 0, 1))) + ((v * DualBasis(2)) * Basis(2))) → e2rest