
Программирование и основы алгоритмизации - Лабораторные работы (КИ МГОУ) / Отчёты / Лабораторная работа №4
.docxФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Коломенский институт (филиал)
Государственного образовательного учреждения
Высшего профессионального образования
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ОТКРЫТЫЙ УНИВЕРСИТЕТ»
____________________________________________________
Кафедра автоматики и электроники в машиностроении
Отчёт
по лабораторной работе №4
на тему: «Организация многооконного приложения в Delphi для
решения о.д.у.»
по дисциплине:
«Программирование и основы алгоритмизации»
Выполнил: студент группы УТС-11
Осипов А. А. (№11147)
Аудитория №210, ПК №12
16.05.12г.
Принял: преподаватель
Филоненко Ирина Николаевна
г. Коломна, 2012г.
Задание.
Вариант |
Метод |
Нач. условия |
Шаг (h) или количество узлов(n); конечное значение аргумента(xk) |
Уравнение |
Точность решения |
1 |
2 |
3 |
4 |
5 |
6 |
3 |
Рунге- Кутта |
x = 0 y = 1 |
h = 0.1 xk = 1 |
xy`+2x2-e-x=0 |
- |
Блок-схема:
Код программы:
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, StdCtrls, ExtCtrls, TeeProcs, Chart, Grids;
type
TTask5 = class(TForm)
Chart1: TChart;
Button3: TButton;
Series1: TLineSeries;
StringGrid1: TStringGrid;
GroupBox1: TGroupBox;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
SaveDialog1: TSaveDialog;
Button4: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Task5: TTask5;
implementation
{$R *.dfm}
function F(x,y:real):real;
begin
F:=(exp(-x)-2*x*x)/x; //2*x;
end;
procedure SaveStringGrid(StringGrid:TStringGrid;FileName:string);
var
T:TStringList;
Row,Col:integer;
begin
Col:=1;
Row:=0;
T:=TStringList.Create;
T.Add(' x | y');
T.Add('----------------------');
while Col<StringGrid.ColCount do
begin
if StringGrid.Cells[Col,Row]='' then break;
T.Add(' '+StringGrid.Cells[Col,Row]+' | '+StringGrid.Cells[Col,Row+1]);
Col:=Col+1;
end;
T.Add('----------------------');
T.SaveToFile(Filename);
T.Free;
end;
procedure TTask5.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:=' x';
StringGrid1.Cells[0,1]:=' y';
end;
procedure TTask5.Button3Click(Sender: TObject);
begin
close;
end;
procedure TTask5.Button1Click(Sender: TObject);
var
i:integer;
x0,y0,xk,h,x,y,k1,k2,k3,k4:real;
begin
i:=1;
x0:=StrToFloat(Edit1.Text);
y0:=StrToFloat(Edit2.Text);
xk:=StrToFloat(Edit3.Text);
h:=StrToFloat(Edit4.Text);
x:=x0;
y:=y0;
repeat
k1:=F(x,y);
k2:=F(x+h/2,y+k1*h/2);
k3:=F(x+h/2,y+k2*h/2);
k4:=F(x+h,y+k3*h);
y:=y+h/6*(k1+2*(k2+k3)+k4);
x:=x+h;
StringGrid1.Cells[i,0]:=FloatToStrf(x,ffFixed,7,1);
StringGrid1.Cells[i,1]:=FloatToStrf(y,ffFixed,7,1);
Chart1.Serieslist[0].AddXY(x,y,'',clred);
i:=i+1;
if i>=15 then StringGrid1.ColCount:=StringGrid1.ColCount+1;
until
x>=xk;
end;
procedure TTask5.Button4Click(Sender: TObject);
begin
if SaveDialog1.Execute then SaveStringGrid(StringGrid1, SaveDialog1.FileName);
end;
end.