Калькулятор скалярного произведения
Результат
Скалярное произведение
- Модуль u
- 3,0000
- Модуль v
- 3,0000
- Угол между векторами
- 27,2660 °
Калькулятор скалярного произведения берёт два вектора и возвращает их скалярное произведение, длину каждого из них и угол между ними. Введите компоненты каждого вектора через пробел или запятую — 1 2 2 для трёхмерного вектора, 0 3 для двумерного, — и остальное страница сделает сама. Вектор — это список чисел, за которым стоит нечто, имеющее и величину, и направление: ветер в 30 километров в час с северо-востока, сила, толкающая вниз и вбок, направление, в которое смотрит камера. Скалярное произведение двух таких векторов считается так: перемножаются первые компоненты, вторые, третьи, и все произведения складываются. Это единственное число, как выясняется, говорит о том, насколько два вектора направлены одинаково, — поэтому оно и встречается повсюду, от расчёта освещения в играх до определения работы в физике. Величина его наибольшая, когда векторы смотрят в одну сторону, равна нулю, когда они перпендикулярны, и отрицательна, когда они направлены в противоположные стороны. Страница тут же превращает его в угол, пользуясь тем, что скалярное произведение равно произведению двух длин, умноженному на косинус угла между векторами. Если это переставить, косинус окажется скалярным произведением, делённым на произведение длин, а угол — арккосинусом этого отношения. Три ответа стоит узнавать с одного взгляда. Нулевое скалярное произведение означает, что векторы перпендикулярны, потому что косинус девяноста градусов равен нулю, и это самое полезное, что делает страница: проверка того, что два направления образуют прямой угол, без всяких измерений. Равные векторы дают угол 0, поскольку смотрят в одну сторону. Противоположные дают 180 градусов. Один вход отвергается, а не вычисляется: нулевой вектор, у которого направления нет вообще. Его скалярное произведение с чем угодно равно нулю, а деление на его длину, чтобы получить угол, означало бы деление на ноль, поэтому страница отказывается от всего вычисления, а не возвращает частичный ответ с дыркой. Всё остальное принимается: векторы любой длины, лишь бы у двух она совпадала, и отрицательные компоненты, которыми и записывается вектор, направленный влево или вниз.
Пары векторов и то, что из них получается
| Вектор u | Вектор v | Скалярное произведение | |u| | |v| | Угол (°) |
|---|---|---|---|---|---|
| 1 2 2 | 2 2 1 | 8 | 3 | 3 | 27.266 |
| 3 4 0 | 4 3 0 | 24 | 5 | 5 | 16.2602 |
| 1 0 | 0 1 | 0 | 1 | 1 | 90 |
| 1 1 1 | 1 1 1 | 3 | 1.7321 | 1.7321 | 0 |
| 1 2 3 | 4 5 6 | 32 | 3.7417 | 8.775 | 12.9332 |
| -1 0 0 | 1 0 0 | -1 | 1 | 1 | 180 |
| 2 -3 | 4 5 | -7 | 3.6056 | 6.4031 | 107.6501 |
| 1 2 | 3 4 | 11 | 2.2361 | 5 | 10.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 2 2 и 2 2 1
- Скалярное произведение: 1 × 2 + 2 × 2 + 2 × 1 = 2 + 4 + 2 = 8
- Длина u: √(1 + 4 + 4) = √9 = 3
- Длина v: √(4 + 4 + 1) = √9 = 3
- Косинус: 8 ÷ (3 × 3) = 0,888889, и арккосинус этого равен 27,2659…, что округляется до 27,266
Ввод, с которым страница загружается, и ввод аккуратный: у обоих векторов длина ровно 3, поэтому косинус — это просто скалярное произведение, делённое на девять. Два разных вектора, одно скалярное произведение, два модуля, один угол — вся страница в одной строке. Угол меньше 90 градусов, а скалярное произведение положительно, и это та проверка знака, которую стоит прогонять на каждом ответе.
3 4 0 и 4 3 0
- Скалярное произведение: 3 × 4 + 4 × 3 + 0 × 0 = 12 + 12 = 24
- Длина каждого: √(9 + 16) = 5, поскольку третья компонента нулевая
- Косинус: 24 ÷ (5 × 5) = 0,96, и арккосинус этого равен 16,2602…
Два вектора, лежащих в плоскости, записанные с явным нулём в третьей компоненте, чтобы показать, что двумерный вектор — это просто трёхмерный с нулём внутри. Обе длины выходят ровно 5, и это треугольник 3-4-5 за своей обычной работой. Угол мал, а скалярное произведение велико и положительно — так и выглядят два вектора, направленные почти одинаково.
1 0 и 0 1
- Скалярное произведение: 1 × 0 + 0 × 1 = 0
- Длина каждого: 1
- Косинус: 0 ÷ 1 = 0, и арккосинус нуля равен ровно 90 градусам
Ответ, ради которого страницей пользуются чаще всего. Нулевое скалярное произведение означает, что векторы перпендикулярны, и эти два — самый простой возможный пример: один вдоль оси x, другой вдоль оси y. Заметьте, что угол возвращается ровно 90, а не округлённой величиной, потому что косинус равен ровно нулю и ни квадратного корня, ни деления для этого не понадобилось. Это и есть проверка прямого угла, и она не использует ничего из той тригонометрии, на которой держится угловой вывод.
1 2 3 и 4 5 6
- Скалярное произведение: 1 × 4 + 2 × 5 + 3 × 6 = 4 + 10 + 18 = 32
- Длина u: √(1 + 4 + 9) = √14 = 3,741657…, что округляется до 3,7417
- Длина v: √(16 + 25 + 36) = √77 = 8,774964…, что округляется до 8,775
- Косинус: 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, увеличенный.
-1 0 0 и 1 0 0
- Скалярное произведение: (−1) × 1 + 0 × 0 + 0 × 0 = −1
- Длина каждого: 1
- Косинус: −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 градусов, говорила бы, что он смотрит туда же, куда и ваш вектор, — а это утверждение о направлении, которого не существует.
- В каких единицах получается ответ?
- Угол — в градусах, а у остальных трёх выводов единицы нет вообще. Скалярное произведение — это сумма произведений компонентов, поэтому если компоненты измерялись в метрах, оно выходит в квадратных метрах, а если это были просто числа, то и оно просто число; страница единицу не приписывает, а не угадывает, потому что одна и та же арифметика обслуживает и направление, и силу, и список результатов теста.
Источники
- Dot product — the sum of the products of corresponding components, with the geometric interpretation as the product of the two lengths and the cosine of the angle between them that this page inverts — Wolfram MathWorld (United States)
- Vector — the object with a magnitude and a direction whose components this page reads, and whose length is the square root of the sum of the squares of those components — Wolfram MathWorld (United States)
- Perpendicular — the right-angle relation that a dot product of zero detects, which is the commonest use of this calculation and needs none of its trigonometry — Wolfram MathWorld (United States)