использование Python для расчета векторной проекции - PullRequest
2 голосов
/ 18 марта 2019

Есть ли более простая команда для вычисления векторной проекции? Вместо этого я использую следующее:

x = np.array([ 3, -4,  0])
y = np.array([10,  5, -6])
z=float(np.dot(x, y))
z1=float(np.dot(x, x))
z2=np.sqrt(z1)
z3=(z/z2**2)
x*z3

1 Ответ

1 голос
/ 18 марта 2019

Может быть, просто возможно, это то, что вы действительно хотите:

np.dot(x, y) / np.linalg.norm(y)

Это должно дать проекцию вектора x на вектор y - см. https://en.wikipedia.org/wiki/Vector_projection. В качестве альтернативы, если вы хотите вычислить проекцию y на x, то замените y на x в знаменателе (norm) вышеприведенного уравнения.

РЕДАКТИРОВАТЬ: Как отметил @VaidAbhishek, приведенная выше формула для скалярной проекции. Чтобы получить проекцию vector , умножьте скалярную проекцию на единичный вектор в направлении вектора, на который проецируется первый вектор. Формула затем может быть изменена как:

y * np.dot(x, y) / np.dot(y, y)

для векторной проекции x на y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...