协变与逆变向量分量
几何画板及绘图内容加载中,请稍等……
本范例演示协变与逆变向量分量的概念。通过三维坐标系中的向量,展示向量在不同坐标系下的分量变化。使用了Intersect, Vector, Sequence等命令,构造了三维坐标系、基向量、对偶基向量等对象。适合高中及以上学生学习向量几何和变换。
GeoGebra 命令及参数
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