Существует две операции умножения над векторами. Результатом первой является число(скаляр) отсюда и название скалярное произведение. Результатом второго является вектор и оно носит название векторного произведение.
Часто в программирование первое обозначается, как DotProduct, а второе CrossProduct.
Скалярное произведение векторов <math>\mathbf{a} </math> и <math>\mathbf{b} </math> в пространстве <math>R^3</math> - есть произведение длин векторов на угол между ними.
1. <math>\langle\mathbf{a} , \mathbf{b} \rangle=
\mathbf{a} | \cdot | \mathbf{b} |
Формула скалярного произведения для <math> R^N </math> в водиться по аналогии с <math> R^3 </math>(см. [4]) как
2. <math>\langle \mathbf{a}, \mathbf{b} \rangle=\mathbf{a}^T \mathbf{b} = a_1 \cdot b_1+a_2 \cdot b_2+\dots+a_n \cdot b_n</math>
Тогда число в формуле 3 можно назвать углом между векторами.
3. <math> \frac{\langle \mathbf a, \mathbf b \rangle}langle_mathbf_a_mathbf_a_rangle_langle_mathbf_b_mathbf_b_rangle=cos(\phi) </math>
Это можно сделать в виду того, что левая часть не выходит за допустимое значения cos. Т.е больше -1 и меньше 1.
Так как формула 2 не требует вычисления cos и корня, то она вычисляется быстрее и обычно используется при расчётах.
Приняв скалярное произведение вектора себя на себя, как квадрат длины вектора формула 4, то можно переписать 3 в виде 5.
4. <math>{\langle \mathbf a, \mathbf b \rangle}={|\mathbf{a}|}^2</math>
5.<math> \frac{\langle \mathbf a, \mathbf b \rangle}\mathbf{a}|}*{|\mathbf{b}|=cos(\phi) </math>
Скалярное произведения вектора на себя равно длине вектора в квадрате.
3. <math> \langle \mathbf a, \mathbf a \rangle = \|\mathbf a\|^2 </math>
Умножение на число.
4. <math>\langle \lambda\mathbf{a}, \mathbf{b} \rangle=\lambda\langle \mathbf{a}, \mathbf{b} \rangle=\langle \mathbf{a},\lambda\mathbf{b} \rangle </math>.
Дистрибутивость
5. <math>\langle \mathbf a,\mathbf b+\mathbf c \rangle = \langle \mathbf a, \mathbf b \rangle+\langle\mathbf a,\mathbf c \rangle </math>
Угол между векторами.
6. <math>\cos\theta = \frac{\langle\mathbf{a},\mathbf{b}\rangle}{\|\mathbf{a}\|\,\|\mathbf{b}\|} </math>.
Проекции вектора <math>a </math> на вектор <math>b </math>, есть скалярное произведение делённое на длину вектора <math>b </math>.
7. <math> a_b=\frac{\langle\mathbf{a},\mathbf{b}\rangle}{\|\mathbf{b}\|} </math>
function DotProduct(a,b:TVectorN):Real; var i:Integer; begin Result:=0; for i:=0 to Length(a)-1 do Result:=Result+a[i]*b[i]; end;
Входные параметры:
Выходные параметры:
Примечание:
Векторным произведением вектора <math>a </math> на вектор <math>b </math> в пространстве <math>R^3</math> называется вектор <math>c </math>, удовлетворяющий следующим требованиям:
длина вектора <math>c </math> равна произведению длин векторов <math>a </math> и <math>b </math> на синус угла <math>\varphi </math> между ними: <math>\left| \mathbf c \right| = \left| \mathbf a \right| \left| \mathbf b \right| \sin \varphi </math>;
вектор <math>c </math> ортогонален каждому из векторов <math>a </math> и <math>b </math>;
вектор <math>c </math> направлен так, что тройка векторов <math>abc</math> является правой;
function CrossProduct(a,b:TVector3):TVector3; begin Result[0]:=a[1]*b[2]-a[2]*b[1]; Result[1]:=-a[0]*b[2]+a[2]*b[0]; Result[2]:=a[0]*b[1]-a[1]*b[0]; end;
Входные параметры:
Выходные параметры:
Список литературы:
[1] http://ru.wikipedia.org/wiki/Векторное_произведение
[2] Б. Н. ДЕЛОНЕ и Д. А. РАЙКОВ; Аналитическая геометрия; том. 1, 1948
[3] А. В. Погорелов, Геометрия, учебник для 7-11 класс средней школы.
[4] Мантуров О.В., Матвеев Н.М. Курс высшей математики Линейная алгебра. Аналитическая геометрия. Дифференциальное исчисление функций одной переменной 1986