Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
20.06.2014
Размер:
143.59 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

Коломенский институт (филиал)

Государственного образовательного учреждения

Высшего профессионального образования

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ОТКРЫТЫЙ УНИВЕРСИТЕТ»

____________________________________________________

Кафедра автоматики и электроники в машиностроении

Отчёт

по лабораторной работе №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.