Друкарня від 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

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

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

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

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

Де i, j, k — це орти або так звані одиничні вектори, котрі відповідно вказують напрямки осей x, y, z у декартовій системі координат. У цій же системі координат дані орти приймають такі значення: i = (1, 0, 0), j = (0, 1, 0), k = (0, 0, 1).

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

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

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() для обчислення скалярного, векторного та мішаного добутку. Крім того, ми встановили головну суть кожного з цих дій над векторами.

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

  • Бронеплівка для вікон: коли вона доречна та як обрати рішення

    Як бронеплівка утримує уламки, де її встановлюють та чому перед монтажем важливо оцінити стан і конструкцію скління.

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

    Бронеплівка На Вікна
  • Шлейф сучасного смартфону та його призначення

    Шлейф - це тонка пластикова стрічка з ледь видимими доріжками і саме вона зʼєднує важливі компоненти мобільного, без яких він не запрацює. Власники пристроїв Xiaomi, які стикаються з потребою заміни цієї деталі, можуть підібрати відповідний варіант на сайті AKS.UA

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

    Шлейф Для Мобільного
  • Чохли для iPhone 15: повний гід по кольорах, матеріалах і виробниках

    Перед тим як вибрати чохли для iPhone 15, варто визначитися, що саме ви хочете отримати від аксесуара. Комусь потрібен тонкий прозорий корпус, інший покупець шукає посилений захист, а для когось вирішальним стане колір або підтримка MagSafe

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

    Чохли Для Iphone
  • Як побудована програма Meest China Academy

    Курс про товарний бізнес охоплює різні етапи роботи: від пошуку ідеї до перевірки товару, логістики та масштабування. Програма Meest China Academy містить 17 модулів, які послідовно розкривають ці теми без зведення всього навчання до однієї універсальної поради.

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

    Meest
  • Які технології використані в Айфон 17

    Айфон 17 поєднує OLED-дисплей із частотою до 120 Гц, чип A19, дві камери Fusion 48 Мп і швидке заряджання через USB-C. У COMFY можна купити Айфон 17 з накопичувачем на 256 або 512 ГБ, вибравши конфігурацію відповідно до обсягу фото, відео та застосунків

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

    Iphone 17
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Magnifique numérique
Magnifique numérique@magnifiquedigitalworld

Прекрасний цифровий світ

94Довгочити
2KПерегляди
28Підписники
Підтримати
На Друкарні з 14 липня 2025

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

  • Оновлення проєкту Magnifique numérique

    Відтепер Magnifique numérique — це не лише про статті з програмування, а й новини про IT та технології. Це означає, що відтепер контент стане різноманітнішим.

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

    Оновлення
  • Метод zfill() у Python

    У цій статті ми розберемо метод zfill() у Python на основі практичних прикладів його використання.

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

    It
  • Команда WHERE у SQL

    Сьогодні ми розглянемо команду WHERE та принцип роботи цієї команди.

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

    Програмування

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

  • Розрахунок релевантності запиту до тексту за допомогою BERT

    Визначення релевантності статей і пошукової видачі з використанням нейронних мереж. Python-скрипт обчислює текстову релевантність із застосуванням LaBSE (Language-agnostic BERT Sentence Embedding) на основі косинусної подібності.

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

    Python
  • λanguage: Неформальний опис мови

    Автор пояснює, як написати парсер, інтерпретатор, компілятор, та інші складові власної мови програмування. Описується синтаксис мови, особливості реалізації функцій, умовних конструкцій та інших елементів мови.

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

    Js
  • Що таке принципи безпеки?

    Кожному принципу безпеки автоматично присвоюється ідентифікатор безпеки (SID) під час його створення. У Windows Server 2003 реєстраційні записи безпеки є основою для контролю доступу до ресурсів, що охороняються.

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

    Безпека В Інтернеті

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

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

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

  • Розрахунок релевантності запиту до тексту за допомогою BERT

    Визначення релевантності статей і пошукової видачі з використанням нейронних мереж. Python-скрипт обчислює текстову релевантність із застосуванням LaBSE (Language-agnostic BERT Sentence Embedding) на основі косинусної подібності.

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

    Python
  • λanguage: Неформальний опис мови

    Автор пояснює, як написати парсер, інтерпретатор, компілятор, та інші складові власної мови програмування. Описується синтаксис мови, особливості реалізації функцій, умовних конструкцій та інших елементів мови.

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

    Js
  • Що таке принципи безпеки?

    Кожному принципу безпеки автоматично присвоюється ідентифікатор безпеки (SID) під час його створення. У Windows Server 2003 реєстраційні записи безпеки є основою для контролю доступу до ресурсів, що охороняються.

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

    Безпека В Інтернеті