Перейти к основному содержанию
CalcMax

Калькулятор скалярного произведения

Результат

8,0000

Скалярное произведение

Модуль u
3,0000
Модуль v
3,0000
Угол между векторами
27,2660 °

Калькулятор скалярного произведения берёт два вектора и возвращает их скалярное произведение, длину каждого из них и угол между ними. Введите компоненты каждого вектора через пробел или запятую — 1 2 2 для трёхмерного вектора, 0 3 для двумерного, — и остальное страница сделает сама. Вектор — это список чисел, за которым стоит нечто, имеющее и величину, и направление: ветер в 30 километров в час с северо-востока, сила, толкающая вниз и вбок, направление, в которое смотрит камера. Скалярное произведение двух таких векторов считается так: перемножаются первые компоненты, вторые, третьи, и все произведения складываются. Это единственное число, как выясняется, говорит о том, насколько два вектора направлены одинаково, — поэтому оно и встречается повсюду, от расчёта освещения в играх до определения работы в физике. Величина его наибольшая, когда векторы смотрят в одну сторону, равна нулю, когда они перпендикулярны, и отрицательна, когда они направлены в противоположные стороны. Страница тут же превращает его в угол, пользуясь тем, что скалярное произведение равно произведению двух длин, умноженному на косинус угла между векторами. Если это переставить, косинус окажется скалярным произведением, делённым на произведение длин, а угол — арккосинусом этого отношения. Три ответа стоит узнавать с одного взгляда. Нулевое скалярное произведение означает, что векторы перпендикулярны, потому что косинус девяноста градусов равен нулю, и это самое полезное, что делает страница: проверка того, что два направления образуют прямой угол, без всяких измерений. Равные векторы дают угол 0, поскольку смотрят в одну сторону. Противоположные дают 180 градусов. Один вход отвергается, а не вычисляется: нулевой вектор, у которого направления нет вообще. Его скалярное произведение с чем угодно равно нулю, а деление на его длину, чтобы получить угол, означало бы деление на ноль, поэтому страница отказывается от всего вычисления, а не возвращает частичный ответ с дыркой. Всё остальное принимается: векторы любой длины, лишь бы у двух она совпадала, и отрицательные компоненты, которыми и записывается вектор, направленный влево или вниз.

Пары векторов и то, что из них получается

Вектор uВектор vСкалярное произведение|u||v|Угол (°)
1 2 22 2 183327.266
3 4 04 3 0245516.2602
1 00 101190
1 1 11 1 131.73211.73210
1 2 34 5 6323.74178.77512.9332
-1 0 01 0 0-111180
2 -34 5-73.60566.4031107.6501
1 23 4112.2361510.3048

Восемь пар, и первая строка — та, с которой страница загружается. Компоненты в первых двух столбцах разделены пробелами, и эти пробелы — разделители компонентов, а не часть чисел. Три ответа, которые стоит узнавать с одного взгляда, сидят в третьей, четвёртой и шестой строках. Третья строка — самый простой прямой угол из возможных, по вектору вдоль каждой оси: её скалярное произведение равно нулю, а угол возвращается ровно 90, и это та проверка перпендикулярности, ради которой страницей пользуются чаще всего; ни одна часть тригонометрии, на которой держится столбец угла, для неё не нужна. Четвёртая строка — два экземпляра одного и того же вектора: угол 0, модули 1,7321, а скалярное произведение равно 3, потому что компонентов три и каждый равен единице. Шестая строка — вектор и его собственное отрицание: скалярное произведение −1, угол 180, и это одна из двух отрицательных строк таблицы. Седьмая строка — та, что несёт отрицательные и разноимённые компоненты, которыми записывается вектор, направленный влево или вниз: её скалярное произведение −7 при угле 107,6501, и это как раз случай, где знак и угол обязаны согласовываться — больше 90 градусов и отрицательно, как и должно быть. Пятая строка — неаккуратная пара, у которой обе длины оказались квадратными корнями, и по ней видно, что угол считается по неокруглённым модулям: перемножьте напечатанные 3,7417 и 8,775 и разделите 32 на это произведение — угол выйдет 12,9370 вместо 12,9332. Восьмая строка — двумерная пара, поскольку страница принимает любое число компонентов. Вторая строка — та же плоскость, что и восьмая, но поданная как трёхмерная с явным нулём в третьей компоненте, и её длины равны ровно 5 у обеих: тот же треугольник 3-4-5, поставленный так, чтобы косинус вышел аккуратной дробью. И замечание о чтении: десятичные знаки в ячейках печатает программа — она ставит точку и не разделяет разряды, поэтому в таблице стоят 27.266, 3.7417 и 12.9332; в тексте этой же страницы те же числа записаны с запятой — 27,266, 3,7417 и 12,9332. Это одно и то же число в двух записях, а не два разных числа.

Формула

u · v = u₁v₁ + u₂v₂ + … + uₙvₙ |u| = √(u₁² + u₂² + … ) cos θ = (u · v) ÷ (|u| × |v|)

Вектор u
Первый вектор, записанный своими компонентами через пробел или запятую: 1 2 2 для трёх измерений, 0 3 для двух, или сколько нужно. Фиксированного числа полей здесь нет, потому что страница принимает любую размерность, а число компонентов у двух векторов должно совпадать
Вектор v
Второй вектор, записанный так же и с тем же числом компонентов, что и первый. Порядок не важен ни для скалярного произведения, ни для угла: поменяйте векторы местами — ответы останутся теми же
u · v
Скалярное произведение: перемножьте первые компоненты, вторые и так далее, а результаты сложите. Это одно обычное число, к которому не приписано никакой единицы, ведь компоненты вектора несут ту единицу, в которой измерена величина, а произведение двух таких компонентов несло бы её квадрат
|u| и |v|
Модуль каждого вектора, в тех же единицах, в которых измерены компоненты: корень из суммы квадратов его компонентов. Это обычная длина стрелки и ровно тот же расчёт, что и расстояние от начала координат до точки, в которую вектор указывает
θ
Угол между двумя векторами, в градусах: от 0, когда они смотрят в одну сторону, через 90, когда они перпендикулярны, до 180, когда они направлены противоположно. За эти пределы он не выходит, потому что арккосинус не может вернуть ничего вне них
cos θ
Скалярное произведение, делённое на произведение двух модулей, — это мост между двумя половинами этой страницы. Он идёт от 1 для одинаково направленных векторов через 0 при прямом угле до −1 для противоположно направленных, и именно из него на самом деле и вычисляется угол
Градусы
Единица углового вывода — и единственный вывод на этой странице, у которого вообще есть единица. Скалярное произведение и два модуля — обычные числа
Четыре знака после запятой
Ширина, с которой записывается каждый вывод. Скалярное произведение часто выходит целым, когда целые компоненты; два модуля несут квадратный корень, а угол — арккосинус, поэтому эти три почти никогда не выходят точными

Скалярное произведение — стандартный способ спросить, насколько два направления согласны между собой, и вопросы, на которые оно отвечает, попадаются чаще, чем можно подумать по самой арифметике. Перпендикулярные векторы — главный из них: если скалярное произведение равно нулю, они встречаются под прямым углом, и именно так программа решает, обращена ли поверхность к источнику света, пересекает ли путь стену и перпендикулярны ли друг другу две линии на чертеже, — а для этого нужны только умножения, никакой тригонометрии. Следующее, на что смотрят, — знак: положительный означает, что векторы в целом направлены одинаково, отрицательный — что в целом противоположно, и в этом весь критерий, стоящий за отсечением нелицевых граней и за тем, совершает ли сила работу над телом или против него. Физика использует то же самое число под именем работы: работа силы равна скалярному произведению силы на перемещение, поэтому толкать под углом даёт меньше, чем толкать прямо, а толкать под прямым углом не даёт ничего. Когда нужен сам угол, а не только соотношение, страница его даёт, и распознавать стоит три значения: 0, 90 и 180 градусов — параллельно, перпендикулярно и противоположно. Всё прочее — это пара векторов, ушедшая от этих трёх, и полезная проверка состоит в том, что знак скалярного произведения должен согласовываться с углом: отрицательное скалярное произведение и угол меньше 90 градусов одновременно верными быть не могут.

Разобранные примеры

  1. 1 2 2 и 2 2 1

    1. Скалярное произведение: 1 × 2 + 2 × 2 + 2 × 1 = 2 + 4 + 2 = 8
    2. Длина u: √(1 + 4 + 4) = √9 = 3
    3. Длина v: √(4 + 4 + 1) = √9 = 3
    4. Косинус: 8 ÷ (3 × 3) = 0,888889, и арккосинус этого равен 27,2659…, что округляется до 27,266

    Ввод, с которым страница загружается, и ввод аккуратный: у обоих векторов длина ровно 3, поэтому косинус — это просто скалярное произведение, делённое на девять. Два разных вектора, одно скалярное произведение, два модуля, один угол — вся страница в одной строке. Угол меньше 90 градусов, а скалярное произведение положительно, и это та проверка знака, которую стоит прогонять на каждом ответе.

  2. 3 4 0 и 4 3 0

    1. Скалярное произведение: 3 × 4 + 4 × 3 + 0 × 0 = 12 + 12 = 24
    2. Длина каждого: √(9 + 16) = 5, поскольку третья компонента нулевая
    3. Косинус: 24 ÷ (5 × 5) = 0,96, и арккосинус этого равен 16,2602…

    Два вектора, лежащих в плоскости, записанные с явным нулём в третьей компоненте, чтобы показать, что двумерный вектор — это просто трёхмерный с нулём внутри. Обе длины выходят ровно 5, и это треугольник 3-4-5 за своей обычной работой. Угол мал, а скалярное произведение велико и положительно — так и выглядят два вектора, направленные почти одинаково.

  3. 1 0 и 0 1

    1. Скалярное произведение: 1 × 0 + 0 × 1 = 0
    2. Длина каждого: 1
    3. Косинус: 0 ÷ 1 = 0, и арккосинус нуля равен ровно 90 градусам

    Ответ, ради которого страницей пользуются чаще всего. Нулевое скалярное произведение означает, что векторы перпендикулярны, и эти два — самый простой возможный пример: один вдоль оси x, другой вдоль оси y. Заметьте, что угол возвращается ровно 90, а не округлённой величиной, потому что косинус равен ровно нулю и ни квадратного корня, ни деления для этого не понадобилось. Это и есть проверка прямого угла, и она не использует ничего из той тригонометрии, на которой держится угловой вывод.

  4. 1 2 3 и 4 5 6

    1. Скалярное произведение: 1 × 4 + 2 × 5 + 3 × 6 = 4 + 10 + 18 = 32
    2. Длина u: √(1 + 4 + 9) = √14 = 3,741657…, что округляется до 3,7417
    3. Длина v: √(16 + 25 + 36) = √77 = 8,774964…, что округляется до 8,775
    4. Косинус: 32 ÷ (3,741657 × 8,774964) = 0,974631…, и арккосинус этого равен 12,9331…, что округляется до 12,9332

    Два вектора с неаккуратными длинами, и та строка, по которой видно, чего стоит округление. Оба модуля — квадратные корни, которые никогда не заканчиваются, поэтому косинус считается по их неокруглённым значениям, а не по тем 3,7417 и 8,775, что на экране: разделите 32 на произведение двух напечатанных чисел — выйдет 0,9746, а угол получится 12,9370, то есть не 12,9332. Разница в третьем знаке и есть вся цена округления. Угол мал, потому что векторы почти параллельны: 4 5 6 — это примерно 1 2 3, увеличенный.

  5. -1 0 0 и 1 0 0

    1. Скалярное произведение: (−1) × 1 + 0 × 0 + 0 × 0 = −1
    2. Длина каждого: 1
    3. Косинус: −1 ÷ 1 = −1, и арккосинус −1 равен ровно 180 градусам

    Другой конец диапазона. У двух векторов, направленных точно в противоположные стороны, скалярное произведение равно минус произведению их длин, и здесь это −1, что даёт косинус −1 и угол 180 градусов. Это та строка, которая показывает, почему скалярное произведение может быть отрицательным и что отрицательное значение означает: не ошибку и не меньший угол, а две стрелки, направленные прочь друг от друга.

Ограничения

У двух векторов должно быть одинаковое число компонентов, и пару, у которой оно не совпадает, страница отвергает, а не дополняет короткий нулями. Нулевой вектор отвергается целиком: у вектора, все компоненты которого нули, нет направления, поэтому угол между ним и чем угодно не определён, и страница отказывается от всего вычисления, а не показывает угол 0, который читался бы как «смотрит туда же». Компоненты читаются как обычные числа, и вот здесь надо быть внимательным, потому что чтение не зависит от языка и одинаково во всех версиях страницы. Разделители — пробел, точка с запятой и запятая, после которой идёт пробел или конец строки. Запятая между цифрами без пробела после неё считается десятичным знаком: 1,5 — это одна целая пять десятых, и для русского читателя это естественно. А вот 1,500 отвергается, а не истолковывается: читатель прочтёт такую запись как 1,5, тогда как означать она могла и тысячу пятьсот, и различить это по самой записи невозможно. Поэтому тысяча пятьсот пишется как 1500 — без разделителя вообще. И пробел здесь разделителем быть не может: компоненты разделяются пробелами, поэтому ввод 1500 страница прочитает как два числа, 1 и 500, а не как одно. В каждом векторе принимается до 200 компонентов, что куда больше любого рукописного случая и меньше размеров, с которыми работал бы конвейер обработки данных. Четыре знака после запятой — это ширина отображения, а не заявление о точности, и угол вычисляется по неокруглённым модулям, поэтому перемножение напечатанных чисел может не воспроизвести напечатанный угол в точности. Страница — только про скалярное произведение и угол: она не даёт векторного произведения, проекции одного вектора на другой и единичных векторов, и она никак не учитывает, в чём измерены компоненты, поэтому скалярное произведение, посчитанное по компонентам в метрах, возвращается обычным числом, а не в квадратных метрах.

Частые вопросы

Как вводить компоненты?
Разделяйте их пробелами или запятой с пробелом: 1 2 2 и 1, 2, 2 читаются одинаково. Запятая между двумя цифрами без пробела после неё считается десятичным знаком: 1,5 — это одна целая пять десятых. А вот 1,500 отвергается, а не истолковывается: такую запись прочтёшь как 1,5, а означать она могла и тысячу пятьсот, и по самой записи этого не различить; пишите 1500. И не пишите 1500: пробел разделяет компоненты, поэтому такой ввод превратится в два числа, 1 и 500. Число компонентов у двух векторов должно совпадать, а ограничения на их количество нет, лишь бы оно совпадало: два измерения и три измерения — это одна и та же страница.
Что вообще говорит скалярное произведение?
Насколько два вектора направлены одинаково. Оно наибольшее, когда они параллельны и смотрят в одну сторону, равно нулю, когда они перпендикулярны, и отрицательно, когда они направлены противоположно. Его величина зависит ещё и от того, насколько векторы длинны, поэтому большое скалярное произведение у длинных векторов не означает маленького угла: разделите на две длины, что страница делает за вас, и получите косинус угла.
Как понять, перпендикулярны ли два вектора?
По их скалярному произведению: оно равно нулю. В этом весь критерий, и он требует только умножений — ни квадратных корней, ни тригонометрии, поэтому именно в таком виде его и применяют в коде. Страница всё равно даёт угол, и он будет равен 90, но если нужна только перпендикулярность, достаточно одного скалярного произведения.
Почему скалярное произведение может быть отрицательным?
Потому что оно отслеживает и направление, а не только величину. Два вектора, направленные в целом навстречу друг другу, дают положительное число; под прямым углом вклады взаимно уничтожаются, и произведение равно нулю; направленные в целом прочь друг от друга дают отрицательное. Отрицательное скалярное произведение всегда идёт вместе с углом больше 90 градусов, и эти двое не должны расходиться: если разошлись, что-то не так с вводом.
Почему страница отвергает вектор из одних нулей?
Потому что у нулевого вектора нет направления, поэтому угол между ним и чем угодно не определён. Его скалярное произведение с чем угодно равно нулю, а его длина равна нулю, так что вычисление косинуса означало бы деление на ноль. Страница, вернувшая 0 градусов, говорила бы, что он смотрит туда же, куда и ваш вектор, — а это утверждение о направлении, которого не существует.
В каких единицах получается ответ?
Угол — в градусах, а у остальных трёх выводов единицы нет вообще. Скалярное произведение — это сумма произведений компонентов, поэтому если компоненты измерялись в метрах, оно выходит в квадратных метрах, а если это были просто числа, то и оно просто число; страница единицу не приписывает, а не угадывает, потому что одна и та же арифметика обслуживает и направление, и силу, и список результатов теста.

Источники

Похожие калькуляторы