Автор работы: Пользователь скрыл имя, 18 Мая 2012 в 08:33, курсовая работа
Метод Гаусса решения систем линейных уравнений состоит в последовательном исключении неизвестных и описывается следующей процедурой.
С помощью элементарных преобразований над строками и перестановкой столбцов расширенная матрица системы может быть приведена к виду
Постановка задачи
Теоретическая часть
Методы решения примененные в программе
Метод Гаусса.
Метод Жордана-Гаусса.
Краткое описание среды визуальной разработки Delphi
Таблица основных обозначений программы.
Описание процедур и алгоритм роботы программы
Текст программы.
Файл-модуль unit1.pas
Файл-модуль unit2.pas
Файл проекта - Project1.dpr:
Результат работы программы.
Инструкция по работе с программой
Использованная Литература
ПЛАН
Составить программу для решения систем линейных уравнений размером n на n методом Гауса и Жордана-Гаусса.
Метод Гаусса решения систем линейных уравнений состоит в последовательном исключении неизвестных и описывается следующей процедурой.
С
помощью элементарных преобразований
над строками и перестановкой столбцов
расширенная матрица
системы
может быть приведена к виду
Эта
матрица является расширенной матрицей
системы
которая эквивалентна исходной системе
Заметим, что перестановка столбцов означает перенумерацию переменных. На практике обычно избегают этой процедуры, приводя расширенную матрицу к ступенчатому виду путем элементарных преобразований над строками.
Если хотя бы одно из чисел отлично от нуля, то система несовместна. Если же , то система совместна и можно получить явное выражение для базисных неизвестных через свободных неизвестных
Элементарные
преобразования этого метода аналогичны
методу Гаусса, только матрица при использовании
этого метода приводится к виду, тоесть
столбец свободных коэффициентов превращается
в столбец корней.
Среда Delphi - это сложный механизм, обеспечивающий высокоэффективную работу программиста. Визуально она реализуется несколькими одновременно раскрытыми на экране окнами. Окна могут перемещаться по экрану, частично или полностью перекрывая друг друга, что обычно вызывает у пользователя, привыкшего к относительной “строгости” среды текстового процессора Word или табличного процессора Excel, ощущение некоторого дискомфорта. После приобретения опыта работы с Delphi это ощущение пройдет, и вы научитесь быстро отыскивать нужное окно, чтобы изменить те или иные функциональные свойства создаваемой вами программы, ибо каждое окно несет в себе некоторую функциональность, т. е. предназначено для решения определенных задач.
Запустите
Delphi - и вы увидите нечто, похожее
на
На рисунке изображены шесть наиболее важных окон Delphi: главное окно, окно Дерева объектов (Object Tree View), окно Инспектора объектов, окно браузера, окно формы и окно кода программы.
Чтобы упорядочить окна так, как они показаны на рисунке, вам придется вручную изменять их положение и размеры, т. к. обычно окно кода программы почти полностью перекрыто окном формы. Впрочем, добиваться максимального сходства того, что вы видите на экране вашего ПК, с изображением, показанным на рисунке, вовсе не обязательно: расположение и размеры окон никак не влияют на их функциональностью.
Замечу,
что при первом запуске Delphi поверх
всех окон появится окно
С помощью этого окна вы сможете получить доступ к Web-страницам корпорации Inprise для просмотра самой свежей информации о корпорации и ее программных продуктах, копирования дополни тельных файлов, чтения ответов на наиболее часто задаваемые вопросы и т. д. При повторных запусках Delphi это окно появляется автоматически с некоторой периодичностью, определяемой настройками на странице окна Tolls | Environment Options, связанной с закладкой Delphi Direct. Вы также сможете его вызвать в любой момент с помощью опции Help | Delphi Direct главного меню.
Обозначение | Описание | Модуль |
maxr | Константа для ограничения максимального размера системы | Unit2 |
arys, ary2s | Типы данных для переменных, в которых хранятся значения коэффициентов системы | Unit2 |
Gauss1 | Процедура для решения системы линейных уравнений методом Гаусса | Unit2 |
Gaussj | Процедура для решения системы линейных уравнений методом Жордана-Гаусса | Unit2 |
i,j,l | Счетчики | Unit1 |
prover | Промежуточная переменная типа String, используется для проверки наличия букв среди коэффициентов системы, а также для замены «.» на «,». | Unit1 |
S | Переменная для хранения размера матрицы | Unit1 |
k | Переменная для хранения длины строчки хранящейся в переменной prover. | Unit1 |
dl | Переменная для проверки размера системы. | Unit1 |
MainMenu1 | Меню программы. | Unit1 |
File1, New1, Save1, Exit1 | Пункты меню. | Unit1 |
Matrix, Coef, Gauss, Jgauss | Таблицы для ввода элементов системы и вывода результатов расчета. | Unit1 |
XPManifest1 | Компонент, который дает программе возможность использовать оформление Windows. | Unit1 |
SaveDialog1 | Диалоговое окно для сохранения результатов. | Unit1 |
Button1, Button2 | Кнопки для запуска процедур решения системы. | Unit1 |
New1Click | Процедура, которая выполняется после выбора пункта меню New. | Unit1 |
Button1Click | Процедура, которая выполняется после нажатия кнопки Gauss. | Unit1 |
Button2Click | Процедура, которая выполняется после нажатия кнопки J-Gauss. | Unit1 |
Save1Click | Процедура, которая выполняется после выбора пункта меню Save. | Unit1 |
Exit1Click | Процедура, которая выполняется после выбора пункта меню Exit. | Unit1 |
Form1 | Собственно окно программы. | Unit1 |
В программу включены следующие процедуры : «gauss1», «gaussj», «New1Click», «Button1Click», «Button2Click», «Save1Click», «Exit1Click». С каждой из них мы ознакомимся ниже.
Процедура «gauss1» выполняет проверку системы на сходимость и решение методом Гаусса.
Процедура «gaussj» выполняет проверку системы на сходимость и решение методом Жордана-Гаусса.
Процедура «New1Click» выполняется после выбора пункта меню «New» или сразу после запуска программы и выполняет чтение размера системы и устанавливает размер таблиц для ввода коэффициентов системы.
Процедура «Button1Click» считывает коэффициенты системы, проверяет корректность ввода коэффициентов и заменяет при необходимости «.» на «,». Потом запускает процедуру «gauss1» для решения системы и выводит результаты.
Процедура «Button2Click» считывает коэффициенты системы, проверяет корректность ввода коэффициентов и заменяет при необходимости «.» на «,». Потом запускает процедуру «gaussj» для решения системы и выводит результаты.
Процедура «Save1Click» запускает диалог сохранения файлов и выполняет сохранение результатов.
Процедура «Exit1Click» - Выход из программы.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, XPMan, StdCtrls, Grids, unit2;
type
TForm1 = class(TForm)
Coef: TStringGrid;
Gauss: TStringGrid;
Jgauss: TStringGrid;
Button1: TButton;
Button2: TButton;
XPManifest1: TXPManifest;
SaveDialog1: TSaveDialog;
MainMenu1: TMainMenu;
File1: TMenuItem;
New1: TMenuItem;
Save1: TMenuItem;
Exit1: TMenuItem;
Matrix: TStringGrid;
procedure New1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
s:integer;
implementation
{$R
*.dfm}
procedure TForm1.Exit1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.New1Click(Sender: TObject);
var i,dl:integer;
prover:string;
begin
form1.Enabled:=false;
repeat
prover:=inputbox('Введите размер системы','Значение между 2 и 20','2');
dl:=length(prover);
if dl=0 then showmessage('Введите размер системы') else
begin
if (dl=1) and (prover<'9') and (prover>'0') then s:=trunc(strtofloat(prover))
else
begin
for i:=1 to dl do
begin
if prover[i]>'9' then
begin
showmessage('Введите число');
break;
end
else if i=dl then s:=trunc(strtofloat(inputbox('
end;
end;
end;
until (s>=2) and (s<=maxr);
form1.Enabled:=true;
matrix.RowCount:=s+1;
matrix.ColCount:=s+1;
gauss.colCount:=s+1;
coef.rowCount:=s+1;
jgauss.colCount:=s+1;
coef.Cells[1,0]:='B';
gauss.Cells[0,1]:='Gauss';
jgauss.Cells[0,1]:='J-Gauss';
for i:=1 to s do
begin
matrix.Cells[0,i]:=floattostr(
matrix.Cells[i,0]:='A'+
coef.Cells[0,i]:=floattostr(i)
gauss.Cells[i,0]:='X'+
jgauss.Cells[i,0]:='X'+
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var a:ary2s;
x,y:arys;
error:boolean;
i,j,l,K:integer;
prover:string;
begin
{Считывание массивов с исходными данными и проверка '.' или ','}
{************************
for i:=1 to s do
for j:=1 to s do
begin
prover:=matrix.Cells[j,
k:=length(prover);
if k=0 then
begin
showmessage('Вы не ввели один или несколько элементов системы.');
exit;
end;
for l:=1 to length(prover) do
if prover[l]='.' then prover[l]:=','
else if prover[l]>'9' then
begin
showmessage('В качестве одного или нескольких элементов системы введена буква. Замените их на числа!');
exit;
end;
matrix.Cells[j,i]:=prover;
a[i,j]:=strtofloat(matrix.
Информация о работе Математические методы Метод Жардана-Гаусса