Друкарня від WE.UA

Скалярний, векторний та мішаний добутки у Python

Зміст

Всіх вітаю! Предметом обговорення у сьогоднішній статті будуть скалярний, векторний та мішаний добутки у Python за допомогою бібліотеки numpy. У цій статті ми розглянемо як реалізувати усі ці добуки через відповідний функціонал та дещо дізнаємося про їх суть.

Встановлення numpy

Windows:

pip install numpy

MacOS:

pip3 install numpy

Linux:

pip install numpy

Скалярний добуток

За скалярним добутком у результаті обчислення ми одержуємо число, або скаляр іншими словами.

Формула скалярного добутку виглядає так:

Формула скалярного добутку (для тривимірних векторів)

Приклад на основі двовимірних векторів

Першим кроком імпортуємо бібліотеку numpy:

import numpy as np

Створюємо два вектори:

vector_a = np.array([2, 4])
vector_b = np.array([9, 6])

Для знаходження скалярного добутку між двома векторами використовуємо функцію dot():

scalar_product = np.dot(vector_a, vector_b)
print(f"Скалярний добуток: {scalar_product}")

Результат:

Скалярний добуток: 42

Приклад на основі тривимірних векторів

Визначаємо вектори:

vector_a = np.array([-1, 14, 3])
vector_b = np.array([0, -4, 7])

Знаходимо скалярний добуток для нових векторів:

scalar_product = np.dot(vector_a, vector_b)
print(f"Скалярний добуток: {scalar_product}")
Скалярний добуток: -35

Векторний добуток

За векторним добутком ми у результаті отримуємо не число, як у скалярному добутку, а вектор.

Формула векторного добутку виглядає так:

Формула векторного добутку

Тривимірні вектори — єдині можливі параметри

З векторним добутком все цікавіше. Так як векторний добуток можливий тільки для тривимірних векторів, то ми визначаємо тільки їх:

vector_a = np.array([3, 5, -8])
vector_b = np.array([-9, 0, 4])

Для знаходження векторного добутку використовуємо функцію cross(), якій передаємо наші вектори:

cross_product = np.cross(vector_a, vector_b)
print(f"Векторний добуток: {cross_product}")

Результат:

Векторний добуток: [20 60 45]

Ось ще один приклад:

vector_a = np.array([12, -81, 43])
vector_b = np.array([-30, 11, 57])

cross_product = np.cross(vector_a, vector_b)
print(f"Векторний добуток: {cross_product}")
Векторний добуток: [-5090 -1974 -2298]

Коли векторний добуток втрачає свій сенс

На початку розділу з векторним добутком ми зазначили, що векторний доуток можливий тільки для тривимірних векторів, але давайте спробуємо передати функції cross() двовимірні вектори і подивимося на її поведінку:

vector_a = np.array([5, 3])
vector_b = np.array([10, 2])

cross_product = np.cross(vector_a, vector_b)
print(f"Векторний добуток: {cross_product}")
DeprecationWarning: Arrays of 2-dimensional vectors are deprecated. Use arrays of 3-dimensional vectors instead. (deprecated in NumPy 2.0)
  cross_product = np.cross(vector_a, vector_b)
Векторний добуток: -20

Як бачимо, якщо передати функції cross(), наприклад, двовимірні вектори, то функція обчислює простий скалярний добуток. Тож, можемо зробити висновок, що векторний добуток втрачає сенс у такому випадку.

Також ми бачимо попередження, яке прямо каже, що цій функції у якості параметрів треба передавати саме тривимірні вектори.

Мішаний добуток

Мішаний добуток об’єднує у собі всі попередні і в результаті ми отримуємо вектор.

Формула мішаного добутку виглядає ось так:

Формула мішаного добутку

Перший приклад

Для знаходження мішаного добутку ми відповідно будемо використовувати і функцію dot(), і функцію cross():

vector_a = np.array([0, 34, 7])
vector_b = np.array([10, 13, 9])
vector_c = np.array([5, 7, 15])

mixed_product = np.dot(vector_a, np.cross(vector_b, vector_c))
print(f"Мішаний добуток: {cross_product}")
Мішаний добуток: -3535

Другий приклад

Аналогічний приклад:

vector_a = np.array([9, 2, 2])
vector_b = np.array([8, 8, 8])
vector_c = np.array([0, 7, 0])

mixed_product = np.dot(vector_a, np.cross(vector_b, vector_c))
print(f"Мішаний добуток: {mixed_product}")
Мішаний добуток: -392

Висновок

Як висновок ми навчилися використовувати функції dot(), cross() для обчислення скалярного, векторного та мішаного добутку. Крім того, ми встановили головну суть кожного з цих дій над векторами.

Статті про вітчизняний бізнес та цікавих людей:

  • Вітаємо з Різдвом Христовим!

    Друкарня та платформа WE.UA вітають всіх наших читачів та авторів зі світлим святом Різдва! Зичимо всім українцям довгожданого миру, міцного здоровʼя, злагоди, родинного затишку та втілення всього доброго і прекрасного, чого вам побажали колядники!

    Теми цього довгочиту:

    Різдво
  • Каблучки – прикраси, які варто купувати

    Ювелірні вироби – це не тільки спосіб витратити гроші, але і зробити вигідні інвестиції. Бо вартість ювелірних виробів з кожним роком тільки зростає. Тому купуючи стильні прикраси, ви вигідно вкладаєте кошти.

    Теми цього довгочиту:

    Як Вибрати Каблучку
  • П'ять помилок у виборі домашнього текстилю, які псують комфорт сну

    Навіть ідеальний матрац не компенсує дискомфорт, якщо текстиль підібрано неправильно. Постільна білизна безпосередньо впливає на терморегуляцію, стан шкіри та глибину сну. Більшість проблем виникає не через низьку якість виробів, а через вибір матеріалів та подальшу експлуатацію

    Теми цього довгочиту:

    Домашній Текстиль
  • Як знайти житло в Києві

    Переїжджаєте до Києва і шукаєте житло? Дізнайтеся, як орендувати чи купити квартиру, перевірити власника та знайти варіанти, про які зазвичай не говорять.

    Теми цього довгочиту:

    Агентство Нерухомості
  • Як заохотити дитину до читання?

    Як залучити до читання сучасну молодь - поради та факти. Користь читання для дітей - основні переваги. Розвиток дітей - це наше майбутнє.

    Теми цього довгочиту:

    Читання
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Mystique Lord
Mystique Lord@nocturnal_reader

Нічний читач

360Прочитань
20Автори
10Читачі
Підтримати
На Друкарні з 14 липня

Більше від автора

Це також може зацікавити:

  • PHP 8.3: Що нового?

    Це наступний великий реліз мови програмування PHP. Його випуск заплановано на 2023 рік. Сьогодні ми разберемо нові функціі.

    Теми цього довгочиту:

    Програмування
  • JNA. Виклик нативного коду з Java

    Часто Java може не мати доступу до специфічних функцій операційної системи або апаратного забезпечення. JNA дозволяє викликати ці функції безпосередньо.

    Теми цього довгочиту:

    Програмування
  • Frontend [TypeScript] 2

    TypeScript - Як писати код швидше та надійніше. Про неочевидні речі.

    Теми цього довгочиту:

    It

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити:

  • PHP 8.3: Що нового?

    Це наступний великий реліз мови програмування PHP. Його випуск заплановано на 2023 рік. Сьогодні ми разберемо нові функціі.

    Теми цього довгочиту:

    Програмування
  • JNA. Виклик нативного коду з Java

    Часто Java може не мати доступу до специфічних функцій операційної системи або апаратного забезпечення. JNA дозволяє викликати ці функції безпосередньо.

    Теми цього довгочиту:

    Програмування
  • Frontend [TypeScript] 2

    TypeScript - Як писати код швидше та надійніше. Про неочевидні речі.

    Теми цього довгочиту:

    It