МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
СУМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Курсовая работа
по программированию по теме:
«Решение системы линейных уравнений методом Гаусса и Жордана-Гаусса»
Сумы 2005
ПЛАН
Составить программу для решения систем линейных уравнений размером 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))