Programlama kütüphaneleri kullanılmadan iki vektörün çapraz çarpımını nasıl hesaplayabilirim?Python'da iki vektörün çapraz çarpımı
Örn verilen vektörler a = (1, 2, 3)
ve b = (4, 5, 6)
Programlama kütüphaneleri kullanılmadan iki vektörün çapraz çarpımını nasıl hesaplayabilirim?Python'da iki vektörün çapraz çarpımı
Örn verilen vektörler a = (1, 2, 3)
ve b = (4, 5, 6)
import numpy as np
a = np.array([1,0,0])
b = np.array([0,1,0])
print np.cross(a,b)
'programlama kütüphaneleri kullanılmadan' –
bunun için üzgünüm. – fulmicoton
Gereksinimlere bir cevap olmasa da, Paul'un bir noktası vardır: Eğer bu tür şeylere ihtiyacınız varsa, gerçekten * bakmalıyız *! Ayrıca, çalışmalarınızda 3B vektörler ile oynuyorsanız, VPython'a bakın - bu şeyleri son derece kolay ve eğlenceli hale getirir. –
arası ürünün formül soruyorsunuz? Ya da python'da indeksleme ve listeler nasıl yapılır?
Temel fikir, a ve b öğelerine [0], a [1], a [2], vb. (X, y, z için) olarak erişmeniz ve yeni bir liste oluşturmanızdır. [element_0, element_1, ...] ile. Ayrıca bir fonksiyona da sarılabiliriz. Vektör tarafında, çapraz ürün, elementlerin antisimetrik ürünüdür ve bu da güzel bir geometrik yoruma sahiptir. Kendinizi sizi çapraz ürünü uygulamak istiyorsanız ...
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
etiketi için teşekkürler! – blur959
Rica ederim (ama her birimize ayrı ayrı teşekkür etmenize gerek yok) Ancak, cevaplardan birini "kabul" edebilirsiniz - ipucu, ipucu, ... –
Neyse, size ipuçları vermek ve bunu anlamaya izin daha iyi olurdu, ama bu gerçekten SO yol değil, bu yüzden http://en.wikipedia.org/wiki/Vector_cross_product veya bir matematik/fizik kitabı görebilir. Kısa bir süre (a1, a2, a3) x (B1, B2, B3) = (a2 * b3-3-a * b2 a3 * b 1-a-1 * B3, A1 * b2-a2 * b 1), birden çok boyutlar için
Bilgi için teşekkürler! Teşekkür ederiz! – blur959
Bu işe yarayabilir;
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
Bunun için özyineleme mi kullanıyorsunuz? ... Daha zarif olurdu. – Sardathrion
eski, ancak bazı biri eğer hiç gerekir: ben böyle yaptım:
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
çapraz ürün için formül http://mathworld.wolfram.com/CrossProduct.html adresinde bulunabilir. Hala bir programlama probleminiz olduğunu okuduktan sonra geri gelin. –