Решение систем линейных уравнений методом прогонки

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    399,29 Кб
  • Опубликовано:
    2013-06-15
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Решение систем линейных уравнений методом прогонки















Курсовая работа

Решение систем линейных уравнений методом прогонки

по дисциплине Численные методы

Введение

Численные методы являются одним из мощных математических средств решения задачи. Простейшие численные методы мы используем всюду, например, извлекая квадратный корень на листке бумаги. Есть задачи, где без достаточно сложных численных методов не удалось бы получить ответа; классический пример - открытие Нептуна по аномалиям движения Урана.

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

Матрицы возникающих систем могут иметь различные структуры и свойства. Уже сейчас имеется потребность в решении систем линейных алгебраических уравнений с матрицами полного заполнения порядка нескольких тысяч. При решении ряда прикладных задач методом конечных элементов в ряде случаев появляются системы, обладающие симметричными положительно определёнными ленточными матрицами порядка несколько десятков тысяч с половиной ширины ленты до тысячи. И, наконец, при использовании в ряде задач метода конечных разностей необходимо решить системы разностных уравнений с разрежёнными матрицами порядка миллион.

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

Цель работы: научиться решать системы линейных уравнений методом прогонки.

1.  Теоретическая часть

.1      Метод Крамера

Пусть дана система линейных уравнений:


Коэффициенты a11,12,..., a1n, ... , an1 , b2 , ... , bn считаются заданными. Вектор- строка íx1 , x2 , ... , xn ý - называется решением системы (1), если при подстановке этих чисел вместо переменных все уравнения системы (1) обращаются в верное равенство.

Определитель т-го порядка D=çAê=ça ij ç, составленный из коэффициентов при неизвестных, называется определителем системы (1). В зависимости от определителя системы (1) различают следующие случаи: .). Если D¹0, то система (1) имеет единственное решение, которое может быть найдено по формулам Крамера: x1=, где

определитель n-го порядка Di ( i=1,2,...,n) получается из определителя системы петём замены i-го столбца свободными членами b1 , b2 ,..., bn.

б). Если D=0 , то система (1) либо имеет бесконечное множество решений, либо несовместна, т.е. решений нет.

1.2   
Метод прогонки

Для решения систем A x = b с трехдиагональной матрицей наиболее часто применяется метод прогонки, являющийся адаптацией метода Гаусса к этому случаю.

Запишем систему уравнений

1x1 + e1x2 = b1

c2x1 + d2x2 + e2x3 = b23x2 + d3x3 + e3x4 = b3

... ... ...n-1xn-2 + dn-1xn-1 + en-1xn = bn-1

cnxn-1 + dnxn = bn


в матричном виде: A x = b где A=

Выпишем формулы метода прогонки в порядке их применения.

Прямой ход метода прогонки (вычисление вспомогательных величин):


Обратный ход метода прогонки (нахождение решения):


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

 

| di | ≥ | c i | + | ei |

причем хотя бы одно неравенство должно быть строгим.

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

.1      Решение систем линейных уравнений методом Крамера

Нам дано уравнение вида:


Преобразуем его в матрицу


Затем подставим значения в формулы для нахождения ∆

=0.71*0.34*0.56+0.1*(-0.1)*(-0.04)+0.1*0.64*(-0.12)-0.34*(-0.12)*(-0.1)-0.71*0.64*(-0.04)-0.1*(-0.56)*(-0.1)=0.135184+0.0004-0.00768-0.00408+0.018176-0.0056=0.1364

0.29*0.34*0.56+0.32*0.64*(-0.12)+0.1*(-0.04)*(-0.1)-(-0.1)*0.34*(-0.12)-0.64*0.29*(-0.04)-0.32*0.1*0.56=0.055216-0.024576+0.0004-0.00408+0.007424-0.01792=0.016464

0.71*0.32*0.56+0.1*(-0.1)*(-0.12)+0.29*(-0.04)*(-0.1)-(-0.1)*0.32*(-0.12)-0.1*0.29*0.56-(-0.1)*(-0.04)*0.71= =0.127232+0.0012+0.00116-0.00384-0.01624-0.00284=0.106672

0.71*0.34*(-0.1)+0.1*0.64*0.29+0.1*0.32*(-0.1)-(-0.1)*0.32*0.29-0.64*0.32*0.71-0.1*0.1*(-0.1)=

=-0.02414+0.01856-0.0032+0.00928-0.145408+0.001=-0.143908

Подсчитаем чему равны корни уравнения


Выполним проверку:

0,71*0,12070381+0,1*0,78205279-0,12*(-1,055044) =0,0856997051+0,078205279+0,12660528=0,2905102641

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

линейный уравнение программный прогонка

 

ур*0.1 2ур*(-0.71)

 

ур+2ур

 

ур*(-0,56 3ур*0,0284)

 

ур+3ур

 

α= -  β=

α1= - =-0.07087295

α2= - =0.11764706

α3= - =0

β2==0.94117647

β3==0.81111111

Xn=

X1= = =0,856526

X2= = =1,2617

X3 =  =0,615844

3.  Программная реализация

3.1    Текст программы

Unit1;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls;= class(TForm): TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TEdit;: TLabel;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TButton;: TLabel;

lbx: TLabel;: TLabel;: TLabel;btn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;

{$R *.dfm}

// нажатие на "вычислить"TForm1.btn1Click(Sender: TObject);

const=3; // размерность массивов и матриц

var, D, E : array of Real; //матрица уравнений

B : array of Real; // чему равны уравнения (первая часть): array of Real; // результат,k : Integer; // для циклов, перебора, BET : array of Real; // Alpha и Beta для предв. вычислений: Real;

{установим длины массивов}

SetLength(C,n);(D,n);(E,n);(B,n);(Y,n);(ALF,n);(BET,n);

{заполним массивы}

//главная диагональ (d):[0]:=strtofloat(edtD1.text);[1]:=strtofloat(edtD2.text);[2]:=strtofloat(edtD3.text);

//диагональ c (та что пониже d)

c[0]:=0;[1]:=strtofloat(edtC2.text);

c[2]:=strtofloat(edtC3.text);

//диагональ e (та что повыше d)

e[0]:=strtofloat(edtE1.text);[1]:=strtofloat(edtE2.text);

e[2]:=0;

//заполняем чему равны наши выражения

b[0]:=strtofloat(edtB1.text);[1]:=strtofloat(edtB2.text);[2]:=strtofloat(edtB3.text);

//прорверим, можно ли считать этим способом:

k:=0;i:=0 to n-1 doAbs(d[i])>Abs(c[i])+abs(e[i]) then k:=k+1;

if k=0 then begin('Данный способ не применим, т.к. условие диагонального преобладания матрицы не выполняется :( ');;;

{вычисление вспомогательных величин}

ALF[0]:= -(E[0]/D[0]);[0]:= B[0]/D[0];

{прямой ход}I:= 1 to n - 1 do:= d[i] + c[i]*ALF[i-1];[i]:= -(e[i]/znam);[i]:= (-c[i]*BET[i-1]+b[i])/znam;

end;

{обратный ход, нахождение корней}

Y[n-1]:=(b[n-1]-c[n-1]*BET[n-2])/(d[n-1]+c[n-1]*ALF[n-2]);I:= n - 2 downto 0 do[i]:=Y[i+1]*ALF[i]+BET[i];

//вывод результата.Caption:='X = ' + floattostr(Y[0]);.Caption:='Y = ' + floattostr(Y[1]);.Caption:='Z = ' + floattostr(Y[2]);

end;.

3.2    Тестовый пример

Рассмотрим работу программы на простейшем примере


Все корни данной системы равны 1. Результат показан на рисунке 1.

Рисунок 1. Результат работы программы на тестовом примере

3.3    Решение задачи с помощью ЭВМ

Рассмотрим работу программы на примере


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

X=0,856526 Y=1,2617 Z= - 0,6158

Результат работы программы показан на рисунке 2.

Рисунок 2. Вычисление систем линейных уравнений методом прогонки

Заключение

Одним из самых распространенных методов решения систем линейных уравнений является метод прогонки. Условие преобладания диагональных элементов обеспечивает также устойчивость метода прогонки относительно погрешностей округлений. Последнее обстоятельство позволяет использовать метод прогонки для решения больших систем уравнений. Метод прогонки оказывается устойчивым даже при нарушении условия преобладания диагональных элементов.

В ходе выполнения курсовой работы мы проделали ручной расчет заданного уравнения, написали программу на языке программирования Delphi. Также мы выполнили тестовый пример для проверки метода прогонки

Список литературы

1.   Л.И.Турчак П.В.Плотников Основы численных методов

2.      <http://www.gasu.ru/resour/eposobia/metody/R_1_3.html>

.        <http://ru.wikipedia.org/wiki/Метод_прогонки>

Похожие работы на - Решение систем линейных уравнений методом прогонки

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!