Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »Математика

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

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

Размещено на

Министерство образования и науки, молодежи и спорта Украины

Харьковский национальный университет имени В.Н. Каразина

Лабораторная работа №2

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

Выполнила:

студентка группы МП-31

Кальницкая Б.М.

Проверил:

доц. Скорик В.А.

Харьков 2014

Постановка задачи

I. Найти решение систем линейных алгебраических уравнений Ах=b, найти А-1, вычислить det A.

1. Методом Гаусса с выбором ведущего элемента в строке.

2. Методом Гаусса с выбором ведущего элемента в столбце.

3. Методом Гаусса с выбором ведущего элемента в матрице. На печать вывести исходную матрицу A, вектор b, решение x, невязку, det A, А-1. Сравнить полученые результаты.

II. Найти решение систем линейных алгебраических уравнений Ах=b, вычислить det A.

1. Методом факторизации.

Напечать вывести исходную матрицу A, вектор b, решение x, невязку, вычислить det A. Сравнить полученые результаты.

Вариант №4

А = , b =

Метод Факторизации

Теорема.

Пусть

Тогда А представима единственным образом в виде где

- нижнетреугольная,

- верхнетреугольная;

.

При этом решение сводится к решению двух систем

Листинг программы

#include "stdafx.h"

#include <stdio.h>

#include <iostream>

#include <math.h>

using namespace std;

const int n = 4;

int main()

{

int i = 0, j = 0, k = 0, m = 0;

double A[n][n], B[n][n], C[n][n], f[n], x[n], y[n], r[n], Ax[n], max = -1;

cout << " Our matrix A is: " << endl;

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

{

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

{

A[0][0] = 0.11;

A[0][1] = -0.17;

A[0][2] = 0.72;

A[0][3] = -0.34;

A[1][0] = 0.81;

A[1][1] = 0.12;

A[1][2] = -0.91;

A[1][3] = 0.17;

A[2][0] = 0.17;

A[2][1] = -0.18;

A[2][2] = 1;

A[2][3] = 0.28;

A[3][0] = 0.13;

A[3][1] = 0.17;

A[3][2] = -0.99;

A[3][3] = 0.35;

B[i][j] = 0;

C[i][j] = 0;

x[i] = 0;

y[i] = 0;

printf(" %.4f", A[i][j], " ");

}

cout << endl;

}

cout << " Our string f is: " << endl;

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

{

f[0] = 0.17;

f[1] = 1;

f[2] = 0.21;

f[3] = 2.71;

printf(" %.0f", f[i], " ");

}

cout << endl;

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

{

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

{

double s = 0;

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

s += B[j][k] * C[k][i];

B[j][i] = A[j][i] - s;

s = 0;

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

s += B[i][k] * C[k][j];

C[i][j] = (A[i][j] - s) / B[i][i];

}

}

cout << " Our matrix B is: " << endl;

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

{

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

{

printf(" %.4f", B[i][j], " ");

}

cout << endl;

}

cout << " Our matrix C is: " << endl;

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

{

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

{

printf(" %.4f", C[i][j], " ");

}

cout << endl;

}

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

{

double s = 0;

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

s += B[i][k] * y[k];

y[i] = (f[i] - s) / B[i][i];

}

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

{

double s = 0;

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

s += C[i][k] * x[k];

x[i] = y[i] - s;

}

cout << "Vector x" << endl;

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

{

cout << x[i] << " ";

}

cout << endl;

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

{

double s = 0;

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

{

s += A[i][j] * x[j];

}

Ax[i] = s;

r[i] = Ax[i] - f[i];

}

cout << "Nevazka" << endl;

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

{

printf("%1.18f\n", r[i]);

}

max = 0;

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

{

if (max< fabs(r[i]))

{

max = fabs(r[i]);

}

}

printf("\n ||Ax-f||=%1.18f\n", max);

double det = 1;

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

{

det *= B[i][i];

}

cout << "Determinant:" << endl;

cout << det << endl;

return 0;

}

Распечатка результатов

Our matrix A is:

0.1100 -0.1700 0.7200 -0.3400

0.8100 0.1200 -0.9100 0.1700

0.1700 -0.1800 1.0000 0.2800

0.1300 0.1700 -0.9900 0.3500

Our string f is:

0.1700 1.0000 0.2100 2.7100

Our matrix B is:

0.1100

0.8100 1.3718

0.1700 0.0827 0.2619

0.1300 0.3709 -0.1614 0.4259

Our matrix C is:

1.0000 -1.5455 6.5455 -3.0909

1.0000 -4.5282 1.9490

1.0000 2.4600

1.0000

Vector x

-5.0073 -79.3203 -14.8955 5.99673

Nevazka

-0.000000000000000527

0.000000000000001110

-0.000000000000002470

0.000000000000000444

||Ax-f||=0.000000000000002470

Determinant:

0.0168305

Метод Гаусса

Пусть , матрица, невырожденная.

Рассмотрим систему

= - известный n-мерный вектор

=; = - неизвестный

Метод Гаусса решения систем линейных уравнений с выбором главного или ведущего элемента матрицы.

Рассмотрим 1 шаг:

.

Если то меняем местами и строки:

то : .

Если то меняем местами и столбцы:

то : .

Делим 1-ю строку полученной матрицы на элемент :

Исключаем из всех уравнений, кроме 1-го, т. е.:

,

В результате получим матрицу

.

Пусть проделано k-1 шагов:

.

Рассмотрим k-й шаг:

k.1. .

k.2. Если то меняем местами и строки:

о .

k.3. Если то меняем местами и столбцы:

то ; .

k.4. Делим k-ю строку полученной матрицы на элемент :

k.5. Исключаем из всех уравнений, кроме k-го, т. е.

В результате получим матрицу

.

После n-го шага получаем матрицу

Решение находим следующим образом:

Метод Гаусса с выбором главного элемента в строке матрицы.

Рассмотрим k-й шаг,

k.1.

k.2. См. предыдущий метод.

k.3. См. предыдущий метод.

k.4. См. предыдущий метод.

k.5. См. предыдущий метод.

Решение находим следующим образом:

...
Другие файлы:

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

Метод Гаусса решения систем линейных алгебраических уравнений
Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы...

Прямые методы решения систем линейных уравнений
Характеристика способов решения систем линейных алгебраических уравнений (СЛАУ). Описание проведения вычислений на компьютере методом Гаусса, методом...

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

Точные методы решения систем линейных алгебраических уравнений (СЛАУ)
Методы решения систем линейных алгебраических уравнений (СЛАУ): Гаусса и Холецкого, их применение к конкретной задаче. Код программы решения перечисле...