«Численные методы» icon

«Численные методы»


Смотрите также:
Учебная программа по дисциплине «Численные методы» Специальность 010200 Прикладная математика и...
Учебной дисциплины «Численные методы» для направления 010200...
Рабочая программа учебной дисциплины численные методы Направление подготовки 210400 Радиотехника...
Программа кандидатского экзамена по специальности 05. 13. 18 «Математическое моделирование...
Программа кандидатского экзамена по специальности 05. 13. 18 «Математическое моделирование...
Программа-минимум кандидатского экзамена по специальности 05. 13...
Программа-минимум кандидатского экзамена по специальности 05. 13...
Рабочая программа учебной дисциплины численные методы Наименование магистерской программы...
Программа обучения студентов ( Syllabus ) по дисциплине Численные методы для специальности...
Программа-минимум кандидатского экзамена по специальности 05. 13...
Программа-минимум кандидатского экзамена по специальности05. 13...
Рабочая программа спец курса «Численные методы и математическое моделирование» Специальность...



Загрузка...
скачать

РОСЖЕЛДОР

Государственное образовательное учреждение высшего профессионального образования

СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ (СГУПС)


Кафедра «Информационные технологии транспорта»


Реферат


frame1§по дисциплине «Численные методы»


frame2


Краткая рецензия:

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________


________________________________

(запись о допуске к защите)


________________________________

(оценка по результатам защиты)


___________ Э.А. Усова

(подпись)


__________________

(дата защиты)


Новосибирск

2010



План:

  1. Введение.

  2. Теория.

  3. Системные требования.

  4. Код программы.



Введение.


Данная работа выполнялась с применением всех моих знаний полученных в ходе прослушивания курса предмета – “Численные методы”. Данная программа была разработана в среде Delphi. Программа предназначена для решения систем линейных уравнений методом Гаусса.


Теория.

Ме́тод Га́усса — классический метод решения системы линейных алгебраических уравнений (СЛАУ). Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе ступенчатого (или треугольного) вида, из которого последовательно, начиная с последних (по номеру) переменных, находятся все остальные переменные.


Пусть исходная система выглядит следующим образом:





Матрица A называется основной матрицей системы, b — столбцом свободных членов.


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





При этом будем считать, что базисный минор (ненулевой минор максимального порядка) основной матрицы находится в верхнем левом углу, то есть в него входят только коэффициенты при переменных [3].


Тогда переменные называются главными переменными. Все остальные называются свободными.


Если хотя бы одно число , где i > r, то рассматриваемая система несовместна.


Пусть, что для любых i > r.


Перенесём свободные переменные за знаки равенств и поделим каждое из уравнений системы на свой коэффициент при самом левом (, где — номер строки):





где


Если свободным переменным системы (2) придавать все возможные значения и решать новую систему относительно главных неизвестных снизу вверх (то есть от нижнего уравнения к верхнему), то мы получим все решения этой СЛАУ. Так как эта система получена путём элементарных преобразований над исходной системой (1), то по теореме об эквивалентности при элементарных преобразованиях системы (1) и (2) эквивалентны, то есть множества их решений совпадают.


Условие совместности


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


Напомним, что рангом совместной системы называется ранг её основной матрицы (либо расширенной, так как они равны).


Алгоритм

[править]

Описание


Алгоритм решения СЛАУ методом Гаусса подразделяется на два этапа.

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

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


Метод Гаусса требует порядка O(n3) действий.


Этот метод опирается на:


Простейший случай


В простейшем случае алгоритм выглядит так:





Прямой ход:




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


Пример


Покажем, как методом Гаусса можно решить следующую систему




Обнулим коэффициенты при X во второй и третьей строчках. Для этого домножим их на 2\3 и 1 соответственно и сложим с первой строкой:




Теперь обнулим коэффициент при Y в третьей строке, домножив вторую строку на 6 и вычитая из неё третью:



В результате мы привели исходную систему к треугольному виду, тем самым закончив первый этап алгоритма.


На втором этапе разрешим полученные уравнения в обратном порядке. Имеем:

Z= -1 из третьего;

Y= 3 из второго, подставив полученное

X = 2 из первого, подставив полученные и .


Таким образом исходная система решена.


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


Системные требования:

ОС: Windows 95 и выше.

Процессор: Pentium 120Мгц и выше.

ОЗУ: 16мб и выше.

Место на HDD: 20мб.


Код программы:


uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;


const MaxDimension = 10;


type


Vector = array[1..MaxDimension] of Double;

Matrix = array[1..MaxDimension] of Vector;


TForm3 = class(TForm)

Edit1: TEdit;

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

Button1: TButton;

Label2: TLabel;

Label3: TLabel;

ListBox1: TListBox;

Label4: TLabel;

Label1: TLabel;

Label5: TLabel;

Button2: TButton;

procedure Edit1Change(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


var

Form3: TForm3;


implementation


{$R *.dfm}


procedure TForm3.Button1Click(Sender: TObject);

var a: Matrix;

b,x: Vector;

h: Double;

i,j,k,n:integer;

begin

//Ввод данных

//Размерность системы

n := StrToIntDef(Text, StringGrid1.ColCount);

//Коэффициенты

for j := 0 to n - 1 do

for i := 0 to n - 1 do

a[i + 1, j + 1] := StrToFloatDef(StringGrid1.Cells[j, i], 0);

//Правая часть уравнения

for I := 0 to n - 1 do b[i + 1] := StrToFloatDef(StringGrid2.Cells[0, i], 0);

//Прямой ход - исключение переменных

for i:=1 to n-1 do

for j:=i+1 to n do

begin

a[j,i]:=-a[j,i]/a[i,i];

for k:=i+1 to n do

a[j,k]:=a[j,k]+a[j,i]*a[i,k];

b[j]:=b[j]+a[j,i]*b[i]

end;

x[n]:=b[n]/a[n,n];

//Обратный ход - нахождение корней

for i:=n-1 downto 1 do

begin

h:=b[i];

for j:=i+1 to n do h:=h-x[j]*a[i,j];

x[i]:=h/a[i,i]

end;

//Вывод результата

for i:=1 to n do ListBox1.Items.Append('x(' + IntToStr(i) + ')=' + FloatToStr(x[i]));

end;

procedure TForm3.Edit1Change(Sender: TObject);

begin

with StringGrid1, Edit1 do

begin

ColCount := StrToIntDef(Text, 3);

RowCount := StrToIntDef(Text, 3);

end;

with StringGrid2, Edit1 do

RowCount := StrToIntDef(Text, 3)

end;


procedure TForm3.FormCreate(Sender: TObject);

var i, j: integer;

begin

//Заполнить коэф уравнения

Randomize;

for I := 0 to StrToIntDef(Text, StringGrid1.ColCount) - 1 do

for J := 0 to StrToIntDef(Text, StringGrid1.RowCount) - 1 do

StringGrid1.Cells[I, J] := IntToStr(Random(100));

for I := 0 to StrToIntDef(Text, StringGrid2.RowCount) - 1 do

StringGrid2.Cells[0, I] := IntToStr(Random(100))

end;


//кнопка выхода

procedure TForm3.Button2Click(Sender: TObject);

begin

close;

end;


end.




оставить комментарий
Дата04.03.2012
Размер64,5 Kb.
ТипРеферат, Образовательные материалы
Добавить документ в свой блог или на сайт

Ваша оценка этого документа будет первой.
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

наверх