- •Оглавление
- •Введение
- •Метод прямоугольников Формула прямоугольников на частичном отрезке и ее погрешность
- •Составная формула прямоугольников и ее погрешность
- •Применимость метода к функции, заданной в конечном числе точек
- •Создание формы приложения.
- •Результаты работы программы
- •Листинг программы
- •Список литературы.
Создание формы приложения.
Для создания приложения средствами Lazarus открываем среду разработки, создаем новый проект.
После этого создаем еще одну форму на которой будет информация о курсовой
После этого выполняем написание всего необходимого кода и компилируем программу.
Результаты работы программы
Здесь изображены графики зависимости погрешности метода трапеций и метода правых прямоугольников от числа разбиений.
Листинг программы
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Menus, ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure MenuItem1Click(Sender: TObject);
procedure MenuItem2Click(Sender: TObject);
procedure MenuItem3Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
Uses Unit2,Unit3,Unit4,Unit5;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.show;
Form1.Hide;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
end;
procedure TForm1.MenuItem1Click(Sender: TObject);
begin
Form3.show;
end;
procedure TForm1.MenuItem2Click(Sender: TObject);
begin
Form4.Show;
end;
procedure TForm1.MenuItem3Click(Sender: TObject);
begin
Form5.Show;
end;
end.
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Math, Dialogs,
StdCtrls, ExtCtrls;
type
{ TForm2 }
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button6: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.lfm}
{ TForm2 }
Uses Unit1,Unit5,Unit4;
procedure TForm2.Button1Click(Sender: TObject);
Var t0,tizm,x,h,f,f0,fn,sft,I0,Ik,sum:real; i,n:integer;
begin
n:=StrToInt(Edit1.Text);
t0:=0;
tizm:=StrToFloat(Edit2.Text);
I0:=Strtoint(Edit3.text);
Ik:=Strtoint(Edit4.text);
If ((Edit1.Text='') or (Edit2.Text='')) or ((Edit3.text='') or (Edit4.text='')) then showmessage('Введите данные')
else
begin
h:=(tizm-t0)/n;
Label1.Caption:=FloatToStrF(h,ffFixed,4,3);
sum:=0;
x:=0;
for i:=1 to n-1 do
begin
x:=x+h;
f:=(I0+(Ik-I0)*(x*tanh(x)/tizm))*(I0+(Ik-I0)*(x*tanh(x)/tizm));
sum:=sum+f;
end;
end;
f0:=I0;
fn:=(I0+(Ik-I0)*(tizm*tanh(tizm)/tizm))*(I0+(Ik-I0)*(tizm*tanh(tizm)/tizm));
sft:=(2*sum+f0+fn)/(2*h)/792000;
Label2.Caption:=FloatToStrF(sft,ffFixed,4,3);
end;
procedure TForm2.Button2Click(Sender: TObject);
var
t0,tizm,x,h,sum,I0,Ik: real;
i,n: integer;
begin
n:=StrToInt(Edit1.Text);
t0:=0;
tizm:=StrToFloat(Edit2.Text);
I0:=Strtoint(Edit3.text);
Ik:=Strtoint(Edit4.text);
h:=(tizm-t0)/n;
Label1.Caption:=FloatToStrF(h,ffFixed,4,3);
x:=h;
sum:=0;
for i:=1 to n do
begin
sum:=sum+(I0+(Ik-I0)*(x*tanh(x)/tizm))*(I0+(Ik-I0)*(x*tanh(x)/tizm));
x:=x-h;
end;
sum:=sum*h/792000;
Label2.Caption:=FloatToStrF(sum,ffFixed,4,3);
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Form1.Show;
Form2.Hide;
end;
procedure TForm2.Button4Click(Sender: TObject);
begin
Form4.Show;
Form2.Hide;
end;
end.
unit Unit4;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Grids, TAGraph, TASources, TASeries,Math, types, TACustomSeries;
type
{ TForm4 }
TForm4 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Chart1: TChart;
Chart1LineSeries1: TLineSeries;
Chart2: TChart;
Chart2LineSeries1: TLineSeries;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Chart1LineSeries1DrawPointer(ASender: TChartSeries;
ACanvas: TCanvas; AIndex: Integer; ACenter: TPoint);
private
{ private declarations }
public
{ public declarations }
end;
var
Form4: TForm4;
implementation
Uses Unit2;
{$R *.lfm}
{ TForm4 }
procedure TForm4.Button3Click(Sender: TObject);
Var t0,tizm,x,h,f,f0,fn,sft,I0,Ik,sum,pogr,q,z,y:real; i,n,p:integer; a: array[0..500] of real;
b: array[0..500] of real; Fi: TextFile;
begin
n:=10;p:=0;y:=10;
t0:=0;
tizm:=50;
I0:=1;
Ik:=50;
StringGrid1.RowCount:=3;
StringGrid1.ColCount:=21;
StringGrid1.Cells[0,0]:='n';
StringGrid1.Cells[0,2]:='trap';
StringGrid1.Cells[0,1]:='pryam';
while n<201 do
begin
begin
h:=(tizm-t0)/n;
sum:=0;
x:=0;
for i:=1 to n-1 do
begin
x:=x+h;
f:=(I0+(Ik-I0)*(x*tanh(x)/tizm))*(I0+(Ik-I0)*(x*tanh(x)/tizm));
sum:=sum+f;
end;
end;
f0:=I0;
fn:=(I0+(Ik-I0)*(tizm*tanh(tizm)/tizm))*(I0+(Ik-I0)*(tizm*tanh(tizm)/tizm));
sft:=(2*sum+f0+fn)/(2*h)/792000;
n:=n+10;
pogr:=abs(sft-0.05260833);
a[p]:=pogr;
p:=p+1;
end;
n:=10; p:=0;
while n<201 do
begin
h:=(tizm-t0)/n;
x:=h;
sum:=0;
for i:=1 to n do
begin
sum:=sum+(I0+(Ik-I0)*(x*tanh(x)/tizm))*(I0+(Ik-I0)*(x*tanh(x)/tizm));
x:=x-h;
end;
sum:=sum*h/792000;
n:=n+10;
pogr:=abs(sum-0.05260833);
b[p]:=pogr;
p:=p+1;
end;
chart2lineseries1.Clear;
chart1lineseries1.Clear;
For p:=0 To 19 Do
begin
q:=a[p];
z:=b[p];
chart2lineseries1.AddXY(y,q,'',clred);
chart1lineseries1.AddXY(y,z,'',clred);
StringGrid1.Cells[p+1,2]:=FloatToStrF(a[p],ffFixed,4,6);
StringGrid1.Cells[p+1,1]:=FloatToStrF(b[p],ffFixed,4,6);
StringGrid1.Cells[p+1,0]:=FloatToStr(y);
AssignFile(Fi,'D:\Akhmerov.txt');
append(Fi);
Writeln(Fi,FloatToStr(y)+' '+FloatToStrF(a[p],ffFixed,4,6)+' '+FloatToStrF(b[p],ffFixed,4,6));
CloseFile(Fi);
y:=y+10;
end;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
Form2.Show;
Form4.Hide;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm4.Chart1LineSeries1DrawPointer(ASender: TChartSeries;
ACanvas: TCanvas; AIndex: Integer; ACenter: TPoint);
begin
end;
end.
Выводы
В результате выполнения данной курсовой работы были изучены методы сортировки массивов, а именно - Метод Трапеций и метод правых прямоугольников. Так же была реализована программа на языке высокого уровня Lazarus, демонстрирующая возможности данных методов.