Cross Product of Two Vectors in Python

Cross Product of Two Vectors in Python

How can I calculate the cross product of two vectors without the use of programming libraries?

E.g given vectors a = (1, 2, 3) and b = (4, 5, 6)

1

6 Answers

are you asking about the formula for the cross product? Or how to do indexing and lists in python?

The basic idea is that you access the elements of a and b as a[0], a[1], a[2], etc. (for x, y, z) and that you create a new list with [element_0, element_1, ...]. We can also wrap it in a function.

On the vector side, the cross product is the antisymmetric product of the elements, which also has a nice geometrical interpretation.

Anyway, it would be better to give you hints and let you figure it out, but that's not really the SO way, so...

def cross(a, b):
    c = [a[1]*b[2] - a[2]*b[1],
         a[2]*b[0] - a[0]*b[2],
         a[0]*b[1] - a[1]*b[0]]

    return c
1
import numpy as np
a = np.array([1,0,0])  
b = np.array([0,1,0])  
#print the result    
print(np.cross(a,b))
2

If you want to implement the cross product yourself you may see or a math/physics book. Shortly (a1, a2, a3) X (b1, b2, b3) = (a2*b3-a3*b2, a3*b1-a1*b3, a1*b2-a2*b1)

0

for multiple dimensions, this might work;

    def crossProd(a,b):
      dimension = len(a)
      c = []
      for i in range(dimension):
        c.append(0)
        for j in range(dimension):
          if j <> i:
            for k in range(dimension):
              if k <> i:
                if k > j:
                  c[i] += a[j]*b[k]
                elif k < j:
                  c[i] -= a[j]*b[k]
      return c
2

I did it like this:

def cross_product(u,v):  
    dim = len(u)
    s = []
    for i in range(dim):
        if i == 0:
            j,k = 1,2
            s.append(u[j]*v[k] - u[k]*v[j])
        elif i == 1:
            j,k = 2,0
            s.append(u[j]*v[k] - u[k]*v[j])
        else:
            j,k = 0,1
            s.append(u[j]*v[k] - u[k]*v[j])
    return s
1

I defined a successror funtion z,This is to help write the formulas of the cross product In a slightly consise way.here is the code

    from numpy import zeros
    def z(a):
      if a == 0 or a == 1:
       return a+1
      elif a == 2:
       return 0
    n = 3
    i = 0
    v = zeros(n, float)
    v1 = zeros(n, float)
    v2 = zeros(n, float)
    v1[0] = float(input("enter x component of v1 "))
    v1[1] = float(input("enter y component of v1 "))
    v1[2] = float(input("enter z component of v1 "))
    v2[0] = float(input("enter x component of v2 "))
    v2[1] = float(input("enter y component of v2 "))
    v2[2] = float(input("enter z component of v2 "))


    def cp(x, y):
     global i
     while i < n:
      v[i] = x[z(i)]*y[z(z(i))]-x[z(z(i))]*y[z(i)]
      i = i + 1
     return v


    ans = cp(v1, v2)
    print(ans)
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Sophia Al-Mansoor
Author

Sophia Al-Mansoor

Sophia analyzes international trade, startup ecosystems, retail transformation, and supply chain logistics for modern digital publications.