Come posso calcolare il prodotto incrociato di due vettori senza l'uso di librerie di programmazione?Prodotto incrociato di due vettori in Python
es dato vettori a = (1, 2, 3)
e b = (4, 5, 6)
Come posso calcolare il prodotto incrociato di due vettori senza l'uso di librerie di programmazione?Prodotto incrociato di due vettori in Python
es dato vettori a = (1, 2, 3)
e 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)
'senza uso di librerie di programmazione' ... –
scusate per quello. – fulmicoton
Sebbene non sia una risposta ai requisiti, Paul ha un punto: Se hai bisogno di questo genere di cose, dovresti * guardare * in faccia a capire! Inoltre, se stai giocando con i vettori 3D negli studi, controlla VPython - rende la visualizzazione di queste cose estremamente facile e divertente. –
stai chiedendo circa la formula per il prodotto vettoriale? O come fare indicizzazione e liste in python?
L'idea di base è che si accede agli elementi di a e b come [0], a [1], a [2], ecc. (Per x, y, z) e che si crea un nuovo elenco con [elemento_0, elemento_1, ...]. Possiamo anche avvolgerlo in una funzione.
Sul lato vettoriale, il prodotto a croce è il prodotto antisimmetrico degli elementi, che ha anche una bella interpretazione geometrica.
In ogni caso, sarebbe meglio per darvi suggerimenti e farvi capire, ma che non è davvero il modo SO, quindi ...
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
grazie per il tag! – blur959
Prego (ma non è necessario ringraziare ognuno di noi individualmente), tuttavia è possibile "accettare" una delle risposte - suggerimento, suggerimento, ... –
Se si desidera implementare il prodotto vettoriale voi stessi potrebbe vedere http://en.wikipedia.org/wiki/Vector_cross_product o un libro di matematica/fisica. In breve (a1, a2, a3) X (b1, b2, b3) = (a2 * b3-a3 * b2, a3 * b1-a1 * b3, a1 * b2-a2 * b1)
grazie per le informazioni! Apprezzalo! – blur959
per più dimensioni questo potrebbe funzionare;
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
usando la ricorsione per questo? ... Sarebbe più elegante. – Sardathrion
vecchio, ma se qualcuno avrà mai bisogno di: ho fatto in questo modo:
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
La formula per il prodotto vettoriale può essere trovato su http://mathworld.wolfram.com/CrossProduct.html. Torna dopo aver letto che se hai ancora un problema di programmazione. –