矢量是一个既有大小又有方向的量。在这里,数量只是数量的数量或大小,方向是数量的方向。例如,考虑“北20英里”的说法。在上面的陈述中,20是震级,北方是方向。
null
例子 :
Input : Store and display vector with components 3, 4, 5. Output : 3i + 4j + 5k Input : Dot Product for V1 = (1, 3, 5), V2 = (2, 3, 0) Output : 11 where i, j, k are unit vectors in x, y and z directions respectively.
通常,向量表示为:
V=席+YJ+ZK
式中,X、Y和Z分别是i、j和k方向上向量V的大小。
可以对向量执行的各种操作:
- 添加向量: 矢量相加是通过将两个矢量对应的X、Y和Z幅值相加得到合成矢量。 例子: v1=1i+2j+3k v2=3i+2j+1k 因此,合成向量v=v1+v2=4i+4j+4k
- 向量的点积: 两个向量v1和v2的点积计算如下:
v = v1 . v2 = magnitude(v1)*magnitude(v2)*Cos(θ) Where, θ is the angle between the vectors v1 and v2.
例子: v1=1i+2j+3k v2=3i+2j+1k 因此,v=v1。v2=3+4+3=10
- 向量的叉积: 向量的叉积是通过使用向量a=axi+ayj+azk和b=bxi+byj+bzk的行列式来完成的
c=a X b=i(ay*bz–bx*az)-j(ax*bz–az*bx)+k(ax*bx–bx*ay)
例子: v1=3i+4j+2k v2=6i+3j+9k 因此,v=v1 X v2=30i–15j–15k
下面是使用C++中的类实现上述操作:
#include <cmath> #include <iostream> using namespace std; class Vector { private : int x, y, z; // Components of the Vector public : Vector( int x, int y, int z) { // Constructor this ->x = x; this ->y = y; this ->z = z; } Vector operator+(Vector v); // ADD 2 Vectors Vector operator-(Vector v); // Subtraction int operator^(Vector v); // Dot Product Vector operator*(Vector v); // Cross Product float magnitude() { return sqrt ( pow (x, 2) + pow (y, 2) + pow (z, 2)); } friend ostream& operator<<(ostream& out, const Vector& v); // To output the Vector }; // Addition of vectors Vector Vector::operator+(Vector v) { int x1, y1, z1; x1 = x + v.x; y1 = y + v.y; z1 = z + v.z; return Vector(x1, y1, z1); } // Subtraction of vectors Vector Vector::operator-(Vector v) { int x1, y1, z1; x1 = x - v.x; y1 = y - v.y; z1 = z - v.z; return Vector(x1, y1, z1); } // Dot product of vectors int Vector::operator^(Vector v) { int x1, y1, z1; x1 = x * v.x; y1 = y * v.y; z1 = z * v.z; return (x1 + y1 + z1); } // Cross product of vectors Vector Vector::operator*(Vector v) { int x1, y1, z1; x1 = y * v.z - z * v.y; y1 = z * v.x - x * v.z; z1 = x * v.y - y * v.x; return Vector(x1, y1, z1); } // Display Vector ostream& operator<<(ostream& out, const Vector& v) { out << v.x << "i " ; if (v.y >= 0) out << "+ " ; out << v.y << "j " ; if (v.z >= 0) out << "+ " ; out << v.z << "k" << endl; return out; } // Driver program int main() { // Let us Take the vector quantites : // V1 = 3i + 4j + 2k // V2 = 6i + 3j + 9k Vector V1(3, 4, 2), V2(6, 3, 9); cout << "V1 = " << V1; cout << "V2 = " << V2; cout << "V1 + V2 = " << (V1 + V2); cout << "Dot Product is : " << (V1 ^ V2); cout << "Cross Product is : " << (V1 * V2); return 0; } |
输出:
V1 = 3i + 4j + 2k V2 = 6i + 3j + 9k V1 + V2 = 9i + 7j + 11k Dot Product is : 48Cross Product is : 30i -15j -15k
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END