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

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

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

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

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

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

____________________________________________________

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

Отчёт

по лабораторной работе №2

на тему: «Программирование алгоритмов решения дискретных моделей

на примерах задач численного интегрирования»

по дисциплине:

«Программирование и основы алгоритмизации»

Выполнил: студент группы УТС-11

Осипов А. А. (№11147)

Аудитория №210, ПК №10

25.04.12г.

Принял: преподаватель

Филоненко Ирина Николаевна

г. Коломна, 2012г.

Задание.

Вычислить определённый интеграл методом Симпсона.

Вариант

Кол-во интервалов разбиения

Точность

3

Автоматический выбор шага

10-3

Блок-схема:

Код программы:

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TTask3 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Image1: TImage;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Image2: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

procedure Button3Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Task3: TTask3;

implementation

{$R *.dfm}

procedure TTask3.Button3Click(Sender: TObject);

begin

close;

end;

procedure TTask3.Button1Click(Sender: TObject);

var

a,b,h,x,e,s1,s2,I1,I2:real;

n:integer;

function F(c:real):real;

begin

F:=2*c; //c*c*c*(sqr(cos(c)));

end;

function I(a1,b1,n1:real):real;

begin

h:=(b1-a1)/n1;

x:=a1+h;

s1:=0;

s2:=0;

while x<b1-h do

begin

s1:=s1+F(x);

x:=x+h;

s2:=s2+F(x);

x:=x+h;

end;

s1:=s1+F(x);

I:=(F(a1)+F(b1)+4*s1+2*s2)*h/3;

end;

begin

Label1.Visible:=true;

try

a:=StrToFloat(Edit3.Text);

b:=StrToFloat(Edit4.Text);

//n:=StrToInt(Edit5.Text);

e:=StrToFloat(Edit6.Text);

except on EConvertError do ShowMessage('Ошибка ввода данных');

end;

I2:=0;

repeat I1:=I2; I2:=I(a,b,n); n:=n*2; until abs(I1-I2)<=e;

Label2.Caption:=FloatToStr(I2);

Edit5.Text:=IntToStr(n);

end;

procedure TTask3.Button2Click(Sender: TObject);

begin

Edit3.Clear;

Edit4.Clear;

Edit5.Clear;

Edit6.Clear;

Label1.Visible:=False;

Label2.Caption:='';

end;

end.