Методы вычисления приближенного значения интеграла

Требования к аппаратным ресурсам персонального компьютера. Расчет цены и прибыли на программное средство. Процедура нахождения значения интеграла методом Симпсона, трапеции, прямоугольников. Формы для ввода и вывода данных с доступным интерфейсом.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 11.06.2012
Размер файла 7,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

- рассматривает апелляции по вопросам сертификации работ по охране труда в организациях.

Минтруд Беларуси формирует Совет ССОТ, в состав которого на общественных началах могут входить представители:

- органов исполнительной власти;

- органов государственного надзора и контроля;

- органов субъектов РБ, ведающих вопросами охраны труда (государственные экспертизы условий труда);

- профессиональных союзов и их объединений;

- иных уполномоченных работниками представительных органов;

- ассоциаций специалистов по охране труда;

- научно-исследовательских организаций в области охраны труда, сертификации и стандартизации.

Совет ССОТ является консультативным органов при Центральном органе ССОТ.

Состав Совета ССОТ утверждается приказом Минтруда Беларуси раз в 3 года.

Председателем Совета назначается представитель Минтруда Беларуси.

Организационное и материальное обеспечение деятельности Совета ССОТ осуществляет Центральный орган ССОТ.

Центральный орган ССОТ - орган, возглавляющий систему сертификации работ, определяется Минтрудом России и действует под его руководством и во взаимодействии с Советом ССОТ.

Основные функции ЦО ССОТ:

- организация работы по формированию ССОТ, осуществление организационно - методического руководства ею;

- формирование, ведение и совершенствование фонда нормативных правовых актов по охране труда, на соответствие которым проводится сертификация работ по охране труда в организациях, участие в работах по их совершенствованию;

- разработка и совершенствование основополагающих нормативных правовых актов ССОТ;

- осуществление информационного обеспечения ССОТ;

- организация аккредитации органов по сертификации и испытательных лабораторий (центров) и непосредственное участие в ней;

- сбор сведений для составления государственного реестра участников и объектов сертификации работ по охране труда в организациях;

- анализ практики сертификации работ по охране труда в организациях и подготовка предложений по проведению необходимых корректирующих мероприятий;

- рассмотрение апелляций по поводу действий органов по сертификации и испытательных лабораторий (испытательных центров);

- организация и проведение проверочных испытаний (измерений) и оценок при наличии разногласий;

- организация ведения предусмотренной Правилами сертификации работ по охране труда отчетности.

Центральный орган подсистемы ССОТ - орган, возглавляющий подсистему сертификации работ по охране труда в организациях определенной отрасли (сектора) экономики.

При необходимости в ССОТ создается научно-методический центр сертификации работ по охране труда (НМЦ), который осуществляет научно-методическое обеспечение и участвует в разработке и совершенствовании нормативных правовых актов ССОТ.

НМЦ выполняет следующие основные функции:

- осуществляет общее научно - методическое обеспечение ССОТ;

- участвует в разработке и совершенствовании нормативных правовых актов ССОТ;

- осуществляет разработку прогнозов развития сертификации работ по охране труда в организациях, контроль за деятельностью экспертов по сертификации;

- обеспечивает информацией в области сертификации работ по охране труда в организациях;

- проводит специальную подготовку экспертов по сертификации;

- осуществляет координацию деятельности центров по подготовке экспертов по сертификации;

- оказывает участникам сертификации методическую помощь в проведении сертификации работ по охране труда в организациях;

- участвует по поручению ЦО ССОТ в работе международных (региональных) организаций по сертификации работ по охране труда в организациях;

- проводит научно - исследовательские работы по сертификации работ по охране труда в организациях, имеющие общегосударственное значение.

Испытательные лаборатории (испытательные центры), аккредитованные в установленном порядке:

- осуществляют измерения (оценку) параметров опасных и вредных производственных факторов;

- выдают протоколы измерений.

Заявитель - организация, обратившиеся с заявкой на проведение одного или нескольких видов работ в области сертификации.

Заключение

В данном дипломном проекте рассматривалась тема о методах нахождения приближенного значения интеграла.

Очевидно, что вычисления определенных интегралов с помощью квадратурных формул не дают точного значения, а только приближенное. Чтобы максимально приблизиться к достоверному значению интеграла нужно уметь правильно выбрать метод и формулу, по которой будет вестись расчет. Так же очень важно то, какой будет взят шаг интегрирования. Хотя численные методы и не дают очень точного значения интеграла, но они очень важны, так как не всегда можно решить задачу интегрирования аналитическим способом.

Список используемых источников

1 Кулиш, У Достоверные вычисления. Базовые численнные методы: У. Кулиш, Д. Рац, Р. Хаммер, М. Хокс -- Москва, НИЦ "Регулярная и хаотическая динамика", 2005 г.- 496 с.

2 Привалов, И.И. Интегральные уравнения: Привалов И.И. -- Санкт-Петербург, 2010 г.- 248 с.

3 Медведев, Ф. А. Очерки истории теории функций действительного переменного: Ф. А. Медведев -- Москва, КомКнига, 2006 г.- 248 с.

4 Тихонов, В. И. Случайные процессы. Примеры и задачи. Том 5. Оценка сигналов, их параметров и спектров. Основы теории информации: В. И. Тихонов, Б. И. Шахтарин, В. В. Сизых -- Москва, Горячая Линия - Телеком, 2009 г.- 400 с.

5 Сакс, С. Теория интеграла: С. Сакс -- Санкт-Петербург, Факториал Пресс, 2004 г.- 496 с.

Приложение А

Листинг программы

program INTEGRAL;

uses

Forms,

Int1 in 'Int1.pas' {Zapusk},

teo1 in 'teo1.pas' {Teorija1},

teo2 in 'teo2.pas' {Teorija2},

teo3 in 'teo3.pas' {Form5},

teo4 in 'teo4.pas' {Teorija4},

Int2 in 'Int2.pas' {Glavnaja},

gr1 in 'gr1.pas' {Grafik1},

gr2 in 'gr2.pas' {Grafik2},

int0 in 'int0.pas' {Zastavka},

gr3 in 'gr3.pas' {Grafik3},

Oprogr in 'Oprogr.pas' {Info},

spravka in 'spravka.pas' {Pom};

{$R *.res}

begin

Application.Initialize;

Zastavka:=TZastavka.Create(nil);

Application.CreateForm(TZapusk, Zapusk);

Application.CreateForm(TTeorija1, Teorija1);

Application.CreateForm(TTeorija2, Teorija2);

Application.CreateForm(TForm5, Form5);

Application.CreateForm(TTeorija4, Teorija4);

Application.CreateForm(TGlavnaja, Glavnaja);

Application.CreateForm(TGrafik1, Grafik1);

Application.CreateForm(TGrafik2, Grafik2);

Application.CreateForm(TGrafik3, Grafik3);

Application.CreateForm(TInfo, Info);

Application.CreateForm(TPom, Pom);

Application.Run;

end.

unit Int1;

interface

uses

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

Dialogs, StdCtrls, jpeg, ExtCtrls;

type

TZapusk = class(TForm)

text1: TLabel;

text2: TLabel;

text3: TLabel;

izo: TImage;

Knop1: TButton;

Knop2: TButton;

procedure Knop2Click(Sender: TObject);

procedure Knop1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Label1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Zapusk: TZapusk;

implementation

uses int0, Int2;

{$R *.dfm}

procedure TZapusk.Knop1Click(Sender: TObject);

begin

Glavnaja.show;

end;

procedure TZapusk.Knop2Click(Sender: TObject);

begin

close;

end;

procedure TZapusk.FormCreate(Sender: TObject);

begin

Zastavka.Show;

Zastavka.Repaint;

Sleep(5000);

Zastavka.Hide;

Zastavka.Free;

end;

procedure TZapusk.Label1Click(Sender: TObject);

begin

Glavnaja.show;

end;

end.

unit Int2;

interface

uses

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

Dialogs, ComCtrls, StdCtrls, ExtCtrls, Tabs, ImgList, ExtDlgs, Gauges,

Buttons, Menus;

type

TGlavnaja = class(TForm)

vkladki: TTabSet;

Notebook: TNotebook;

Menu: TMainMenu;

N1: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

group1: TGroupBox;

Knop1: TButton;

text1: TLabel;

text2: TLabel;

text3: TLabel;

group2: TGroupBox;

text4: TLabel;

Label5: TLabel;

text5: TLabel;

Label7: TLabel;

vvod1: TEdit;

vvod2: TEdit;

vvod3: TEdit;

group3: TGroupBox;

group4: TGroupBox;

Knop4: TButton;

text6: TLabel;

text7: TLabel;

text8: TLabel;

text9: TLabel;

Label12: TLabel;

text10: TLabel;

Label14: TLabel;

vvod4: TEdit;

vvod5: TEdit;

vvod6: TEdit;

group5: TGroupBox;

group6: TGroupBox;

text11: TLabel;

text12: TLabel;

text13: TLabel;

vvod7: TEdit;

vvod8: TEdit;

vvod9: TEdit;

text14: TLabel;

Label19: TLabel;

text15: TLabel;

Label21: TLabel;

Knop7: TButton;

N5: TMenuItem;

N2: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

Knop3: TButton;

Knop9: TButton;

Knop6: TButton;

Knop2: TButton;

spis3: TComboBox;

spis1: TComboBox;

spis2: TComboBox;

Knop5: TButton;

Knop8: TButton;

Label22: TLabel;

izo3: TImage;

izo1: TImage;

Label23: TLabel;

Label24: TLabel;

Label25: TLabel;

izo2: TImage;

Label26: TLabel;

procedure spis2Change(Sender: TObject);

procedure Knop5Click(Sender: TObject);

procedure Knop8Click(Sender: TObject);

procedure spis1Change(Sender: TObject);

procedure spis3Change(Sender: TObject);

procedure Knop2Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure Knop9Click(Sender: TObject);

procedure Knop3Click(Sender: TObject);

procedure Knop6Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure Knop7Click(Sender: TObject);

procedure Knop4Click(Sender: TObject);

procedure Knop1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure vkladkiClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Glavnaja: TGlavnaja;

implementation

uses Int1, gr1, gr2, gr3, teo1, teo2, teo3, teo4, Oprogr, spravka;

{$R *.dfm}

procedure TGlavnaja.Knop1Click(Sender: TObject);

Var a,b,x,h,f,f0,fn,sft,sum:real; i,n:integer;

begin

if (vvod1.Text='') then ShowMessage('Внимание! Вы не ввели количество разбиений. Пожалуйста, введите целое число!');

if (vvod2.Text='') then ShowMessage('Внимание! Вы не ввели начальное значение интеграла. Пожалуйста, введите число вещественного типа!');

if (vvod3.Text='') then ShowMessage('Внимание! Вы не ввели конечное значение интеграла. Пожалуйста, введите число вещественного типа!');

n:=StrToInt(vvod1.Text);

a:=StrToFloat(vvod2.Text);

b:=StrToFloat(vvod3.Text);

h:=(b-a)/n;

Label5.Caption:=FloatToStrF(h,ffFixed,4,3);

sum:=0;

for i:=1 to (n-1) do

begin

x:=a+i*h;

if (spis1.Text='1/sqrt((0.2*x*x)+1)') then

f:=1/sqrt((0.2*x*x)+1)

else

f:=1/sqrt(x*x+1);

sum:=sum+f;

end;

if (spis1.Text='1/sqrt((0.2*x*x)+1)') then

begin

f0:=1/sqrt((0.2*a*a)+1);

fn:=1/sqrt((0.2*b*b)+1)

end

else

if (spis1.Text='1/sqrt(x*x+1)') then

begin

f0:=1/sqrt((a*a)+1);

fn:=1/sqrt((b*b)+1);

end

else

if (spis1.Text='sin(x)') then

begin

f0:=sin(a);

fn:=sin(b);

end

else

if (spis1.Text='cos(x)') then

begin

f0:=cos(a);

fn:=cos(b);

end;

if (spis1.Text='') then ShowMessage('Внимание! Вы не выбрали функцию. Пожалуйста, выберите функцию!');

sft:=h*(f0+fn/2)*sum;

Label7.Caption:=FloatToStrF(sft,ffFixed,4,3);

end;

procedure TGlavnaja.Knop4Click(Sender: TObject);

Var s,s1,c,h,a,b,f,p,x,dx: real;

i, n: integer;

begin

if (vvod4.Text='') then ShowMessage('Внимание! Вы не ввели количество разбиений. Пожалуйста, введите целое число!');

if (vvod5.Text='') then ShowMessage('Внимание! Вы не ввели начальное значение интеграла. Пожалуйста, введите число вещественного типа!');

if (vvod6.Text='') then ShowMessage('Внимание! Вы не ввели конечное значение интеграла. Пожалуйста, введите число вещественного типа!');

n:=strtoint(vvod4.Text);

a:=strtofloat(vvod5.Text); // нижняя граница

b:=strtofloat(vvod6.Text); // верхняя граница

h:=(b-a)/n; // шаг

Label12.Caption:=FloatToStrF(h,ffFixed,4,3);

c:=1;

s:=0;

if spis2.Text='1/sqrt(x*x+1)' then

begin

f:=1/Sqrt((a+h*n)*(a+h*n)+1)+1/Sqrt(a*a+1)+1/Sqrt((a+h*n-h/2)*(a+h*n-h/2)+1);

for i:=1 to n-1 do

f:=f+2/Sqrt((a+h*i)*(a+h*i)+1)+4/Sqrt((a+h*i-h/2)*(a+h*i-h/2)+1);

p:=h*f/6;

label14.Caption:=floattostrf(p,ffFixed,6,4);

end;

if spis2.Text='e^-x*x' then

begin

for i:=1 to (n-1) do

begin

x:=x+h;

s:=s+(3+c)*Exp(-x*x);

c:=-c;

end;

s1:=Exp(-a*a)+Exp(-b*b);

s:=h*(s1+s)/3;

label14.Caption:=floattostrf(s,ffFixed,6,4);

end;

if (spis2.Text='') then ShowMessage('Внимание! Вы не выбрали функцию. Пожалуйста, выберите функцию!');

end;

procedure TGlavnaja.Knop7Click(Sender: TObject);

var i,n: integer; x,h,a,b,f,p,pogr: real;

begin

if (vvod7.Text='') then ShowMessage('Внимание! Вы не ввели количество разбиений. Пожалуйста, введите целое число!');

if (vvod8.Text='') then ShowMessage('Внимание! Вы не ввели начальное значение интеграла. Пожалуйста, введите число вещественного типа!');

if (vvod9.Text='') then ShowMessage('Внимание! Вы не ввели конечное значение интеграла. Пожалуйста, введите число вещественного типа!');

n:=strtoint(vvod7.Text);

a:=strtofloat(vvod8.Text); // нижняя граница

b:=strtofloat(vvod9.Text); // верхняя граница

h:=(b-a)/n; // шаг

Label19.Caption:=FloatToStrF(h,ffFixed,4,3);

pogr:=0;

for i:=1 to (n-1) do

begin

x:=a+h*(i-0.5);

if (spis3.Text='1/sqrt(x*x+1)') then

f:=1/sqrt(x*x+1)

else

if (spis3.Text='sin(x)') then

f:=sin(x)

else if (spis3.Text='1/sqrt(0.2*x*x+1)') then

f:=1/sqrt(0.2*x*x+1)

else

f:=cos(x);

if (spis3.Text='') then ShowMessage('Внимание! Вы не выбрали функцию. Пожалуйста, выберите функцию!');

pogr:=pogr+f;

end;

label21.Caption:=floattostrf(pogr,ffFixed,6,4);

end;

procedure TGlavnaja.Knop3Click(Sender: TObject);

begin

Grafik1.Show;

end;

procedure TGlavnaja.Knop9Click(Sender: TObject);

begin

Grafik3.Show;

end;

procedure TGlavnaja.Knop6Click(Sender: TObject);

begin

Grafik2.Show;

end;

procedure TGlavnaja.Knop2Click(Sender: TObject);

begin

vvod1.Text:=' ';

vvod2.Text:=' ';

vvod3.Text:=' ';

label5.Caption:='Неизвестная величина';

label7.Caption:='Неизвестная величина';

end;

procedure TGlavnaja.Knop5Click(Sender: TObject);

begin

vvod4.Text:=' ';

vvod5.Text:=' ';

vvod6.Text:=' ';

label12.Caption:='Неизвестная величина';

label14.Caption:='Неизвестная величина';

end;

procedure TGlavnaja.Knop8Click(Sender: TObject);

begin

vvod7.Text:=' ';

vvod8.Text:=' ';

vvod9.Text:=' ';

label19.Caption:='Неизвестная величина';

label21.Caption:='Неизвестная величина';

end;

procedure TGlavnaja.spis3Change(Sender: TObject);

begin

if spis3.Text='1/sqrt(0.2*x*x+1)' then

izo3.Picture.LoadFromFile('in1.bmp')

else

if spis3.Text='1/sqrt(x*x+1)' then

izo3.Picture.LoadFromFile('in.bmp')

else

if spis3.Text='cos(x)' then

izo3.Picture.LoadFromFile('in3.bmp')

else

if spis3.Text='sin(x)' then

izo3.Picture.LoadFromFile('in2.bmp');

end;

procedure TGlavnaja.spis1Change(Sender: TObject);

begin

if spis1.Text='1/sqrt((0.2*x*x)+1)' then

izo1.Picture.LoadFromFile('in1.bmp')

else

if spis1.Text='1/sqrt(x*x+1)' then

izo1.Picture.LoadFromFile('in.bmp')

else

if spis1.Text='cos(x)' then

izo1.Picture.LoadFromFile('in3.bmp')

else

if spis1.Text='sin(x)' then

izo1.Picture.LoadFromFile('in2.bmp');

end;

procedure TGlavnaja.spis2Change(Sender: TObject);

begin

if spis2.Text='1/sqrt(x*x+1)' then

izo2.Picture.LoadFromFile('in.bmp')

else

if spis2.Text='e^-x*x' then

izo2.Picture.LoadFromFile('in4.bmp');

end;

procedure TGlavnaja.FormCreate(Sender: TObject);

begin

vkladki.Tabs := Notebook.Pages;

end;

procedure TGlavnaja.N10Click(Sender: TObject);

begin

Form5.Show;

end;

procedure TGlavnaja.N2Click(Sender: TObject);

begin

Info.Show;

end;

procedure TGlavnaja.N5Click(Sender: TObject);

begin

Zapusk.Close;

end;

procedure TGlavnaja.N6Click(Sender: TObject);

begin

Pom.Show;

end;

procedure TGlavnaja.N7Click(Sender: TObject);

begin

Teorija1.Show;

end;

procedure TGlavnaja.N8Click(Sender: TObject);

begin

Teorija2.Show;

end;

procedure TGlavnaja.N9Click(Sender: TObject);

begin

Teorija4.Show;

end;

procedure TGlavnaja.vkladkiClick(Sender: TObject);

begin

Notebook.PageIndex := vkladki.TabIndex;

end;

end.

unit int0;

interface

uses

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

Dialogs, ExtCtrls, jpeg;

type

TZastavka = class(TForm)

izo: TImage;

procedure Timer1Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Zastavka: TZastavka;

implementation

uses Int1;

{$R *.dfm}

procedure TZastavka.Timer1Timer(Sender: TObject);

begin

close;

end;

end.

unit gr1;

interface

uses

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

Dialogs, StdCtrls;

type

TGrafik1 = class(TForm)

procedure FormResize(Sender: TObject);

procedure FormPaint(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

{ Function f(x:real):real;

procedure GrOfFunc; }

end;

var

Grafik1: TGrafik1;

implementation

uses Int2;

{$R *.dfm}

Function f(x:real):real; // Функция, график которой надо построить

begin

if (Glavnaja.spis1.Text='1/sqrt((0.2*x*x)+1)') then

f:=1/sqrt((0.2*x*x)+1)

else if (Glavnaja.spis1.Text='1/sqrt(x*x+1)') then

f:=1/sqrt(x*x+1)

else if (Glavnaja.spis1.Text='sin(x)') then

f:=sin(x)

else if (Glavnaja.spis1.Text='cos(x)') then

f:=cos(x);

end;

procedure GrOfFunc; // строит график функции

var

x1,x2:real; // границы изменения аргумента функции

y1,y2:real; // границы изменения значения функции

x:real; // аргумент функции

y:real; // значение функции в точке x

dx:real; // приращение аргумента

l,b:integer; // левый нижний угол области вывода графика

w,h:integer; // ширина и высота области вывода графика

mx,my:real; // масштаб по осям X и Y

x0,y0:integer; // точка - начало координат

n:integer;

begin

// область вывода графика

l:=10; // X - координата левого верхнего угла

b:=Grafik1.ClientHeight-20; // Y - координата левого верхнего угла

h:=Grafik1.ClientHeight-40; // высота

w:=Grafik1.Width-40; // ширина

n:=StrToInt(Glavnaja.vvod1.Text);

x1:=StrToFloat(Glavnaja.vvod2.Text); // нижняя граница диапазона аргумента

x2:=StrToFloat(Glavnaja.vvod3.Text); // верхняя граница диапазона аргумента

dx:=(x2-x1)/n; // шаг аргумента

// найдем максимальное и минимальное значения

// функции на отрезке [x1,x2]

y1:=f(x1); // минимум

y2:=f(x1); // максимум

x:=x1;

repeat

y := f(x);

if y < y1 then y1:=y;

if y > y2 then y2:=y;

x:=x+dx;

until (x>=x2);

// вычислим масштаб

my:=h/abs(y2-y1); // масштаб по оси Y

mx:=w/abs(x2-x1); // масштаб по оси X

// оси

x0:=l;

y0:=b-Abs(Round(y1*my));

with Grafik1.Canvas do

begin

// оси

MoveTo(l,b);LineTo(l,b-h);

MoveTo(x0,y0);LineTo(x0+w,y0);

TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));

TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3));

// построение графика

x:=x1;

repeat

y:=f(x);

Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;

x:=x+dx;

until (x>=x2);

end;

end;

procedure TGrafik1.FormPaint(Sender: TObject);

begin

GrOfFunc;

end;

procedure TGrafik1.FormResize(Sender: TObject);

begin

// очистить форму

Grafik1.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));

// построить график

GrOfFunc;

end;

end.

unit gr2;

interface

uses

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

Dialogs, StdCtrls;

type

TGrafik2 = class(TForm)

procedure FormResize(Sender: TObject);

procedure FormPaint(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Grafik2: TGrafik2;

implementation

uses Int2;

{$R *.dfm}

Function f(x:real):real; // Функция, график которой надо построить

begin

if (Glavnaja.spis1.Text='1/sqrt((0.2*x*x)+1)') then

f:=1/sqrt((0.2*x*x)+1)

else

f:=exp(-x*x);

end;

procedure GrOfFunc; // строит график функции

var

x1,x2:real; // границы изменения аргумента функции

y1,y2:real; // границы изменения значения функции

x:real; // аргумент функции

y:real; // значение функции в точке x

dx:real; // приращение аргумента

l,b:integer; // левый нижний угол области вывода графика

w,h:integer; // ширина и высота области вывода графика

mx,my:real; // масштаб по осям X и Y

x0,y0:integer; // точка - начало координат

n:integer;

begin

// область вывода графика

l:=10; // X - координата левого верхнего угла

b:=Grafik2.ClientHeight-20; // Y - координата левого верхнего угла

h:=Grafik2.ClientHeight-40; // высота

w:=Grafik2.Width-40; // ширина

n:=StrToInt(Glavnaja.vvod4.Text);

x1:=StrToFloat(Glavnaja.vvod5.Text); // нижняя граница диапазона аргумента

x2:=StrToFloat(Glavnaja.vvod6.Text); // верхняя граница диапазона аргумента

dx:=(x2-x1)/n; // шаг аргумента

// найдем максимальное и минимальное значения

// функции на отрезке [x1,x2]

y1:=f(x1); // минимум

y2:=f(x1); // максимум

x:=x1;

repeat

y := f(x);

if y < y1 then y1:=y;

if y > y2 then y2:=y;

x:=x+dx;

until (x>=x2);

// вычислим масштаб

my:=h/abs(y2-y1); // масштаб по оси Y

mx:=w/abs(x2-x1); // масштаб по оси X

// оси

x0:=l;

y0:=b-Abs(Round(y1*my));

with Grafik2.Canvas do

begin

// оси

MoveTo(l,b);LineTo(l,b-h);

MoveTo(x0,y0);LineTo(x0+w,y0);

TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));

TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3));

// построение графика

x:=x1;

repeat

y:=f(x);

Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;

x:=x+dx;

until (x>=x2);

end;

end;

procedure TGrafik2.FormPaint(Sender: TObject);

begin

GrOfFunc;

end;

procedure TGrafik2.FormResize(Sender: TObject);

begin

// очистить форму

Grafik2.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));

// построить график

GrOfFunc;

end;

end.

unit gr3;

interface

uses

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

Dialogs;

type

TGrafik3 = class(TForm)

procedure FormResize(Sender: TObject);

procedure FormPaint(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Grafik3: TGrafik3;

implementation

uses Int2;

{$R *.dfm}

Function f(x:real):real; // Функция, график которой надо построить

begin

if (Glavnaja.spis3.Text='1/sqrt(x*x+1)') then

f:=1/sqrt(x*x+1)

else

if (Glavnaja.spis3.Text='sin(x)') then

f:=sin(x)

else

f:=cos(x);

end;

procedure GrOfFunc; // строит график функции

var

x1,x2:real; // границы изменения аргумента функции

y1,y2:real; // границы изменения значения функции

x:real; // аргумент функции

y:real; // значение функции в точке x

dx:real; // приращение аргумента

l,b:integer; // левый нижний угол области вывода графика

w,h:integer; // ширина и высота области вывода графика

mx,my:real; // масштаб по осям X и Y

x0,y0:integer; // точка - начало координат

n:integer;

begin

// область вывода графика

l:=10; // X - координата левого верхнего угла

b:=Grafik3.ClientHeight-20; // Y - координата левого верхнего угла

h:=Grafik3.ClientHeight-40; // высота

w:=Grafik3.Width-40; // ширина

n:=StrToInt(Glavnaja.vvod7.Text);

x1:=StrToFloat(Glavnaja.vvod8.Text); // нижняя граница диапазона аргумента

x2:=StrToFloat(Glavnaja.vvod9.Text); // верхняя граница диапазона аргумента

dx:=(x2-x1)/n; // шаг аргумента

// найдем максимальное и минимальное значения

// функции на отрезке [x1,x2]

y1:=f(x1); // минимум

y2:=f(x1); // максимум

x:=x1;

repeat

y := f(x);

if y < y1 then y1:=y;

if y > y2 then y2:=y;

x:=x+dx;

until (x>=x2);

// вычислим масштаб

my:=h/abs(y2-y1); // масштаб по оси Y

mx:=w/abs(x2-x1); // масштаб по оси X

// оси

x0:=l;

y0:=b-Abs(Round(y1*my));

with Grafik3.Canvas do

begin

// оси

MoveTo(l,b);LineTo(l,b-h);

MoveTo(x0,y0);LineTo(x0+w,y0);

TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));

TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3));

// построение графика

x:=x1;

repeat

y:=f(x);

Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;

x:=x+dx;

until (x>=x2);

end;

end;

procedure TGrafik3.FormPaint(Sender: TObject);

begin

GrOfFunc;

end;

procedure TGrafik3.FormResize(Sender: TObject);

begin

// очистить форму

Grafik3.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));

// построить график

GrOfFunc;

end;

end.

unit teo1;

interface

uses

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

Dialogs, StdCtrls, jpeg, ExtCtrls;

type

TTeorija1 = class(TForm)

izo: TImage;

Knop1: TButton;

procedure Knop1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Teorija1: TTeorija1;

implementation

{$R *.dfm}

procedure TTeorija1.Knop1Click(Sender: TObject);

begin

close;

end;

end.

unit teo2;

interface

uses

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

Dialogs, jpeg, ExtCtrls, StdCtrls;

type

TTeorija2 = class(TForm)

izo: TImage;

Knop: TButton;

procedure KnopClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Teorija2: TTeorija2;

implementation

{$R *.dfm}

procedure TTeorija2.KnopClick(Sender: TObject);

begin

close;

end;

end.

unit teo3;

interface

uses

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

Dialogs, jpeg, ExtCtrls, StdCtrls;

type

TForm5 = class(TForm)

Image1: TImage;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);

begin

close;

end;

end.

unit teo4;

interface

uses

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

Dialogs, jpeg, ExtCtrls, StdCtrls;

type

TTeorija4 = class(TForm)

izo: TImage;

Knop: TButton;

procedure KnopClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Teorija4: TTeorija4;

implementation

{$R *.dfm}

procedure TTeorija4.KnopClick(Sender: TObject);

begin

close;

end;

Размещено на Allbest.ru


Подобные документы

  • Разработка программы, выполняющей интегрирование методом входящих прямоугольников с кратностями и методом Симпсона. Расчет определённого интеграла приближенным и точным методами. Оценка погрешности при вычислении приблизительного значения интеграла.

    контрольная работа [71,7 K], добавлен 13.02.2016

  • Численные методы. Создание программного продукта, использование которого позволит одновременно исследовать два метода вычисления определенных интегралов: метод трапеций и метод Симпсона. Рассмотрен ход вычисления интеграла в виде кода программы.

    курсовая работа [834,6 K], добавлен 14.04.2019

  • Метод хорд решения нелинейных уравнений. Вычисление интеграла методом Симпсона. Процесс численного решения уравнения. Окно программы расчета корней уравнения методом хорд. Алгоритм вычисления интеграла в виде блок-схемы. Выбор алгоритма для вычислений.

    курсовая работа [832,6 K], добавлен 24.07.2012

  • Создание программного модуля для вычисления интеграла по формулам трапеции и Симпсона, определяя шаг интегрирования по оценке остаточного члена. Для разработки используется табличный процессор Excel и язык программирования Visual Basic for Application.

    курсовая работа [159,7 K], добавлен 30.08.2010

  • Теория вычисления интеграла и описание используемых численных методов (метод левых и правых прямоугольников, метод трапеции, метод Симпсона). Расчеты в пакете Matlab. Отчет о результатах вычисления в MS Excel. Описание приложения созданного в Delphi.

    курсовая работа [2,8 M], добавлен 18.08.2014

  • Создание приложения, демонстрирующего решение нелинейного уравнения методом хорд, вычисление интеграла методом Симпсона. Характеристика системы программирования. Разработка мощных систем для работы с локальными и удаленными базами данных с помощью Delphi.

    дипломная работа [846,0 K], добавлен 22.09.2012

  • Разработка программы нахождения значения определенного интеграла с помощью метода трапеций. Оценка абсолютной погрешности метода. Использование среды программирования Visual Studio Community 2015 для написания программы. Работа с графическим интерфейсом.

    курсовая работа [573,8 K], добавлен 17.03.2016

  • MPI - библиотека передачи сообщений на языке программирования C/C++, ее переносимость, стандартизация, эффективная работа, функциональность. Форматы фактических вызовов MPI. Метод прямоугольников для приближенного вычисления определенного интеграла.

    курсовая работа [286,0 K], добавлен 20.06.2012

  • Вычисление определенных интегралов методом Симпсона. Функциональная схема программного комплекса. Реализация функции разбора произвольно заданных математических функций. Методика сохранения графика в графический файл. Интерфейс программного комплекса.

    курсовая работа [1,7 M], добавлен 15.06.2009

  • Проверить условие сходимости и записать расчетные формулы для нахождения корня уравнения. Составить блок-схему алгоритма, программу решения задачи. Вычисления определенного интеграла методом Симпсона. Построить график функции Y=1/sqr(3sin(x)+2cos(x)).

    курсовая работа [29,6 K], добавлен 02.10.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.