АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

П 3.4 Метод квадратного корня для решения систем линейных алгебраических уравнений

Читайте также:
  1. A) к любой экономической системе
  2. A) прогрессивная система налогообложения.
  3. C) Систематическими
  4. CASE-технология создания информационных систем
  5. ERP и CRM система OpenERP
  6. HMI/SCADA – создание графического интерфейса в SCADА-системе Trace Mode 6 (часть 1).
  7. I Понятие об информационных системах
  8. I СИСТЕМА, ИСТОЧНИКИ, ИСТОРИЧЕСКАЯ ТРАДИЦИЯ РИМСКОГО ПРАВА
  9. I этап Подготовка к развитию грудобрюшного типа дыхания по традиционной методике
  10. I. ГИМНАСТИКА, ЕЕ ЗАДАЧИ И МЕТОДИЧЕСКИЕ ОСОБЕННОСТИ
  11. I. Методические основы
  12. I. Методические основы оценки эффективности инвестиционных проектов

 

Рассмотрим алгоритм метода квадратного корня.

Метод предназначен для решения СЛАУ с симметрическими матрицами.

Пусть надо решить систему

 

, (1)

 

где матрица A – вещественная, симметрическая; X – искомый вектор решения; f – вектор правой части системы.

Матрицу A можно представить в виде , где S – верхняя треугольная матрица, ST – транспонированная к ней матрица (нижняя треугольная), D – диагональная матрица с элементами, равными +1 или –1.

Значения коэффициентов матрицы S и D находятся по формулам (2), описанным в п 2.2.

Исходную систему (1) заменяем двумя эквивалентными ей системами с треугольными матрицами: .

Решая их, получаем [19; 8]:

 

(2)

 

Если матрица А является симметричной и положительно определенной, то ее можно представить в виде произведения , S – верхняя треугольная матрица, ST – транспонированная к ней матрица (нижняя треугольная).

Значения коэффициентов матрицы S находятся по формулам (3), описанным в п 2.2.

В этом случае решение системы линейных алгебраических уравнений (1) сводится к последовательному решению двух систем с треугольными матрицами [19; 8]:

 

(3)

 

SX = Y. (4)

Т.к. матрица системы (3) является нижней треугольной, то можно сразу выписать ее решение:

 

(5)

i = 2, 3, …, n. (6)

 

Определив таким образом вектор Y, можем найти из системы (4) искомое решение. Это решение находим обратным ходом метода Гаусса, т.к. матрица S верхняя треугольная.Имеем:

, (7)

 

i = n-1, n-2, …, 1. (8)

 

Пример 1. Решить систему линейных уравнений методом квадратного корня.

Решение:

Матрица системы является симметрической и положительно определенной. Вычислим коэффициенты матрицы S:

Получим матрицу .

Вычислим вектор Y:

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

Пример 2. Для системы уравнений с симметрической матрицей описать алгоритм метода квадратного корня, используя STS-разложение.

При описании алгоритма используются объекты и методы классов «SquareMatrix», «Vector» и «FactorizationAlgorithms».

Реализация примера на языке программирования С++ может иметь следующий вид:

 

void DirectMethodsFactorization::squareMethod(SquareMatrix A, Vector f){

 

/*Создание матриц S, вектора X, вектора Y */

int n = A.getRowCount();

SquareMatrix S = SquareMatrix(n);

Vector X = Vector(n);

Vector Y = Vector(n);

 

/* STS – разложение. В результате факторизации имеем матрицу S – верхнюю треугольную матрицу */

FactorizationAlgorithms FA;

FA. STS_decomposition (A, S);

 

/* Решение системы STY = f. */

/* Решение системы SX = Y. Матрица S – верхняя треугольная матрица, следовательно искомый вектор решения находим обратным ходом метода Гаусса.*/

X.setElement(n-1,(Y.getElement(n-1)/S.getElement(n-1,n-1)));

for (int i = n-2; i >= 0; i--){

double sum = 0;

for (int j = n-1; j > i; j--){

sum += X.getElement(j) * S.getElement(i, j);

}

X.setElement(i, (Y.getElement(i)-sum)/S.getElement(i, i));

}

// вывод вектора решений

}


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.011 сек.)