Системы линейных уравнений — курсовая работа (Теория) по математике
|
Тезисы:
- Таким образом, однородная система линейных уравнений всегда совместна.
- Матрицы дают возможность кратко записать систему линейных уравнений.
- Основные понятия и теоремы систем линейных уравнений.
- Критерий совместности общей системы линейных уравнений.
- Однородная система п линейных уравнений с n неизвестными.
- Основные методы решения систем линейных уравнений.
- Матричный метод решения систем линейных уравнений.
- В самом общем случае система линейных уравнений имеет следующий вид.
- Однородная система п линейных уравнений с п неизвестными имеет вид.
- Рассмотрим систему 3-х линейных уравнений с тремя неизвестными.
Похожие работы:
32 Кб / 11 стр / 267 слов / 1836 букв / 20 ноя 2010
2 Мб / 39 стр / 2705 слов / 18573 букв / 1 окт 2011
74 Кб / 19 стр / 1194 слов / 8848 букв / 23 окт 2013
79 Кб / 30 стр / 2963 слов / 15846 букв / 1 дек 2012
84 Кб / 45 стр / 5589 слов / 49671 букв / 1 ноя 2012
137 Кб / 33 стр / 3727 слов / 21749 букв / 13 янв 2020
250 Кб / 28 стр / 1954 слов / 12842 букв / 10 дек 2015
89 Кб / 21 стр / 2467 слов / 17346 букв / 24 янв 2019
378 Кб / 39 стр / 5063 слов / 36156 букв / 1 авг 2015
116 Кб / 14 стр / 525 слов / 4034 букв / 31 окт 2014
Курсовая работа на тему: Решение систем линейных уравнений. Метод Гаусса
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕСИОНАЛЬНОГО ОБРАЗОВАНИЯ
«РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ им А. И.ГЕРЦЕНА»
Кафедра информационных и коммуникационных технологий
«Решение систем линейных уравнений. Метод Гаусса. Алгоритм оптимального исключения неизвестных по столбцам с выбором главных элементов по строкам преобразовав матрицу А в эквивалентную верхнюю левую треугольную матрицу»
студентка 2 курса 1 гр
кандидат педагогических наук, доцент
Введение Постановка задачи
1) вывод рекуррентной формулы
3) код программы
4) контрольный пример
Введение
Решение систем линейных алгебраических уравнений – одна из основных задач вычислительной линейной алгебры. Хотя задача решения системы линейных уравнений сравнительно редко представляет самостоятельный интерес для приложений, от умения эффективно решать такие системы часто зависит сама возможность математического моделирования самых разнообразных процессов с применением ЭВМ. Значительная часть численных методов решения различных (в особенности – нелинейных) задач включает в себя решение систем линейных уравнений как элементарный шаг соответствующего алгоритма.
Одна из трудностей практического решения систем большой размерности связанна с ограниченностью оперативной памяти ЭВМ. Хотя объем оперативной памяти вновь создаваемых вычислительных машин растет очень быстро, тем не менее, еще быстрее возрастают потребности практики в решении задач все большей размерности. В значительной степени ограничения на размерность решаемых систем можно снять, если использовать для хранения матрицы внешние запоминающие устройства. Однако в этом случае многократно возрастают как затраты машинного времени, так и сложность соответствующих алгоритмов. Поэтому при создании вычислительных алгоритмов линейной алгебры большое внимание уделяют способам компактного размещения элементов матриц в памяти ЭВМ.
К счастью, приложения очень часто приводят к матрицам, в которых число ненулевых элементов много меньше общего числа элементов матрицы. Такие матрицы принято называть разреженными. Одним из основных источников разреженных матриц являются математические модели технических устройств, состоящих из большого числа элементов, связи между которыми локальны. Простейшие примеры таких устройств – сложные строительные конструкции и большие электрические цепи.
Известны примеры решенных в последние годы задач, где число неизвестных достигало сотен тысяч. Естественно, это было бы невозможно, если бы соответствующие матрицы не являлись разреженными (матрица системы из 100 тыс. уравнений в формате двойной точности заняла бы около 75 Гбайт).
Множество прикладных и чисто математических задач приводят к необходимости решения систем линейных алгебраических уравнений. Без преувеличения можно утверждать, что это одна из важнейших задач вычислительной математики.
Значимость задачи породила целый ряд методов ее решения. Среди этих методов есть универсальные и специализированные (т. е. применимые лишь к системам, имеющим некоторые специальные свойства). Методы отличаются друг от друга эффективностью, требованиями к объемам машинной памяти (при реализации на ЭВМ), закономерностями накопления ошибок в ходе расчетов. Не существует одного метода, который можно было бы во всех случаях предпочесть всем остальным, и поэтому знакомство с несколькими методами является обязательным для квалифицированного вычислителя.
Как известно из курса алгебры, число неизвестных в системе может быть больше числа уравнений или равно ему. Если число неизвестных больше числа уравнений, то на первом этапе стандартными алгебраическими методами задача сводится к промежуточной задаче, в которой число неизвестных равно числу уравнений. С точки зрения вычислителя истинная проблема состоит именно в решении такой системы, и поэтому в данной работе я рассмотрю лишь такую ситуацию.
Итак, перед нами система n линейных алгебраических уравнений с n неизвестными:
(1.1)
Запись матрицы в такой форме достаточно громоздка, и при первой возможности я буду впредь использовать матричную форму записи, совершенно равносильную (1.1):
А — матрица, X – вектор-столбец неизвестных, B- вектор-столбец свободных членов.
Методы решения систем вида (1.1) можно разделить на два класса. К первому относятся прямые методы. С помощью таких методов в принципе можно в результате конечного числа шагов получить точные значения неизвестных. При этом предполагается, что и коэффициенты в правой части, и элементы столбца свободных членов – числа точные, а все вычисления производятся без округлений. Однако практически такое может произойти и в исключительных случаях или может быть связано с решением специального класса задач (например, когда решениями являются только целые числа). К подобным методам относятся:
o Метод определителей (метод Крамера) хорошо известный из курса алгебры;
o Матричное решение: X=A-1B (если известна обратная матрица);
o Различные варианты метода исключения неизвестных (метода Гаусса).
Чаще всего прямые методы реализуются на ЭВМ, и в процессе вычислительной ошибки округления и погрешности арифметических действий неизбежны. В силу этого название «точный» не вполне соответствует существу дела (но является традиционным).
Практическое применение первых двух методов может оказаться неэффективным или вообще невозможным. Если попробовать решать «в лоб» систему 15 линейных уравнений с 15 неизвестными с помощью формулы Крамера, то придется вычислить 16 определителей порядка 15, что приведет к выполнению примерно 2*16*15!*14 умножений и сложений. Для выполнения этих вычислений на ЭВМ с быстродействием 106 арифметических операций в секунду потребуется почти 10 недель непрерывной работы. С практической точки зрения при достаточно больших размерах системы матричное решение также является малопривлекательным, поскольку задача нахождения обратной матрицы сама по себе не проще задачи решения системы.
Ко второму классу методов решения систем линейных алгебраических уравнений относятся различные итерационные методы. К ним относятся:
o Метод простой итерации;
o Метод Зейделя.
Системы линейных алгебраических уравнений можно решать как с помощью прямых, так и итерационных методов. Для систем уравнений средней размерности чаще используют прямые методы.
Итерационные методы применяют главным образом для решения задач большой размерности, когда использование прямых методов невозможно из-за ограничений в доступной оперативной памяти ЭВМ или из-за необходимости выполнения чрезмерно большого числа арифметических операций. Большие системы уравнений, возникающие в основном в приложениях, как правило, являются разреженными. Методы исключения для систем с разреженными матрицами неудобны, например, тем, что при их использовании большое число нулевых элементов превращается в ненулевые и матрица теряет свойство разреженности. В противоположность им при использовании итерационных методов в ходе итерационного процесса матрица не меняется, и она, естественно, остается разреженной. Большая эффективность итерационных методов по сравнению с прямыми методами тесно связанна с возможностью существенного использования разреженности матриц.
Применение итерационных методов для качественного решения большой системы уравнений требует серьезного использования ее структуры, специальных знаний и определенного опыта.
2. Постановка задачи:
Решение систем линейных уравнений. Метод Гаусса. Алгоритм оптимального исключения неизвестных по столбцам и с выбором главных элементов по строкам, преобразовав матрицу А в эквивалентную верхнюю левую треугольную матрицу.
2.1. Вывод рекуррентной формулы
Рассмотрим метод Гаусса оптимального исключения неизвестного по столбцам. В методе оптимального исключения принцип преобразования матрицы аналогичен классическому методу последовательного исключения.
В численном методе Гаусса решения систем линейных уравнений АХ=В преобразуем в эквивалентную треугольную систему.
Решение этой задачи сводится сводиться к двум этапам.
1 этап. Прямой ход.
Матрица А преобразуется в эквивалентную ей левую верхнюю треугольную матрицу, таким же преобразованиям подвергается и вектор-столбец свободных членов В, который обычно присоединяется к матрице А справа как n+1 столбец, но я присоединю его слева как 1 столбец для того, чтобы удобнее было вычислять неизвестные данной нам матрицы.
2 этап. Обратный ход.
На этом ходе находятся корни уравнений методом обратной подстановки.
Алгоритм действия на 1 этапе.
На этапе прямого хода мы должны получить левую верхнюю треугольную матрицу, диагональные элементы должны быть не единичными.
Для этого необходимо:
1. преобразование матрицы А начнем из верхнего правого угла, где расположен элемент а1n+1 и будем двигаться сверху вниз и справа налево
2. двигаясь сверху вниз под диагональю в каждом (n-i+1)-том столбце будем получать нули
3. двигаясь справа налево включая столбец свободных членов обеспечивает эквивалентное преобразование элементов начиная с (n+1) столбца.
Рассмотрим подробно вывод рекуррентных формул для первого этапа.
1.Для получения нуля на месте ведомого элемента ak(n-i+1) необходимо получить новый коэффициент преобразования для k-той строки. Он равен:
(2.1)
2.Далее в каждом цикле частичного обнуления (n-i+1)-го столбца из каждой ведомой k-той строки вычитается ведущая строка кратная коэффициенту преобразования , с точки зрения математики это описывается следующим образом:
(2.2)
В данном методе на этапе прямого кода выполняется на n операций делений меньше, чем в методе последовательного исключения поскольку в каждом цикле обнуления столбца на подготовку коэффициентов преобразования требуется на одно деление меньше по сравнению с количеством делений элементов ведущей строки вместе с тем этот выигрыш является кажущимся, так как на втором этапе (обратный код) требуется ровно на n операций деления больше, чем в методе последовательного исключения диагональные элементы не равны единице.
Алгоритм действий на этапе обратного хода.
В результате преобразования имеем:
Обобщенные формулы для нахождения корней систем линейных уравнений имеет следующий вид:
(2.3)
(2.4)
Dim x(3), p, p5, S As Decimal
Dim i, k, n, j, i1, j1, t, m, m5, l, m1, max As Integer
Dim strSt As String
Console. WriteLine(«Метод оптимального исключения по столбцам «)
Console. WriteLine(«с выбором главного элемента по строкам»)
‘вывод матрицы на экран
Console. WriteLine(«Исходная матрица»)
For i = 0 To n — 1
strSt = FormatNumber(mas(i, j), 2)
Console. Write(» <0>«, strSt)
‘выбор главного элемента по строкам
For i = 0 To n — 1
max = Math. Abs(mas(i, n — i))
For j = n — i To 1 Step -1
m5 = Math. Abs(mas(i, j))
If m5 > max Then
If j1 = n — i Then
‘конец алгоритма выбора главного элемента
For l = 0 To n — 1
mas(l, n — i) = mas(l, j1)
Console. WriteLine(«Преобразованная матрица»)
For t = 0 To n — 1
strSt = FormatNumber(mas(t, j), 2)
Console. Write(» <0>«, strSt)
Console. WriteLine(«Преобразовываем матрицу в треугольную левую верхнюю»)
‘процедура прямого хода
‘преобразовываем матрицу в левую верхнюю треугольную
For i = 0 To n — 2
For k = i + 1 To n — 1
p = mas(k, n — i) / mas(i, n — i)
For j = n — i To 0 Step -1
mas(k, j) = mas(k, j) — p * mas(i, j)
‘вывод преобразованной матрицы
For t = 0 To n — 1
strSt = FormatNumber(mas(t, j), 2)
Console. Write(» <0>«, strSt)
‘вывод полученной матрицы
Console. WriteLine(«Полученная матрица»)
For i = 0 To n — 1
strSt = FormatNumber(mas(i, j), 2)
Console. Write(» <0>«, strSt)
‘процедура обратного кода
x(0) = mas(n — 1, 0) / mas(n — 1, 1)
For j = 0 To n — i — 2
S = S + mas(i, j + 1) * x(j)
x(n — i — 1) = (mas(i, 0) — S) / mas(i, n — i)
Loop While i >= 0
Console. WriteLine(«Полученные значения х»)
For i = 0 To n — 1
Console. Write(«x<0>=», i + 1)
strSt = FormatNumber(x(i), 2)
Решить систему линейных уравнений методом Гаусса оптимального исключения неизвестных по столбцам, преобразовав данную матрицу в эквивалентную ей левую верхнюю треугольную матрицу с выбором главного элемента по строкам.
1. Получим новый коэффициент преобразования для каждой k-ой строки.
2. Для обнуления 5-го столбца из каждой ведомой k-той строки вычитается ведущая строка кратная коэффициенту преобразования .
3. Получим новый коэффициент преобразования для каждой k-ой строки.
4. Для обнуления 4-го столбца из каждой ведомой k-той строки вычитается ведущая строка кратная коэффициенту преобразования .
5. Получим новый коэффициент преобразования для каждой k-ой строки.
6. Для обнуления 3-го столбца из каждой ведомой k-той строки вычитается ведущая строка кратная коэффициенту преобразования .
7. Вычислим переменные х:
Сравним полученные результаты с результатом программы
Метод оптимального исключения по столбцам
с выбором главного элемента по строкам
17,00 5,00 2,00 4,00 6,00
13,00 4,00 3,00 1,00 5,00
22,00 6,00 5,00 3,00 8,00
20,00 3,00 10,00 5,00 2,00
17,00 4,00 2,00 5,00 6,00
13,00 1,00 3,00 4,00 5,00
22,00 3,00 5,00 6,00 8,00
20,00 5,00 10,00 3,00 2,00
Преобразовываем матрицу в треугольную левую верхнюю
17,00 4,00 2,00 5,00 6,00
-1,17 -2,33 1,33 -0,17 0,00
-0,67 -2,33 2,33 -0,67 0,00
14,33 3,67 9,33 1,33 0,00
17,00 4,00 2,00 5,00 6,00
-1,17 -2,33 1,33 -0,17 0,00
4,00 7,00 -3,00 0,00 0,00
5,00 -15,00 20,00 0,00 0,00
17,00 4,00 2,00 5,00 6,00
-1,17 -2,33 1,33 -0,17 0,00
4,00 7,00 -3,00 0,00 0,00
31,67 31,67 0,00 0,00 0,00
17,00 4,00 2,00 5,00 6,00
-1,17 -2,33 1,33 -0,17 0,00
4,00 7,00 -3,00 0,00 0,00
31,67 31,67 0,00 0,00 0,00
Полученные значения х
. Теория матриц (издание третье)./. Москва: „Наука”, главная редакция физико-математической литературы, 1967г. Математический энциклопедический словарь. Москва: „Советская энциклопедия”, 1988г. Интернет-ресурсы (*****) Выводила рекуррентные формулы студентка 2 курса института информационных технологий
Курсовая работа: Разработка программы решения системы линейных уравнений
Название: Разработка программы решения системы линейных уравнений Раздел: Рефераты по информатике, программированию Тип: курсовая работа Добавлен 22:38:32 18 июля 2010 Похожие работы Просмотров: 1002 Комментариев: 21 Оценило: 3 человек Средний балл: 5 Оценка: неизвестно Скачать | |
Заключение
В данной курсовой работе рассмотрены математические методы решения систем линейных уравнений: матричный метод и метод Гаусса, приводятся основные конструкции языка Паскаль. Рассмотренные теоретические вопросы дают возможность создания программы на Паскале для решения систем линейных уравнений. В курсовой работе приводится текст данной программы, рассматривается структура программы, анализируются все подпрограммы. Данная программа может быть использована в различных областях, где требуется решение систем линейных уравнений.
Список используемых источников и литературы
1. А.В. Могилев, Н.И. Пак, Е.К. Хеннер «Информатика», Москва, ACADEMA, 2000 г.
2. « Турбо Паскаль 7.0″, Киев, Торгово-издательское бюро BHV, 1997г.
3. С.А. Немнюгин, «Турбо ПАСКАЛЬ», Практикум, Питер, 2002г.
Приложение
«Решение систем линейных уравнений матричным способом и методом Гаусса»
type matr=array [1. n,1. n] of real;
mas=array [1. n] of real;
procedure PrintMatr2 (m,m1: matr; n,nz,nd: integer);
for i: =1 to n do
if (i=1) then write (np: 2,’: ‘)
for j: =1 to n do
write (m [i,j]: nz: nd); write (‘ ‘);
for j: =1 to n do
write (m1 [i,j]: nz: nd);
procedure MultString (var a,b: matr; i1: integer; r: real);
for j: =1 to n do
procedure AddStrings (var а,b: matr; i1, i2: integer; r: real);
for j: =1 to n do
a [i1,j]: =a [i1,j] +r*a [i2,j] ;
b [i1,j]: =b [i1,j] +r*b [i2,j] ;
procedure MultMatr (a,b: matr; var c: matr);
for i: =1 to n do
for j: =1 to n do
for k: =1 to n do
function sign (r: real): shortint;
if (r>=0) then sign: =1 else sign: =-1;
procedure GetMatr (a: matr; var b: matr; m, i,j: integer);
var ki,kj,di,dj: integer;
for ki: =1 to m-1 do
if (ki=i) then di: =1;
for kj: =1 to m-1 do
if (kj=j) then dj: =1;
b [ki,kj]: =a [ki+di,kj+dj] ;
procedure gauss (a: matr; b: mas; var x: mas; n: integer);
For k: =1 to N-1 do
For i: =k+1 to n do
For j: =k+1 to N do
writeln (‘Вывод результатов решения системы уравнений методом Гаусса’);
writeln (‘x [‘,n,’] =’,x [n]: 6: 2);
for i: = (n-1) downto 1 do
For j: =i+1 to n do
x [i]: = (b [i] +s) /a [i, i] ;
writeln (‘x [‘, i,’] =’,x [i]: 6: 2);
procedure matrica (a: matr; y: mas; n: integer);
for i: =1 to n do
for j: =1 to n do z [i,j]: =0;
for i: =1 to n do
for j: =1 to n do
for i: =1 to n do
взятую со знаком i-того элемента j-ой строки. Таким образом,
на месте элементова a [i, i] возникает сумма модулей элементов i-того
столбца (ниже i-ой строки) взятая со знаком бывшего элемента a [i, i],
равенство нулю которой говорит о несуществовании обратной матрицы >
for j: =i+1 to n do
AddStrings (a,z, i,j,sign (a [i, i]) *sign (a [j, i]));
if (abs (a [i, i]) >eps) then
MultString (a,z, i,1/a [i, i]);
for j: =i+1 to n do
AddStrings (a,z,j, i,-a [j, i]);
writeln (‘Обратной матрицы не существует. ‘);
if (a [n,n] >eps) then
for i: =n downto 1 do
for j: =1 to i-1 do
AddStrings (a,z,j, i,-a [j, i]);
else writeln (‘Обратной матрицы не существует. ‘);
writeln (‘Начальная матрица, обратная к ней матрица: ‘);
for i: =1 to n do s [i]: =0;
for i: =1 to n do
for j: =1 to n do
s [i]: =s [i] +z [i,j] *y [j] ;
writeln (‘Вывод результатов решения системы уравненй матричным способом’);
for i: =1 to n do write (‘ ‘, s [i]: 5: 2);
writeln (‘ввод матрицы коэффициентов при неизвестных х’);
for i: =1 to N do
for j: =1 to N do
write (‘ введите a [‘, i,’,’,j,’] => ‘);
writeln (‘ввод столбца свободных членов’);
for i: =1 to N do
write (‘ введите b [‘, i,’] => ‘);
writeln (‘введите вариант ‘);
writeln (‘ 1 — решение системы линейных уравнений методом Гаусса ‘);
write (‘ 2 — решение системы линейных уравнений матричным методом => ‘);
http://pandia.ru/text/78/002/10054.php
http://www.bestreferat.ru/referat-142074.html