Наиболее используемым эмпирическим методом оценки точности как метода
Эйлера, так и других пошаговых методов приближенного численного интегрирования
обыкновенных дифференциальных уравнений является способ двойного прохождения
заданного отрезка - с шагом h и с
шагом h/2. Совпадение соответствующих
десятичных знаков в полученных двумя способами результатах дает эмпирические
основание считать их верными (хотя полной уверенности в этом быть не может).
2. Практическая часть
.1 Формуляр
1 Общие сведения.
Наименование изготовителя.
Основные характеристики.
Требования к программному обеспечению:
· функционирование программного продукта возможно на всех операционных
системах (ОС) Windows.
Требования к аппаратному обеспечению:
· минимальное разрешение 800 x 600;
· 15 Mб свободного места на жестком диске
3 Комплектность.
В состав программного изделия входят: программа (каталог с набором
файлов), дистрибутив приложения и документация.
Область применения.
Программный продукт представляет собой приложение, предназначенное
решения задач по дисциплине «численные методы».
Функциональные возможности программного продукта
Разработанный программный продукт может выполнять следующие функции:
1. нахождение корней систем линейных алгебраических уравнений;
2. нахождение определителей матриц;
. нахождение обратных матриц;
. вычисление определенных интегралов;
. решение дифференциальных уравнений;
. уточнение корней уравнений на определенных интервалах;
2.2 Описание главной формы программного продукта
Главная форма программного продукта (Рис. 6) запускается после заставки.
На главной форме находится главное меню, в котором пользователь может выбрать
команду вызова одного из методов решения той или иной задачи, а также команды
вызова окна настройки пароля, окна регистрации (если программный продукт не
зарегистрирован), окна справки, окна «О программе» и выхода из программы. Так
же главная форма отображает текущую дату и время.
.3 Обоснование выбора способа внешнего управления продуктом
В качестве внешнего управления программным продуктом был выбран
усовершенствованный проблемно-ориентированный способ, когда в процессе диалога
выявляются необходимые для решения данные. В случае недостижимости цели решения
(получение ответа), пользователю сообщается о причинах и вычислительный процесс
прерывается. То есть предполагается ввод известной пользователю информации по
частям, а последовательность расчетов формируется автоматически, что обеспечивает
усовершенствованный проблемно-ориентированный способ внешнего управления.
.4 Определение функций обслуживающих и управляющих модулей
Поскольку приемы визуального событийно-управляемого программирования,
используемые в Delphi,
предполагают широкое использование объектов (форм, меню, элементов управления),
функциями обслуживающих модулей программного продукта является работа с этими
объектами (например, формами для ввода пользователем данных и команд на входном
языке программного продукта), контроль допустимости введенных пользователем
значений данных, а также общее оформление программного продукта и
предоставление пользователю справочной информации о программном продукте в
целом, так и о текущем состоянии модели предметной области и обеспечение вывода
разнообразных сообщений об ошибках выполнения.
Функциями основного управляющего модуля являются:
· формирование начального состояния;
· вызов обслуживающих и управляющих модулей второго и третьего
уровней в зависимости от действий пользователя.
Функциями второстепенного управляющего модуля являются:
· формирование последовательности вызовов обрабатывающих и обслуживающих
модулей в зависимости от действий пользователя;
· вызов обрабатывающих и обслуживающих модулей;
· преобразование состояния модели предметной области в
зависимости от результатов выполнения обрабатывающих и обслуживающих модулей.
2.5 Разработка входного языка программного продукта
Программный продукт ориентирован на работу в режиме диалогового
управления. При работе в таком режиме управление программным продуктом более
удобно, если используется входной язык типа «меню». В главном меню программного
продукта можно выделить три группы команд.
Первая группа включает в себя команды, позволяющие выбрать режим и метод
вычисления, а также команду выхода (Рис. 7).
Рисунок 7 - Первая группа команд программного продукта
Вторая группа включает в себя команду, позволяющую установить пароль на
программный продукт, а также команду, с помощью которой можно зарегистрировать
программный продукт (Рис. 8).
Рисунок 8- Вторая группа команд программного продукта
Третья группа включает в себя команды, с помощью которых можно получить
информацию о программе и справку (Рис. 9).
Рисунок 9 - Третья группа команд программного продукта
Кроме основного меню, управление программным продуктом осуществляется при
помощи диалогов.
.6 Разработка интерфейсов программного продукта
В программном продукте обеспечиваются следующие функции обслуживания:
· справочный интерфейс;
· информационный интерфейс;
· интерфейс управления;
· интерфейс ввода-вывода.
Справочный интерфейс в программном продукте представлен в виде общей
справки по работе программного продукта и при вводе данных. Общая справка
вызывается из главного меню командой «Вызов справки» или нажатием кнопки F1.
Информационный интерфейс представлен в программном продукте в виде
сообщений о некорректности данных. Сообщения о некорректности входных данных
представляют собой сообщения при вводе данных, если введены не все числа или
если число выходит за пределы диапазона возможных значений (Рис. 10).
Рисунок 10 - Сообщение о некорректно введенных данных
Интерфейс управления представлен в программном продукте в виде меню и
диалоговых окон. Возможности вызова конкретных пунктов меню связаны с текущим
состоянием модели предметной области, то есть в конкретный момент времени одни
пункты меню могут быть доступны, а другие - недоступны.
Интерфейс ввода-вывода реализует в программном продукте следующие
функции:
· предоставление пользователю возможности ввода данных (диалоговые окна);
· отображение введенных данных;
· вывод результатов расчетов;
· общее оформление диалоговых окон для обеспечения
воспринимаемости информации.
Заключение
программа численный метод
В результате выполнения курсовой работы были изучены принципы создания
программ в среде программирования Delphi 7.0 реализован программный продукт, выполняющий решение следующих задач
по дисциплине «Численные методы»:
1. нахождение корней систем линейных алгебраических уравнений;
2. нахождение определителей матриц;
3. нахождение обратных матриц;
. вычисление определенных интегралов;
. решение дифференциальных уравнений;
. уточнение корней уравнений на определенных интервалах;
Созданный программный продукт был протестирован с использованием методов
тестирования по стратегии «черного ящика». Результаты тестирования показали
правильную и устойчивую работу программы при допустимых (правильных) и
неправильных входных данных.
При выполнении курсовой работы мне удалось, овладеть элементами
самостоятельной исследовательской работы, а так же поиском и подбором
необходимой информации.
Список используемых источников
1 Архангельский
А.Я. Язык программирования Pascal
и основы программирования в Delphi:
Учебное пособие - М: ООО «Бином - Пресс», 2004. - 496с.
2 Баев
И.А., Варламова З.Н., Васильева О.Е. и др. Экономика предприятия. Учебник для
вузов. 4-е изд. / Под ред. акад. В.М. Семенова. - СПб.: Питер, 2006. - 362 с.
3 Бахвалов
Н.С., Жидков Н.П., Кобельков Г.М., Численные методы. - М.: Лаборатория базовых
знаний, 2001. - 632 с.
4 Вержбицкий
В.М. Основы численных методов. - М.: Высш. Шк., 2001. - 840 с.
Голицына
О.А., Попов И.И. Основы алгоритмизации и программирования. Учебное пособие. М.:
ФОРУМ: ИНФРА-М, 2002. - 432 с.
6 ГОСТ
12.2.032 -78. ССБТ. Рабочее место при выполнении работ сидя. Общие
эргономические требования. М.: Издательство стандартов, 1979.
7 ГОСТ
19.404-79.ЕСПД. Пояснительная записка. Требования к содержанию и оформлению.
8 ГОСТ
19.701-90.ЕСПД. Схема алгоритмов, программ, данных и систем. Условные
обозначения и правила обозначения.
9 Грибов
И.Р. Экономика предприятия. - М.: ЮНИТИ, 2004- 214с.
10 Демидович
Б.П., Матон И.А., Шувалова Э.З. Численные методы анализа. - М.: Наука, 1967. -
368 с.
Елизаров
О.П. Экономика предприятия (фирмы).- М.: ЮНИТИ, 2006г- 384с.
Камаева
В.Д. «Экономическая теория», Москва, «Юрайт», 2006г.
Каханер
Д., Моулер К., Нэш С. Численные методы и программное обеспечение. - М.: Мир,
1998. - 575 с.
14 Культин
Н.Б. Основы программирования в Delphi
7. - СПб.: БХВ-Петербург, 2004. - 608 с.
М.П.
Лапчик, М.И. Рагулина, Е.К. Хеннер. Численные методы 2-е издание. - М.:
Академа, 2005. - 384 с.
Рудаков
А.В. Технология разработки программных продуктов: Учеб. пособие для студ. сред.
проф. образования - М.: Издательский центр «Академия», 2005.- 208 с.
Самарский
А.А., Гулин А.В. Численные методы. - М.: Наука, 1989. - 432 с.
СанПиН
2.2.2/2.4.1340-03. Гигиенические требования к видеодисплейным терминалам ПЭВМ.
Табурчак
П.Б. Экономика предприятия. - Ростов н/Д: «Феникс», 2002.
20 Турчак
Л.И. Основы численных методов: учебное пособие. - М.: Наука, 1987. - 320 с.
21 Фигурнов
В.Э. IBM PC для пользователя. Краткий курс. - М.: ИНФРА-М, 1998.-480 с.
22 Фленов
М.Е. Программирование в Delphi
глазами хакера. - СПб.: БХВ-Петербург, 2003. - 368 с.
23 Чечевицына
Л.И. Экономика предприятия - М.: Издательство - торговая корпорация «Дашков и Ко»,
2003 - 352с.
Приложение
Текст программы
unit Unit1; // Главный
модуль
interface
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, unit2, ExtCtrls, Menus, jpeg, StdCtrls, Registry;
TForm1 = class(TForm)
Image1: TImage;
MainMenu1: TMainMenu;
N11: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
N24: TMenuItem;
N25: TMenuItem;
Label1: TLabel;
Button1: TButton;
Timer1: TTimer;
N26: TMenuItem;
N27: TMenuItem;
N28: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
N33: TMenuItem;
Label2: TLabel;
Label3: TLabel;
Timer2: TTimer;
procedure FormShow(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure N24Click(Sender: TObject);
procedure N25Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N27Click(Sender: TObject);
procedure N31Click(Sender: TObject);
procedure N32Click(Sender: TObject);
procedure N33Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure WMGetSysCommand(var Message : TMessage); message
WM_SYSCOMMAND;
procedure Timer2Timer(Sender: TObject);
procedure N30Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Form1: TForm1;Unit1_1, Unit2_1, Unit3_1, Unit4_1, Unit5_1,
Unit6_1, Unit11, Unit14,
Unit15, Unit13, Unit9, Unit17, Unit19, Unit12, Unit18,
Unit16, Unit10,
Unit7_1, Unit8_1, Unit1_2, Unit1_3, Unit2_2, Unit2_3,
Unit3_2, Unit3_3,
Unit4_2, Unit4_3, Unit5_2, Unit5_3, Unit6_2, Unit6_3,
Unit7_2, Unit8_2,
Unit20_1, Unit20_2, Unit20_3, Main, Password;
{$R *.dfm}TForm1.FormShow(Sender:
TObject);.free;;TForm1.N6Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.showmodal;;TForm1.N7Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.showmodal;;TForm1.N8Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.showmodal;;TForm1.N9Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.showmodal;;TForm1.N10Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.showmodal;;TForm1.N12Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.showmodal;;TForm1.N13Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.showmodal;;TForm1.N14Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.showmodal;;TForm1.N15Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.showmodal;;TForm1.N16Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.showmodal;;TForm1.N17Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.showmodal;;TForm1.N18Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.Edit6.Clear;.showmodal;;TForm1.N19Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.Edit6.Clear;.showmodal;;TForm1.N20Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.Edit6.Clear;.showmodal;;TForm1.N21Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.showmodal;;TForm1.N22Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.showmodal;;TForm1.N23Click(Sender:
TObject);.Edit1.Clear;.Edit2.Clear;.Edit3.Clear;.Edit4.Clear;.Edit5.Clear;.Edit6.Clear;.showmodal;;TForm1.N24Click(Sender:
TObject);.Edit1.Clear;.showmodal;;TForm1.N25Click(Sender:
TObject);.Edit1.Clear;.showmodal;;time;b of
:.Label1.Font.Color:=clyellow;:=1;;
:.Label1.Font.Color:=claqua;:=2;;
:.Label1.Font.Color:=clwhite;:=0;;;;TForm1.Timer1Timer(Sender:
TObject);;;TForm1.Button1Click(Sender:
TObject);.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;;TForm1.N27Click(Sender:
TObject);.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;.Close;;TForm1.N32Click(Sender:
TObject);: TRegistry;:= TRegistry.Create;.OpenKey('software',true);.OpenKey('stalk',true);.OpenKey('pas',true);Registry.ValueExists('login')
then.MaskEdit1.Clear;.ShowModal;.MaskEdit1.Clear;.MaskEdit2.Clear;.ShowModal;;;TForm1.N31Click(Sender:
TObject);.ShowModal;;TForm1.N33Click(Sender: TObject);: TRegistry;:string;
beginInputQuery('Регистрация','Введите регистрационный номер:',polic)
then
begin
// Проверяем его:
if polic='254622210741989' then
begin // Все в порядке:=
TRegistry.Create;.OpenKey('software',true);.OpenKey('stalk',true);.WriteInteger('polic',1);.WriteInteger('MaxR',10);('Программный продукт
зарегистрирован!!!'+#13+
'Перезапустите его!!!',mtInformation,[mbok],0);
end('Регистрационный номер неверен!!!',mtWarning,[mbok],0);;;;TForm1.FormActivate(Sender:
TObject);: TRegistry;:=
TRegistry.Create;.OpenKey('software',true);.OpenKey('stalk',true);Registry.ValueExists('polic')
then // программа зарегистрирована.Enabled:=false;;;TForm1.WMGetSysCommand(var Message :
TMessage);(Message.wParam = SC_Close) then.Close;.Close;
Inherited;;;TForm1.Timer2Timer(Sender:
TObject);.Caption:=Datetostr(now)+'г';.Caption:=Timetostr(now);;TForm1.N30Click(Sender:
TObject);(Form1.Handle,'HELP.hlp',HELP_CONTEXT,1);;.
Unit1_1; // Метод Гаусса (модуль 1)
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, Menus, StdCtrls;
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);:=
TRegistry.Create;.OpenKey('software',true);.OpenKey('stalk',true);Registry.ValueExists('polic')
then // программа зарегистрирована.Enabled:=false;;;TForm1.WMGetSysCommand(var Message :
TMessage);(Message.wParam = SC_Close) then.Close;.Close;
Inherited;;;TForm1.Timer2Timer(Sender:
TObject);.Caption:=Datetostr(now)+'г';.Caption:=Timetostr(now);;TForm1.N30Click(Sender:
TObject);(Form1.Handle,'HELP.hlp',HELP_CONTEXT,1);;.
Unit1_1; // Метод Гаусса (модуль 1)
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, Menus, StdCtrls;
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
Form2: TForm2;
a,b:integer;Unit1_2;
{$R *.dfm}TForm2.Button2Click(Sender:
TObject);:integer;:=strtoint(edit1.Text);:=strtoint(edit2.Text);(a>15)or(a<1)
then
messagedlg('Количество уравнений не должно превышать 15.',mtinformation,[mbok],0);
end(b>15)or(b<1) then
messagedlg('Количество коэффициентов в уравнении не должно превышать 15.',mtinformation,[mbok],0);
enda<>b then
messagedlg('Количество коэффициентов в уравнении должно совпадать с количеством
уравнений.',mtinformation,[mbok],0);
end.stringgrid1.colcount:=b+1;.stringgrid1.rowcount:=a+1;.StringGrid1.Height:=(a+1)*30;.StringGrid1.Width:=(b+1)*83;.Width:=form3.StringGrid1.Width+100;.Height:=form3.StringGrid1.Height+150;.Button1.Top:=form3.Height-90;.Button1.Left:=9;.Button2.Top:=form3.Height-90;.Button2.Left:=165;i:=0
to b-1
do.StringGrid1.Cells[i,0]:='X'+inttostr(i+1);;.StringGrid1.Cells[b,0]:='Своб.
чл.';i:=1 to a do.StringGrid1.Rows[i].Clear;;.Showmodal;;;;('Введите
данные!',mtinformation,[mbok],0);;;TForm2.Button1Click(Sender:
TObject);.Close;;TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);key of
#8,'0'..'9':;
#13:edit2.SetFocus;:=chr(0);;;TForm2.Edit2KeyPress(Sender:
TObject; var Key: Char);key of
#8,'0'..'9':;
#13:button2.SetFocus;:=chr(0);;;.
Unit1_2; //Метод Гаусса (Модуль 2)
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls, Grids;
TForm3 = class(TForm)
Label1: TLabel;
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key:
Char);
private
{ Private declarations }
public
{ Public declarations }
end;
Form3: TForm3;
otvet:array [0..25] of real;
f:integer;Unit1_1, Unit1_3;
{$R *.dfm}TForm3.Button2Click(Sender:
TObject);.close;.Close;;TForm3.Button1Click(Sender:
TObject);,j,c,e,d,ind,st,p:integer;:array [0..25,0..25] of real;:array
[0..25,0..25] of real;.Label1.Caption:='';i:=1 to a doj:=1 to b+1
do[i,j]:=strtofloat(form3.stringgrid1.Cells[j-1,i]);;;:=1;:=1;i:=st to b+1
do[st,i]:=maskof[st,i]/maskof[st,ind];;i:=st+1 to a doj:=st+1 to b+1
do[i,j]:=maskof[i,j]-maskof[i,st]*masst[st,j];;;:=st+1;:=ind+1;ind>a;:=st-1;:=1;i:=st
downto 1 do[p]:=masst[i,ind];:=p+1;;:=2;:=b;i:=a-1 downto 1 do:=c-1;j:=e to b
do[c]:=otvet[c]-masst[i,j]*otvet[d];:=d-1;;:=e-1;:=c+1;;:=1;i:=st downto 1
do.Label1.Caption:=form4.Label1.Caption+'X'+inttostr(f)+'='+floattostrf(otvet[i],fffixed,7,5)+';'+#13;:=f+1;;.Height:=form4.Label1.Height+85;.Button1.Top:=form4.Label1.Height+5;.Button2.Top:=form4.Label1.Height+5;.ShowModal;EInvalidop
do('Нет решения!',mtinformation,[mbok],0);;;EZeroDivide do('Нет
решения!',mtinformation,[mbok],0);;;Eoverflow do('Ошибка
вычисления!',mtinformation,[mbok],0);;;EConvertError do('Данные введены некорректно!',mtinformation,[mbok],0);;;;;TForm3.StringGrid1KeyPress(Sender:
TObject; var Key: Char);key of
'0'..'9':;
#8:(stringgrid1.Col>0)and(length(stringgrid1.Cells[stringgrid1.Col,stringgrid1.Row])=0)
then.Col:=stringgrid1.Col-1;(stringgrid1.Row>1)and(length(stringgrid1.Cells[stringgrid1.Col,stringgrid1.Row])=0)
then.Row:=stringgrid1.Row-1;.Col:=stringgrid1.Colcount-1;;;
#13:stringgrid1.Col<stringgrid1.ColCount-1
then.Col:=stringgrid1.Col+1;stringgrid1.Row<stringgrid1.RowCount-1
then.Row:=stringgrid1.Row+1;.Col:=0;.SetFocus;;;
'.',',':(length(stringgrid1.Cells[stringgrid1.Col,stringgrid1.Row])=0)or
(pos(',',stringgrid1.Cells[stringgrid1.Col,stringgrid1.Row])>0)then:=chr(0);:=chr(44);;
'-':length(stringgrid1.Cells[stringgrid1.Col,stringgrid1.Row])<>0
then:=chr(0);;:=chr(0);;;.
Unit1_3; // Метод
Гаусса (Модуль 3)
Windows, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
TForm4 =
class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure
Button1Click(Sender: TObject);
procedure
Button2Click(Sender: TObject);
private
{ Private
declarations }
public
{ Public
declarations }
end;
Form4:
TForm4;Unit1_1, Unit1_2;
{$R
*.dfm}TForm4.Button1Click(Sender:
TObject);.Close;.Close;.Close;;TForm4.Button2Click(Sender: TObject);.Close;;.
Unit17; //Метод
Эйлера
Windows, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
PARSING;
TForm33 =
class(TForm)
GroupBox1:
TGroupBox;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
Button1: TButton;
Button2: TButton;
Label6: TLabel;
Edit6: TEdit;
Button3: TButton;
procedure
Button1Click(Sender: TObject); // выполнить расчет
procedure
Button2Click(Sender: TObject); // выход
procedure
Edit1KeyPress(Sender: TObject; var Key: Char); // контроль ввода
procedure
Edit2KeyPress(Sender: TObject; var Key: Char); // данных
procedure
Edit3KeyPress(Sender: TObject; var Key: Char);
procedure
Edit4KeyPress(Sender: TObject; var Key: Char);
procedure
Edit5KeyPress(Sender: TObject; var Key: Char);
procedure
Edit6KeyPress(Sender: TObject; var Key: Char);
procedure
Button3Click(Sender: TObject);
procedure
Button3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private
declarations }
public
{ Public
declarations }
end;
Form33:
TForm33;Unit20_1;
{$R
*.dfm}TForm33.Button1Click(Sender:
TObject);,b,h,y,yy:extended;:integer;,fx:string;:=strtofloat(edit1.Text); //
диапазон:=strtofloat(edit2.Text);:=strtofloat(edit4.Text); // шаг:=edit3.Text;
// выражение:='('+f+')';:=strtofloat(edit6.Text); //
y0((a>9999)or(b>9999))or((a<-9999)or(b<-9999)) then// проверка
диапазона('Интервал превышает допустимый диапазон!',mtinformation,[mbok],0);(h=0)
then // проверка шага('Введите допустимый
шаг!',mtinformation,[mbok],0);:=0;a<=b+h/2 do // решение
y:=y+yy;
fx:=''; // очистка переменной под формулу
for i:=1 to
length(f) do(f[i]='x')or(f[i]='X') then:=fx+floattostr(a); // формирование
формулы(f[i]='y')or(f[i]='Y') then:=fx+floattostr(y); // формирование
формулы:=fx+f[i];;;;:=getformulavalue(fx); // вычисление полученной формулы:=yy*h;:=a+h;
// следующий шаг;.Text:=floattostr(y); // выводим ответ;;// обработка исключенийEZeroDivide do // деление на ноль('Нет решения!',mtinformation,[mbok],0);;;Eoverflow
do('Ошибка вычисления!',mtinformation,[mbok],0);;;EConvertError do('Данные
введены некорректно!',mtinformation,[mbok],0);;;;;TForm33.Edit1KeyPress(Sender:
TObject; var Key: Char);key of
'0'..'9',#8:;
#13:edit3.SetFocus;
'.',',':(length(edit1.text)=0)or
(pos(',',edit1.Text)>0)or((length(edit1.Text)=1)and(edit1.Text[1]='-'))then:=chr(0);:=chr(44);;
'-':length(edit1.Text)<>0
then:=chr(0);;:=chr(0);;;TForm33.Edit2KeyPress(Sender: TObject; var Key:
Char);key of
'0'..'9',#8:;
#13:edit1.SetFocus;
'.',',':(length(edit2.text)=0)or
(pos(',',edit2.Text)>0)or((length(edit2.Text)=1)and(edit2.Text[1]='-'))then:=chr(0);:=chr(44);;
'-':length(edit2.Text)<>0
then:=chr(0);;:=chr(0);;;TForm33.Edit5KeyPress(Sender: TObject; var Key:
Char);:=chr(0);;TForm33.Edit3KeyPress(Sender: TObject; var Key: Char);key of
#13:edit4.SetFocus;;;TForm33.Edit4KeyPress(Sender:
TObject; var Key: Char);key of
'0'..'9',#8:;
#13:edit6.SetFocus;
'.',',':(length(edit4.text)=0)or
(pos(',',edit4.Text)>0)or((length(edit4.Text)=1)and(edit4.Text[1]='-'))then:=chr(0);:=chr(44);;:=chr(0);;;TForm33.Button2Click(Sender:
TObject);.Close;;TForm33.Edit6KeyPress(Sender: TObject; var Key: Char);key of
'0'..'9',#8:;
#13:button1.SetFocus;
'.',',':(length(edit6.text)=0)or
(pos(',',edit6.Text)>0)or((length(edit6.Text)=1)and(edit6.Text[1]='-'))then:=chr(0);:=chr(44);;
'-':length(edit6.Text)<>0
then:=chr(0);;:=chr(0);;;TForm33.Button3Click(Sender:
TObject);.showmodal;;TForm33.Button3MouseMove(Sender: TObject; Shift:
TShiftState; X,
Y:
Integer);.HintColor:=clwhite;.HintPause:=700;.Hint:='Редактор формул';;
end.
unit Unit18; // Метод половинного
деления
interface
Windows, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
Parsing;
TForm34 = class(TForm)
Label1: TLabel;
GroupBox1:
TGroupBox;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Label4: TLabel;
Edit3: TEdit;
Label5: TLabel;
Edit4: TEdit;
Label6: TLabel;
Edit5: TEdit;
Button1: TButton;
Button2: TButton;
Edit2: TEdit;
Button3: TButton;
procedure
Button2Click(Sender: TObject);// выход
procedure
Button1Click(Sender: TObject);// выполнить расчет
procedure
Edit1KeyPress(Sender: TObject; var Key: Char); // контроль ввода
procedure
Edit2KeyPress(Sender: TObject; var Key: Char); // данных
procedure
Edit4KeyPress(Sender: TObject; var Key: Char);
procedure
Edit5KeyPress(Sender: TObject; var Key: Char);
procedure
Edit3KeyPress(Sender: TObject; var Key: Char);
procedure
Button3Click(Sender: TObject);
procedure
Button3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private
declarations }
public
{ Public
declarations }
end;
Form34:
TForm34;Unit20_1;
{$R
*.dfm}TForm34.Button2Click(Sender:
TObject);.Close;;TForm34.Button1Click(Sender:
TObject);,b,c,aa,bb,xn,fa,fb,fx:extended;,ffa,ffb,fxn:string;:integer;:=strtofloat(edit2.Text);
// диапазон:=strtofloat(edit1.Text);:=strtofloat(edit4.Text); //
точность:=edit3.Text; //
уравнение:='('+f+')';((a>999)or(b>999))or((a<-999)or(b<-999))
then// проверка диапазона('Интервал превышает допустимый
диапазон!',mtinformation,[mbok],0);c=0 then // проверка точности('Точность
должна быть вида:'+#13+'0,1; 0,01; 0,001 и т.д.',mtinformation,[mbok],0);
else
begin
// уточняем знак введенных
корней a и b
ffa:='';:='';i:=1
to length(f) do(f[i]='x') or (f[i]='X')
then:=ffa+floattostr(a);:=ffb+floattostr(b);:=ffa+f[i];:=ffb+f[i];;;:=getformulavalue(ffa);:=getformulavalue(ffb);((fa>0)and(fb>0))or((fa<0)and(fb<0))
then
messagedlg('Действительные корни имеют одинаковые знаки',mtinformation,[mbok],0);
endfa>0
then:=a;:=b;:=b;:=a;;;
// уточняем
кореньabs(aa-bb)>c do:=(aa+bb)/2;i:=1 to length(f) do(f[i]='x') or
(f[i]='X')
then:=fxn+floattostr(xn);:=fxn+f[i];;;:=getformulavalue(fxn);:='';fx>0 then
begin:=xn;:=xn;;;
// выводим
ответ.Text:=floattostr(xn);;;// обработка исключенийEZeroDivide do // деление
на ноль('Нет решения!',mtinformation,[mbok],0);;;Eoverflow do('Ошибка
вычисления!',mtinformation,[mbok],0);;;EConvertError do('Данные введены
некорректно!',mtinformation,[mbok],0);;;;;TForm34.Edit1KeyPress(Sender:
TObject; var Key: Char);key of
'0'..'9',#8:;
#13:edit3.SetFocus;
'.',',':(length(edit1.text)=0)or
(pos(',',edit1.Text)>0)or((length(edit1.Text)=1)and(edit1.Text[1]='-'))then:=chr(0);:=chr(44);;
'-':length(edit1.Text)<>0
then:=chr(0);;:=chr(0);;;TForm34.Edit2KeyPress(Sender: TObject; var Key:
Char);key of
'0'..'9',#8:;
#13:edit1.SetFocus;
'.',',':(length(edit2.text)=0)or
(pos(',',edit2.Text)>0)or((length(edit2.Text)=1)and(edit2.Text[1]='-'))then:=chr(0);:=chr(44);;
'-':length(edit2.Text)<>0
then:=chr(0);;:=chr(0);;;TForm34.Edit4KeyPress(Sender: TObject; var Key:
Char);key of
'0',#8:;
'1':(length(edit4.text)=0)or
(pos('1',edit4.Text)>0)or
(pos(',',edit4.Text)=0)then:=chr(0);:='1';;
#13:button1.SetFocus;
'.',',':(length(edit4.text)=0)or
(pos(',',edit4.Text)>0)then:=chr(0);:=chr(44);;:=chr(0);;;TForm34.Edit5KeyPress(Sender:
TObject; var Key: Char);:=chr(0);;TForm34.Edit3KeyPress(Sender: TObject; var
Key: Char);key of
#13:edit4.SetFocus;;;TForm34.Button3Click(Sender:
TObject);.showmodal;;TForm34.Button3MouseMove(Sender: TObject; Shift:
TShiftState; X,
Y:
Integer);.HintColor:=clwhite;.HintPause:=700;.Hint:='Редактор формул';;
end.