Существует две операции умножения над векторами. Результатом первой является число(скаляр) отсюда и название скалярное произведение. Результатом второго является вектор и оно носит название векторного произведение.

Часто в программирование первое обозначается, как DotProduct, а второе CrossProduct.

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

Определение скалярного произведения

Скалярное произведение векторов \mathbf{a} и \mathbf{b} в пространстве R^3 - есть произведение длин векторов на угол между ними.
1. \langle\mathbf{a} , \mathbf{b} \rangle= 
|\mathbf{a}| \cdot |\mathbf{b}| \cdot \cos \angle{(\mathbf{a},\mathbf{b})}

Формула скалярного произведения для  R^N в водиться по аналогии с  R^3 (см. [4]) как
2. \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
Тогда число в формуле 3 можно назвать углом между векторами.
3.  \frac{\langle \mathbf a, \mathbf b \rangle}{{\langle \mathbf a, \mathbf a \rangle}*{\langle \mathbf b, \mathbf b \rangle}}=cos(\phi)
Это можно сделать в виду того, что левая часть не выходит за допустимое значения cos. Т.е больше -1 и меньше 1.

Так как формула 2 не требует вычисления cos и корня, то она вычисляется быстрее и обычно используется при расчётах.

Приняв скалярное произведение вектора себя на себя, как квадрат длины вектора формула 4, то можно переписать 3 в виде 5.
4. {\langle \mathbf a, \mathbf b \rangle}={|\mathbf{a}|}^2
5. \frac{\langle \mathbf a, \mathbf b \rangle}{{|\mathbf{a}|}*{|\mathbf{b}|}}=cos(\phi)

Свойства скалярного произведения

Скалярное произведения вектора на себя равно длине вектора в квадрате.
3.  \langle \mathbf a, \mathbf a \rangle = \|\mathbf a\|^2
Умножение на число.
4. \langle \lambda\mathbf{a}, \mathbf{b} \rangle=\lambda\langle \mathbf{a}, \mathbf{b} \rangle=\langle \mathbf{a},\lambda\mathbf{b} \rangle .
Дистрибутивость
5. \langle \mathbf a,\mathbf b+\mathbf c \rangle = \langle \mathbf a, \mathbf b \rangle+\langle\mathbf a,\mathbf c \rangle
Угол между векторами.
6. \cos\theta = \frac{\langle\mathbf{a},\mathbf{b}\rangle}{\|\mathbf{a}\|\,\|\mathbf{b}\|} .

Проекции вектора a на вектор b , есть скалярное произведение делённое на длину вектора b .
7.  a_b=\frac{\langle\mathbf{a},\mathbf{b}\rangle}{\|\mathbf{b}\|}

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

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;

Входные параметры:

  • Вектора реальных чисел a и b.

Выходные параметры:

  • Реальное число равное скалярному произведению векторов.

Примечание:

  • Для реальных чисел данный код не является точным, так как не учитывает округления(См. ошибки в численных методах). Если вместо реальных чисел использовать целые переменной длиной или рациональные числа переменной длиной, то функция будет точной.

Векторное произведение

Определение векторного произведения

Векторным произведением вектора a на вектор b в пространстве R^3 называется вектор c , удовлетворяющий следующим требованиям:
длина вектора c равна произведению длин векторов a и b на синус угла \varphi между ними: \left| \mathbf c \right| = \left| \mathbf a \right| \left| \mathbf b \right| \sin \varphi ;
вектор c ортогонален каждому из векторов a и b ;
вектор c направлен так, что тройка векторов abc является правой;

Свойства скалярного произведения

Код векторного произведения

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;

Входные параметры:

  • Вектора реальных чисел a и b с числом элементов 3.

Выходные параметры:

  • Вектор реальных чисел с числом элементов 3. Компоненты которого равны векторному произведению векторов a и b.

Список литературы:
[1] http://ru.wikipedia.org/wiki/Векторное_произведение
[2] Б. Н. ДЕЛОНЕ и Д. А. РАЙКОВ; Аналитическая геометрия; том. 1, 1948
[3] А. В. Погорелов, Геометрия, учебник для 7-11 класс средней школы.
[4] Мантуров О.В., Матвеев Н.М. Курс высшей математики Линейная алгебра. Аналитическая геометрия. Дифференциальное исчисление функций одной переменной 1986

 
articles/умножение_вектора_на_вектор.txt · Последние изменения: 2013/06/23 13:19 От Pavia
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki