Основы матричной и векторной алгебры

Сложение и вычитание
Транспонирование и умножение
Детерминанты (определители)
Обратные матрицы и деление на матрицу
Вращение 3D-обьектов
Освещение 3D-обьектов

Дифференциальные уравнения и разложения по функциям

Векторные дифференциальные операторы
Уравнения Лапласа, Д'Аламбера и др.
От векторов и матриц к многомерным функциям,
от разложения по базису к разложению Фурье.

Основные математические операции над векторами и матрицами

Сложение и вычитание векторов и матриц - просто сложение и вычитание соответствующих элементов. Умножение векторов имеет два определения: Векторное умножение, где результат - вектор, и скалярное, где результат - число. Скалярное умножение тесно связано с понятием базиса в пространстве, его результат - проекция одного вектора на другой. Оно задается простым правилом:

A*B = Ai*Bi

Здесь принято стандартное правило: по повторяющемуся индексу подразумеваетсь суммирование

Векторное умножение определяет вектор, перпендикулярный двум исходным. Длина результирующего вектора есть площадь парралеллограмма, образованного двумя исходными. Векторное умножение задается такими соотношениями:
[A,B]x = AyBz - AzBy
[A,B]y = AzBx - AxBz
[A,B]z = AxBy - AyBx
,или , используя понятие детерминанта:

В трехмерном пространстве векторное умножение требует два вектора, но в N-мерном пространстве необходимо N-1 векторов, чтобы определить векторное умножение. Скалярное же умножение требует всегда 2 вектора.

Наиболее общий вид линейной зависимости между векторами:

Bi = AijBj

Это называется умножением вектора на матрицу. Такое умножение можно рассматривать как преобразование вектора к другому базису, причем компоненты матрицы - попарные скалярные умножения каждого вектора старого базиса на каждый вектор нового:

Aij = ei*ej

Матрица называется символом Кронекера, или единичной матрицей. Очевидно, что
AiEij = Aj

Чтобы преобразовать вектор сначала к одному базису, а затем к другому, необходимо умножить этот вектор на матрицы этих двух преобразований. Результат можно рассматривать как умножение исходног вектора на одну матрицу, являющуюся умножением двух матриц преобразований: Cij = AikBljEkl
или C = A*B

Матрица Bij = Aji называется транспонированной к A.

Модуль, содержащий основные операции над векторами и матрицами Matrix.pas.


Детерминанты, обратные матрицы и деление на матрицу.

В трехмерном пространстве площадь паралеллограмма между двумя векторами определяется векторным умножением:
S = [A,B]
и обьем паралеллепипеда между тремя векторами - как скалярное умножение вектора площади S на третий вектор: V = C*S, or

В N-мерном пространстве "N-мерный обьем" фигуры между N векторами вычисляется как детерминант (определитель):

Определение детерминанта рекуррентно: детерминант матрицы есть сумма по всем i произведений i-го элемента первой строки на определитель исходной матрицы без первой строки и i-го столбца, со знаком, изменяемым на каждом следующем столбце.

Некоторые свойства детерминанта:

Найдем матрицу A-1 такую, что AA-1=1 Матрица A-1 задается формулой:
Aij-1 = Sij /det(A) где Sij - алгебраическое дополнение [i,j]-го элемента - детерминант исходной матрицы без i-ой строки и j-го столбца и со знаком, меняющимся при переходе на каждый следующий столбец. Матрица A-1 называется обратной матрицей. Умножение AB-1 называется делением A на B. Умножение и деление матриц - умножение и деление преобразований. Например, если исходный вектор переведен в некий базис умножением на матрицу A, обратное преобразование задается матрицей A-1.

Пример вычисления детерминанта Determinant.pas и модуль, содержащий основные операции над векторами и матрицами Matrix.pas.


Применеие матричной алгебры в 3D-моделировании

Наиболее сложные задачи построения трехмерных изображений - вращения и моделирование освещения.

Наиболее просто вращения задаются в сферической системе координат. Вращение сцены производится в несколько шагов:

  1. Вращение базиса в сферической системе координат
  2. Преобразование всех векторов нового базиса в декартову систему координат:
    x = R*cos(v)*cos(h)
    y = R*cos(v)*sin(h)
    z = R*sin(v)
    где v и h - вертикальная и горизонтальная угловые координаты.
  3. Составление матрицы перехода в новый базис.
  4. Умножение векторов всех точек сцены на эту матрицу
  5. Перерисовка сцены
Вращение вокруг одной оси (Z) сводится к таким преобразованиям:
Xn = X*cos(a) + Y*sin(a)
Yn = Y*cos(a) - X*sin(a)

Моделирование освещения основывается на зависимости между интенсивностями падающего и отраженного света:
I(a) = I0*cos(a), или, используя векторы I = L*n,
где a - угол между поверхностью и лучом света, L - "вектор света"
и n - вектор единичной длины, перпендикулярный к поверхности.

Каждый трехмерный обьект может быть представлен в виде набора многоугольников (положим для простоты, что это - треугольники). Допустим, что заданы координаты всех точек многоугольников. Тогда освещение моделируется с помощью такого алгоритма:

  1. Получение векторов сторон каждого треугольника
  2. Получение вектора, перпендикулярного к данному элементу поверхности, с помощью векторного умножения сторон треугольника
  3. Длина этого вектора делается единичной - таким образом мы получаем вектор единичной длины, перпендикулярный к поверхности (n).
  4. Скалярным умножением n на вектор света (его направление - направление световых лучей и его длина пропорциональна интенсивности света) получаем интенсивность отраженного света.

RGB-компоненты цвета треугольника пропорциональны интенсивности отраженного света.


Многомерные дифференциальные уравнения и преобразования полей

Сначала - векторные дифференциальные операторы:

Некоторые свойства этих операторов:


Уравнения Лапласа и Д'Aламбера

Наиболее распространено уравнение Лапласа (или уравнеие Пуассона как более общий тип уравнений). Это уравнения таких полей:

Уравнение Лапласа:
Уравнение Пуассона:
Уравнение Д'Aламбера:

Уравнение Д'Aламбера - уравнение для бегущих волн, очень похожее на уравнение Лапласа, и его можно решать как уравнение Лапласа в комплексном пространстве Минковского или аппроксимируя среду набором дискретных элементов, движущихся согласно законам Ньютона.


От матриц и векторов к многомерным функциям,
от разложения по базису к разложению Фурье

Все методы матричной алгебры элементарно обобщаются на функции.
"Скалярное умножение" функций:
"Умножение вектора на матрицу":
Базисная функция ортогональна если
Как видно, разложение Фурье - только преобразование функции как "вектора" к другому базису. Сейчас разложение Фурье почти очевидно:

Можно доказать, что "базисная функция" f(w,t) = eiwt ортогональна.


©2002-2003, Veter      English  Беларуская  Русский
Сайт создан в системе uCoz