Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгебра .doc
Скачиваний:
8
Добавлен:
01.08.2019
Размер:
658.94 Кб
Скачать

Особые случаи

Процесс Грама — Шмидта может применяться также к бесконечной последовательности линейно независимых векторов.

Кроме того, процесс Грама — Шмидта может применяться к линейно зависимым векторам. В этом случае он выдаёт 0 (нулевой вектор) на шаге j, если является линейной комбинацией векторов . Если это может случиться, то для сохранения ортогональности выходных векторов и для предотвращения деления на ноль при ортонормировании алгоритм должен делать проверку на нулевые вектора и отбрасывать их. Количество векторов, выдаваемых алгоритмом, будет равно размерности подпространства, порождённого векторами (т.е. количеству линейно независимых векторов, которые можно выделить среди исходных векторов).

Реализация для пакета Mathematica

Данный скрипт, предназначенный для пакета Mathematica, проводит процесс ортогонализации Грама ― Шмидта над векторами, заданными в фигурных скобках предпоследней строки. Количество векторов и их координат могут быть произвольными. В данном случае для примера взяты векторы , , .

Projection[v1_, v2_] := (v1.v2*v2)/v2.v2

MultipleProjection[v1_, vecs_] := Plus @@ (Projection[v1, #1] &) /@ vecs

GramSchmidt[mat_] := Fold[Join[#1, {#2 - MultipleProjection[#2, #1]}] &, {}, mat]

GramSchmidt[{{-2, 1, 0}, {-2, 0, 1}, {-0.5, -1, 1}}]

Пример. Ортогонализовать систему векторов

Решение. Имеем:

Ответ. .