Решение СЛАУ прямыми методами

Составление программы LU–разложения матриц с помощью компактной схемы метода Гаусса. LU-разложение, решение систем линейных уравнений. Матрица коэффициентов системы. Обращение матриц, вычисление определителя матрицы. Нахождение обратной матрицы.

Рубрика Экономико-математическое моделирование
Вид лабораторная работа
Язык русский
Дата добавления 01.06.2014
Размер файла 101,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования науки и культуры Украины

Одесский национальный политехнический университет

Отчет по лабораторной работе

Дисциплина «Численные методы»

Тема «Решение СЛАУ прямыми методами»

Проверила:

Гришина В.А.

Выполнила ст. гр. ВС-121

Мостовая С.

Одесса 2014

1. Задание лабораторной работы

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

Вариант № 6

0,63 0,57 -0,83

1,24 0,87 -0,54

1,32 -0,44 0,63

2. Теоретическое описание используемых методов

· LU-разложение

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

LU-разложение используется для решения систем линейных уравнений, обращения матриц и вычисления определителя.

Этот метод является одной из разновидностей метода Гаусса.

· Решение систем линейных уравнений

LU-разложение может быть использовано для решения системы линейных уравнений где -- матрица коэффициентов системы, -- вектор неизвестных величин системы, -- вектор правых частей системы.

Если известно LU-разложение матрицы , , исходная система может быть записана как

Эта система может быть решена в два шага. На первом шаге решается система

Поскольку -- нижняя треугольная матрица, эта система решается непосредственно прямой подстановкой. На втором шаге решается система

Поскольку -- верхняя треугольная матрица, эта система решается непосредственно обратной подстановкой.

· Обращение матриц

Обращение матрицы эквивалентно решению линейной системы ,

где -- неизвестная матрица, -- единичная матрица. Решение этой системы является обратной матрицей .

Систему можно решить описанным выше методом LU-разложения.

· Вычисление определителя матрицы

Имея LU-разложение матрицы , , можно непосредственно вычислить её определитель,

,

где -- размер матрицы , и -- диагональные элементы матриц и .

· Вывод формулы

В силу назначения LU-разложения нас будет интересовать только случай, когда матрица A невырожденная.

Поскольку и в первой строке матрицы L, и в первом столбце матрицы U, все элементы, кроме, возможно, первого, равны нулю, имеем .

Если , то или . В первом случае целиком состоит из нулей первая строка матрицы L, во втором -- первый столбец матрицы U. Следовательно, L или U вырождена, а значит, вырождена A, что противоречит предположению. Таким образом, если , то невырожденная матрица A не имеет LU-разложения. Пусть , тогда и . Поскольку L и U определены с точностью до умножения U на константу и деления L на ту же константу, мы можем потребовать, чтобы . При этом .

Разделим матрицу A на клетки:

,

где имеют размерность соответственно (N-1)Ч1, 1Ч(N-1), (N-1)Ч(N-1). Аналогично разделим на клетки матрицы L и U:

Уравнениепринимает вид

Решая систему уравнений относительно , получаем:

Окончательно имеем:

Итак, мы свели LU-разложение матрицы NЧN к LU-разложению матрицы (N-1)Ч(N-1).

Выражение называется дополнением Шура элемента в матрице A.

Заметим, что -- не скаляр, а матрица (N-1)Ч(N-1).

· Алгоритм

Один из алгоритмов для вычисления LU-разложения приведён ниже.Будем использовать следующие обозначения для элементов матриц , , ; причём диагональные элементы матрицы : , . Тогда, если известно LU-разложение матрицы, её определитель можно вычислить по формуле

= произведению элементов на диагонали матрицы U.

Найти матрицы и можно следующим образом (выполнять шаги следует строго по порядку, так как следующие элементы находятся с использованием предыдущих):

1.

2.

Для

1.

2.

3.

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

4. Текст программы с соответствующими комментариями

using System;

using System.IO;

namespace LU

{

class Program

{

static void Main(string[] args)

{

/*Чтение происходит из файла Матрица.txt, который находится в проекте.

на вход подается в первой строке порядок матрицы, а далее сама матрица через пробелы

в таком виде:

3 - порядок матрицы

0,63 0,57 -0,83

1,24 0,87 -0,54

1,32 -0,44 0,63*/

StreamReader sr = new StreamReader("Матрица.txt");

string poryadok = sr.ReadLine();

int n = Int32.Parse(poryadok);

string[] separ = { " ", "\r", "\n", "" };

string matrix = sr.ReadToEnd();

string[] M = matrix.Split(separ, StringSplitOptions.RemoveEmptyEntries);

double[,] K = new double[n, n];

int k = 0;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

K[i, j] = Convert.ToDouble(M[k]);

k += 1;

}

}

Console.WriteLine("Дана матрица:");

Print_Matrix(K);//Выводим матрицу

Console.WriteLine();

LU_razl(K, n);//Выполняем LU-разложение.

Console.WriteLine();

Console.ReadKey();

}

static void Print_Matrix(double[,] A)

{

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 3; j++)

{

Console.Write(Math.Round(A[i, j], 2) + " || ");//вывод с 2-мя цифрами после запятой.

}

Console.WriteLine();

}

}

private static void LU_razl(double[,] A, int n)

{

double[,] U1 = new double[n, n];

double[,] L1 = new double[n, n];

double sum = 0;

double sum1 = 0;

for (int i = 0; i < n; i++)

{

U1[0, i] = A[0, i];

}

for (int i = 1; i < n; i++)

{

L1[i, 0] = A[i, 0] / U1[0, 0];

L1[i, i] = 1;

L1[0, 0] = 1;

}

for (int i = 1; i < n; i++)

{

for (int j = i; j < n; j++)

{

for (int k = 0; k <= i - 1; k++)

{

sum += L1[i, k] * U1[k, j];

U1[i, j] = A[i, j] - sum;

}

sum = 0;

}

for (int j = i + 1; j < n; j++)

{

for (int k = 0; k <= i - 1; k++)

{

sum1 += L1[j, k] * U1[k, i];

L1[j, i] = (A[j, i] - sum1) / U1[i, i];

}

sum1 = 0;

}

}

Console.WriteLine("Матрицa U после разложения:");

Print_Matrix(U1);

Console.WriteLine("Матрицa L после разложения:");

Print_Matrix(L1);

Console.WriteLine();

double d = Opredel(U1);//Считаем определитель

double[,] A1 = obratnaya_matrix(n, U1, L1);

Console.WriteLine("Проверим LU разложение:");

proisv(L1, U1);

Console.WriteLine();

Console.WriteLine("Проверим обратную матрицу ");

proisv(A, A1);

}

static void proisv(double[,] L, double[,] U)

{

//перемножаем матрицы.

double[,] R = new double[3, 3];

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 3; j++)

{

for (int k = 0; k < 3; k++)

{

R[i, j] += L[i, k] * U[k, j];

}

}

}

Console.WriteLine("Перемножим матрицы:");

Print_Matrix(R);//Перемножили-выводим

}

static double Opredel(double[,] U)

{

//Считаем определитель перемножением элементов главной диагонали матрицы U

double det = 1;

for (int i = 0; i < 3; i++)

{

det *= U[i, i];

}

Console.WriteLine("Определитель det(A) = {0}", det);

return det;

}

static double[,] obratnaya_matrix(int n, double[,] U, double[,] L)

{

double summ = 0;//Используем переменную для подсчета суммы по к из ф-лы.

double[,] E = new double[n, n];//Единичная матрица

for (int i = 0; i < n; i++)

{

E[i, i] = 1;

}

double[,] Y = new double[n, n];// Матрица для решения LY=E

double[,] X = new double[n, n];//Матрица для решения UX=Y

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

for (int k = 0; k <= j - 1; k++)

{

summ += L[j, k] * Y[k, i];

}

Y[j, i] = (E[j, i] - summ) / L[j, j];

summ = 0;

}

}

summ = 0;

for (int i = n - 1; i >= 0; i--)

{

for (int k = n - 1; k >= 0; k--)

{

for (int j = k + 1; j < n; j++)

{

summ += U[k, j] * X[j, i];

}

X[k, i] = (Y[k, i] - summ) / U[k, k];

summ = 0;

}

}

Console.WriteLine();

Console.WriteLine("Обратная матрица через UL :");

Print_Matrix(X);

return X;

}

}

}

5. Результаты расчетов

матрица разложение коэффициент уравнение

Дана матрица:

0,63 || 0,57 || -0,83 ||

1,24 || 0,87 || -0,54 ||

1,32 || -0,44 || 0,63 ||

Матрицa U после разложения:

0,63 || 0,57 || -0,83 ||

0 || -0,25 || 1,09 ||

0 || 0 || -4,73 ||

Матрицa L после разложения:

1 || 0 || 0 ||

1,97 || 1 || 0 ||

2,1 || 6,49 || 1 ||

Определитель det(A) = 0,750055

Обратная матрица через UL :

0,41 || 0,01 || 0,55 ||

-1,99 || 1,99 || -0,92 ||

-2,26 || 1,37 || -0,21 ||

Проверим LU разложение:

Перемножим матрицы:

0,63 || 0,57 || -0,83 ||

1,24 || 0,87 || -0,54 ||

1,32 || -0,44 || 0,63 ||

Проверим обратную матрицу:

Перемножим матрицы:

1 || 0 || 0 ||

0 || 1 || 0 ||

0 || 0 || 1 ||

Выводы

С помощью метода LU -разложения очень легко работать с матрицей дальше: решать уравнения, находить определитель или обратную матрицу, которая при нахождении в лоб имеет сложность n! . При использовании LU количество необходимых операций около n^3, что очень существенно экономит время и память. Правда, оно возможно только для невырожденных матриц.

Размещено на Allbest.ru

...

Подобные документы

  • Представление матрицы в виде произведения унитарной и верхнетреугольной матрицы. Листинг программы. Зависимость погрешности от размерности матрицы на примере метода Холецкого. Приближенные методы решения алгебраических систем. Суть метода Зейделя.

    контрольная работа [630,5 K], добавлен 19.05.2014

  • Решение задач при помощи пакета прикладных программ MatLab. Загрузка в MatLab матриц A и P. Нахождение оптимальной стратегии для заданных матриц с использованием критериев принятия решений в условиях неопределённости Вальда, Гурвица, Лапласа, Сэвиджа.

    лабораторная работа [80,2 K], добавлен 18.03.2015

  • Численные методы решения трансцедентных уравнений. Решение с помощью метода жордановых исключений системы линейных алгебраических уравнений. Симплексный метод решения задачи линейного программирования. Транспортная задача, применение метода потенциалов.

    методичка [955,1 K], добавлен 19.06.2015

  • Экономико-математическая модель получения максимальной прибыли, её решение графическим методом. Алгоритм решения задачи линейного программирования симплекс-методом. Составление двойственной задачи и её графическое решение. Решение платёжной матрицы.

    контрольная работа [367,5 K], добавлен 11.05.2014

  • Оценка корреляционной матрицы факторных признаков. Оценки собственных чисел матрицы парных коэффициентов корреляции. Анализ полученного уравнения регрессии, определение значимости уравнения и коэффициентов регрессии, их экономическая интерпретация.

    контрольная работа [994,1 K], добавлен 29.06.2013

  • Исследование методом Жордана-Гаусса системы линейных уравнений. Решение графическим и симплексным методом задач линейного программирования. Экономико-математическая модель задачи на максимум прибыли и нахождение оптимального плана выпуска продукции.

    контрольная работа [177,8 K], добавлен 02.02.2010

  • Двумерные автономные динамические системы. Классификация состояний равновесия динамических систем второго порядка. Определение автономной системы дифференциальных уравнений и матрицы линеаризации системы. Фазовый портрет системы Лотки–Вольтерра.

    лабораторная работа [1,1 M], добавлен 22.12.2012

  • Вычисление парных коэффициентов корреляции и построение их матрицы. Нахождение линейного уравнения связи, коэффициентов детерминации и эластичности. Аналитическое выравнивание ряда динамики методом наименьших квадратов. Фактические уровни вокруг тренда.

    контрольная работа [121,1 K], добавлен 01.05.2011

  • Анализ влияния шага на ошибки интегрирования и число итераций, а также сравнение решения обычных и жестких систем. Решение линейных систем алгебраических уравнений методом Эйлера итерационным методом с помощью составления программы на языке MatLAB.

    контрольная работа [474,2 K], добавлен 19.05.2014

  • Методика определения параметров линейной регрессии, составления экономической интерпретации коэффициентов регрессии. Проверка выполнения предпосылок МНК. Графическое представление физических и модельных значений. Нахождение коэффициентов детерминации.

    контрольная работа [218,0 K], добавлен 25.05.2009

  • Схема расположения подстанций. Составление математической модели системы электроснабжения. Нахождение оптимальной схемы подключения потребителей к источникам по критерию минимальных затрат. Построение транспортной матрицы. Нахождение допустимого решения.

    курсовая работа [625,4 K], добавлен 09.06.2015

  • В работе дан вектор непроизводственного потребления и матрица межотраслевого баланса. Производится расчет матрицы, нахождение вектора валового выпуска. Все расчеты производятся с использованием программы, написанной на алгоритмическом языке ПАСКАЛЬ.

    курсовая работа [17,7 K], добавлен 26.06.2008

  • Построение математической модели, максимизирующей прибыль фирмы от реализации всех сделок в виде задачи линейного программирования. Сущность применения алгоритма венгерского метода. Составление матрицы эффективности, коэффициентов затрат и ресурсов.

    контрольная работа [168,7 K], добавлен 08.10.2009

  • Построение математической модели и решение задачи математического программирования в средах MathCad и MS Excel. Решение систем с произвольными векторами свободных коэффициентов. Определение вектора невязки. Минимизация и максимизация целевой функции.

    отчет по практике [323,5 K], добавлен 01.10.2013

  • Расчет матрицы парных коэффициентов корреляции и статистической значимости коэффициентов регрессии. Оценка статистической значимости параметров регрессионной модели с помощью t-критерия. Уравнение множественной регрессии со статистически факторами.

    лабораторная работа [30,9 K], добавлен 05.12.2010

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

    контрольная работа [72,7 K], добавлен 23.04.2016

  • Проблема автоматизации расчёта сетевого графика. Вычисление критического пути с помощью ЭВМ. Табличный метод решения проблемы, метод графов. Составление алгоритма, написание программы и решение задачи. графический интерфейс пользователя, ввод данных.

    курсовая работа [39,7 K], добавлен 20.11.2008

  • Составление планового межотраслевого баланса. Определение равновесных цен в предположении по каждой отрасли. Нахождение обратной матрицы Леонтьева. ПО данным экономического развития США расчет значения ВНП и эластичности производственной функции.

    контрольная работа [205,7 K], добавлен 28.02.2010

  • Математическая модель задачи (транспортная матрица с опорным планом северо-западного угла) и её решение вычислением потенциалов, графическим, фиктивного пункта методами. Проверка решений на оптимальность, нахождение новых схем пунктов перевозок.

    контрольная работа [105,0 K], добавлен 15.12.2009

  • Определение чистых стратегий холдинга. Составление платежной матрицы игры, ее верхней и нижней цены. Принятие оптимального решения об инвестиции в банк для получения наибольшей выгоды при улучшении финансового состояния металлургическому консорциуму.

    курсовая работа [85,3 K], добавлен 19.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.