Методы вычисления приближенного значения интеграла
Требования к аппаратным ресурсам персонального компьютера. Расчет цены и прибыли на программное средство. Процедура нахождения значения интеграла методом Симпсона, трапеции, прямоугольников. Формы для ввода и вывода данных с доступным интерфейсом.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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.2016MPI - библиотека передачи сообщений на языке программирования 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