СОДЕРЖАНИЕ
ВВЕДЕНИЕ. 3
1 ОБЩИЕ СВЕДЕНИЯ…………………………………………………….4
1.1 Метод прямоугольника……………………………………………...4
1.2 Метод Трапеций……………………………………………………..5
1.3 Метод парабол(Симпсона)………………………………………….5
1.4 Метод Гаусса………………………………………………………...5
1.5 Метод Монте-Карло…………………………………………………7
1.6 Метод Чебышева………………………………………………….....8
2
ТЕХНИЧЕСКОЕ ЗАДАНИЕ…………………………………………….9
2.1
Основание для разработки. 9
2.2
Область применения. 9
2.3 Требования к программе и аппаратному обеспечению.. 9
3
ОПИСАНИЕ ПРОГРАММЫ.. 10
3.1
Методы вычисления интеграла. 10
3.2
Описание алгоритма программы.. 11
4
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ.. 17
ЗАКЛЮЧЕНИЕ. 22
СПИСОК
ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ. 23
Многие инженерные задачи, задачи физики,
геометрии и многих других областей человеческой деятельности приводят к
необходимости вычислять определенный интеграл. Для приближенного вычисления
интеграла существует много численных методов.
В данной курсовой работе создана программа нахождения определенного интеграла методом прямоугольников,
методом трапеций и методом Симпсона.
Для реализации программного
продукта использовался визуальный язык программирования Borland Delphi 7. Delphi – это прекрасная система визуального
объектно-ориентированного программирования, одинаково радующая и новичков и
ассов. Новичку она позволяет с небольшими затратами сил и времени создавать
прикладные программы. Впрочем, теперь в Delphi имеется
возможность создавать кросс-платформенные программы, которые могут работать и в
среде Windows, и в среде Linux. Ну а
для опытного профессионала Delphi открывает неограниченные
возможности создавать сколь угодно сложные приложения.
Программа
удобна в использовании, легка в усвоении и имеет простой интерфейс.
1
ОБЩИЕ СВЕДЕНИЯ
1.1 Метод
прямоугольников
Разделим отрезок [a; b] на n равных частей, т.е. на n
элементарных отрезков. Длина каждого элементарного отрезка . Точки деления будут: x0=a; x1=a+h;
x2=a+2×h, ..., xn-1=a+(n-1)×h; xn=b. Эти числа будем называть
узлами. Вычислим значения функции f(x) в узлах, обозначим их y0, y1,
y2, ... , yn. C
тало быть, y
0=f
(a
), y
1=f
(x
1), y
2=f
(x
2), ... , y
n=f(b).
Числа y0, y1, y2, ... , yn
являются ординатами точек графика функции, соответствующих абсциссам x0,
x1, x2, ... , xn (рис. 2). Из рис.
2 следует, что площадь криволинейной трапеции приближенно заменяется площадью
многоугольника, составленного из n прямоугольников. Таким образом, вычисление
определенного интеграла сводится к нахождению суммы n элементарных
прямоугольников.
Рис. 2
(3)
(4)
Формула (3)
называется формулой левых прямоугольников.
1.2 Метод трапеций
Формула (5) означает,
что площадь криволинейной трапеции заменяется площадью многоугольника,
составленного из n трапеций (рис. 1.4); при этом кривая заменяется вписанной в
нее ломаной.
Геометрически
иллюстрация формулы Симпсона состоит в том, что на каждом из сдвоенных
частичных отрезков заменяем дугу данной кривой дугой графика квадратного
трехчлена.
Разобьем отрезок интегрирования [a; b] на 2×n равных частей длины . Обозначим точки разбиения x0=a;
x1=x0+h, ... , xi=x0+i×h, ..., x2n=b.
Значения функции f в точках xi обозначим yi, т.е. yi=f(xi).
Тогда согласно методу Симпсона
(6)
1.4 Метод Гаусса
Описанные выше методы используют фиксированные точки отрезка (концы и
середину) и имеют низкий порядок точности (0 — методы правых и левых прямоугольников, 1 — методы
средних прямоугольников и трапеций, 3 — метод парабол (Симпсона)). Если мы
можем выбирать точки, в которых мы вычисляем значения функции ,
то можно при том же количестве вычислений подынтегральной функции получить
методы более высокого порядка точности. Так для двух (как в методе трапеций)
вычислений значений подынтегральной функции, можно получить метод уже не
второго, а третьего порядка точности:
(7)
В общем случае,
используя точек, по формуле можно получить метод с порядком
точности , т.е. получаются точные значения для
полиномов степени не выше .
Значения узлов метода Гаусса по точкам являются корнями полинома
Лежандра степени . Значения весов
вычисляются по формуле ,
где - первая производная полинома
Лежандра.
Для узлы
и веса имеют следующие значения : веса : .
(Полином определен
на отрезке ).Наиболее известен метод Гаусса по
пяти точкам.
Недостаток метода
Гаусса состоит в том, что он не имеет лёгкого (с вычислительной точки зрения)
пути оценки погрешности полученного значения интеграла. Использование правила
Рунге требует вычисления подынтегральной функции примерно в таком же числе
точек, не давая при этом практически никакого выигрыша точности, в отличие от
простых методов, где точность увеличивается в несколько раз при каждом новом
разбиении. Кронродом был предложен
следующий метод оценки значения интеграла
, (8)
где —
узлы метода Гаусса по точкам, а параметров , , подобраны таким
образом, чтобы порядок точности метода был равен .
Тогда для оценки
погрешности можно использовать эмпирическую формулу:
, (9)
где —
приближённое значение интеграла, полученное методом Гаусса по точкам. Библиотеки gsl и SLATEC для вычисления
определённых интегралов содержат подпрограммы, использующие метод Гаусса —
Кронрода по 15, 21, 31, 41, 51 и 61 точкам. Библиотека ALGLIB использует метод Гаусса — Кронрода
по 15 точкам.
1.5 Метод Монте-Карло
Численное
интегрирование функции методом Монте-Карло
Для определения
площади под графиком функции можно использовать следующий стохастический
алгоритм:
·
ограничим функцию прямоугольником (n-мерным
параллелепипедом в случае многих измерений), площадь которого можно
легко вычислить;
·
«набросаем» в этот прямоугольник (параллелепипед)
некоторое количество точек ( штук), координаты которых будем выбирать
случайным образом;
·
определим число точек ( штук), которые
попадут под график функции;
·
площадь области, ограниченной функцией и осями
координат, даётся выражением ; (10)
Этот алгоритм
требует определения экстремумов функции на интервале и не использует
вычисленное точное значение функции кроме как в сравнении,
вследствие чего непригоден для практики. Приведённые в основной статье варианты
метода Монте-Карло избавлены от этих недостатков.
Для малого числа
измерений интегрируемой функции производительность Монте-Карло интегрирования
гораздо ниже, чем производительность детерминированных методов. Тем не менее, в
некоторых случаях, когда функция задана неявно, а необходимо определить
область, заданную в виде сложных неравенств, стохастический метод может
оказаться более предпочтительным.
1.6 Метод Чебышева
Интегрирование при
бесконечных пределах. Для интегрирования по бесконечным
пределам нужно ввести неравномерную сетку, шаги которой нарастают при
стремлении к бесконечности, либо можно сделать такую замену переменных в
интеграле, после которой пределы будут конечны. Аналогичным образом можно
поступить, если функция особая на концах отрезка интегрирования
2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ
2.1 Основание для разработки
Основанием для разработки является задание на выполнение
курсовой работы по предмету ОАиП.
2.2 Область применения
Программа должна быть интересна любому пользователю
компьютера. А также любому кто программирует на языке Delphi, изучает
численные методы.
Необходимо
вычислить приближенный интеграл методом прямоугольников, методом трапеций,
методом Симпсона, методом Гаусса, методом Монте-Карло и методом Чебышева.
Минимальные
требования к системе:
процессор INTEL
PENTIUM II и выше или аналогичные процессоры других производителей;
¾ оперативная память 20Мбайт и выше;
¾ не менее 5 Мb свободного пространства на жестком диске;
¾ монитор SVGA;
¾ принтер;
¾ клавиатура;
¾ мышь.
Для корректной
работы программного продукта необходимо следующее программное обеспечение:
операционная система Windows 9х и выше.
2
ОПИСАНИЕ ПРОГРАММЫ
Многие инженерные
задачи, задачи физики, геометрии и многих других областей человеческой
деятельности приводят к необходимости вычислять определенный интеграл вида
(1)
где f(x) данная
функция, непрерывная на отрезке [a; b]. Если функция f(x) задана формулой и мы
умеем найти неопределенный интеграл F(x), то определенный интеграл вычисляется
по формуле Ньютона-Лейбница:
(2)
Если же
неопределенный интеграл данной функции мы найти не умеем, или по какой-либо
причине не хотим воспользоваться формулой (2), или если функция f(x) задана
графически или таблицей, то для вычисления определенного интеграла применяют
приближенные формулы. Для приближенного вычисления интеграла (1) существует
много численных методов, из которых рассмотрим три основных: 1) метод
прямоугольников; 2) метод трапеций; 3) метод Симпсона.
При вычислении
интеграла следует помнить, каков геометрический смысл определенного интеграла.
Если f(x)³0
на отрезке [a; b], то численно
равен площади фигуры, ограниченной графиком функции y=f(x), отрезком оси
абсцисс, прямой x=a и прямой x=b (рис. 1).
Таким образом,
вычисление интеграла равносильно вычислению площади криволинейной трапеции.
Вычислить
определенный интеграл функции , при n = 5, используя метод прямоугольников, метод трапеций и метод Симпсона.
Ниже представлен код
программы, реализованный на визуальном языке программирования для вычисления
интеграла методом прямоугольников.
Form1: TForm1;
a,b,n,i:integer;
h,s,x,y:real;
implementation
uses Unit4;
{$R *.dfm}
procedure
TForm1.BitBtn1Click(Sender: TObject);
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
n:=StrToInt(Edit3.Text);
h:=(b-a)/n;
s:=0;
for i:=0 to n do
begin
x:=a+(i*h);
y:=1/(1+x);
s:=s+(y*h);
end;
Edit4.Text:=FloatToStr(s);
end; end.
Ниже представлен код
программы, реализованный на визуальном языке программирования для вычисления
интеграла методом трапеций.
procedure
TForm2.BitBtn1Click(Sender: TObject);
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
n:=StrToInt(Edit3.Text);
h:=(b-a)/n;
s:=0; s1:=0;
y1:=1/(1+a);
y2:=1/(1+b);
for i:=1 to n-1 do
begin
x:=a+(i*h);
y:=1/(1+x);
s1:=s1+y;
end;
s:=h*(((y1+y2)/2)+s1);
Edit4.Text:=FloatToStr(s);
end; end.
Ниже представлен код
программы, реализованный на визуальном языке программирования для вычисления
интеграла методом Симпсона.
procedure
TForm3.BitBtn1Click(Sender: TObject);
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
n:=StrToInt(Edit3.Text);
h:=(b-a)/(2*n);
s:=0; s1:=0;
y1:=1/(1+a);
y2:=1/(1+b);
for i:=0 to (2*n)-1 do
begin
x:=a+(i*h);
y:=1/(1+x);
s1:=s1+y;
end;
s:=h*(((y1+y2)/2)+s1);
Edit4.Text:=FloatToStr(y2);
end; end.
Ниже представлен код
программы, реализованный на визуальном языке программирования для вычисления
интеграла методом Гаусса.
procedure
TForm6.BitBtn1Click(Sender: TObject);
var
a: mat;
b: vec;
i, j : integer;
begin
{Заполнение матрицы
a данными}
for i := 0 to
StringGrid1.ColCount-1 do
begin
for j :=0 to
StringGrid1.RowCount-1 do
begin
if StringGrid1.Cells[i, j] =
'' then
begin
ShowMessage('Матрица не может содержат пустых элементов');
Exit;
end;
a[j+1, i+1] :=
StrToFloat(StringGrid1.Cells[i, j]);
end;
end;
{Заполнение
матрицы b данными}
for i := 0 to
StringGrid2.RowCount-1 do
begin
if StringGrid2.Cells[0, i] =
'' then
begin
ShowMessage('Матрица не может содержат пустых элементов');
Exit;
end;
b[i+1] :=
StrToFloat(StringGrid2.Cells[0, i]);
end;
Ниже представлен код
программы, реализованный на визуальном языке программирования для вычисления
интеграла методом Монте-Карло.
Procedure Graphic( var right,
down: integer;
var X_min, X_max, Y_min, Y_max,
Kx, Ky: real);
type arr=array[1..n] of real;
var
X, Y: arr; dx: real;
i: integer;
begin
dx:=(B-A)/(n-1);
for i:=1 to n do begin
X[i]:=A+dx*(i-1);
Y[i]:=FUNC(X[i]);
end;
{Нахождение
максимального и минимального значений функции и аргумента}
X_max:=B; X_min:=A;
Y_max:=Y[1]; Y_min:=Y[1];
for i:=2 to n do begin
if Y_max < Y[i] then
Y_max:=Y[i];
if Y_min > Y[i] then
Y_min:=Y[i];
end;
Ниже представлен код
программы, реализованный на визуальном языке программирования для вычисления
интеграла методом Чебышева.
procedure
TForm8.BitBtn1Click(Sender: TObject);
var
a:array[0..20] of real;
x,z:real;
k:integer;
begin
Memo1.Clear;
x:=StrToInt(Edit1.Text);
k:=0;
a[k]:=1;
Memo1.Lines.Add(FloatToStr(a[k]));
k:=1;
a[k]:=x;
Memo1.Lines.Add(FloatToStr(a[k]));
for k:=2 to 20 do
begin
a[k]:=2*x*a[k-1]-a[k-2];
Memo1.Lines.Add(FloatToStr(a[k]));
end;
k:=StrToInt(Edit2.Text);
Edit3.Text:=Memo1.lines[k-1];
end;
При запуске
программы появляется основное окно программы, с помощью которого можно
перемещаться на другие формы:
Рисунок 1. Главное окно
При нажатии на
кнопку «Метод прямоугольников» откроется окно, в котором вычисляется
определенный интеграл методом прямоугольников (см.Рис. 2), по исходным данным: вычисление
интеграла на отрезке [а,b], n –
количество отрезков, разделяющие данную фигуру.
Рисунок 2. Метод прямоугольников
При нажатии на
кнопку «Метод трапеций» откроется окно, в котором вычисляется определенный
интеграл методом трапеций.
Рисунок 3. Метод трапеций
При нажатии на
кнопку «Метод Симпсона» откроется окно, в котором вычисляется определенный
интеграл методом Симпсона.
Рисунок 4. Метод Симпсона
При нажатии на кнопку «Метод Гаусса» откроется окно, в котором вычисляется
определенный интеграл методом Гаусса.
Рисунок 5. Метод Гаусса
При нажатии на кнопку «Метод Монте-Карло» откроется окно, в котором
вычисляется определенный интеграл методом Монте-Карло.
Рисунок 6. Метод Монте-Карло
При нажатии на кнопку «Метод Чебышева» откроется окно, в котором
вычисляется определенный интеграл методом Чебышева.
Рисунок 7. Метод Чебышева
При нажатии на
кнопку «Выход» программа закрывается.
В
рамках курсовой работы была разработана программа вычисления определенного
интеграла различными методами. В ходе написания программы
был использован визуальный язык программирования. В результате выполненной разработки можно сделать следующие
выводы:
1. При разработке приложения был пройден полный цикл
проектирования программы от постановки задачи до сдачи программного продукта в
эксплуатацию.
2.
Программа имеет доступный и понятный интерфейс, и не
требует больших ресурсов компьютера.
1. Абрамов С.А., Гнездилова Г.Г., Капустина
Е.Н., Селюн М.И. Задачи по программированию. -М.: Наука, 1988.
2. Зуев Е.А. Язык программирования
TurboPascal 7.0. - М.: Унитех, 1992.
3. Фаронов В.В. TurboPascal 7.0.
Начальный курс: Учебное пособие. - М.:Нолидж, 1998.
4. Белецкий Я. Турбо Паскаль с
графикой для персональных
компьютеров. -М.:
Машиностроение, 1991.
5. Фаронов В.В. Delphi 6. Учебный курс. – М.: Издатель Молгачева
С.В., 2001. – 672с.
6. Митчелл Ю., Керман К.
Программирование и отладка в Delphi.
Пер. с англ. –
М.: Издательский дом «Вильяме», 2003. – 672с.: ил.
7. Дарахвелидзе Г.П., Марков Е.П.
Программирование в Delphi 7. – СПб.: БХВ-Петербург, 2003. – 784с.:
ил.
8. Архангельский А.Я. Программирование в Delphi. Учебник по классическим версиям Delphi. – М.: Издательство «Бином», 2006г. –
1151с.
9. Хомоненко А.Д. и др. Delphi 7. Под общ. ред. А.Д. Хомоненко. – СПб.: БХВ-Петербург, 2003. –
1216с.
10. Дарахвелидае П. Г., Марков Е. П. Программирование в Delphi
7. - СПб.: БХВ-Петербург, 2003. - 784 с: ил.;
11. Осипов Д. Delphi. Профессиональное программирование. –
СПб.: Символ-Плюс, 2006. - 1056 с., ил.;
12. Осипов Д. Л. Delphi XE2. - СПб.: БХВ-Петербург, 2012. -
912 с.: ил.;
13. Стивене Р. Delphi. Готовые алгоритмы / Род Стивене; Пер. с
англ. Мерещука П. А. - 2-е изд., стер. - М.: ДМК Пресс ; СПб.: Питер, 2004. -
384 С.: ил.;
14. М.В. Сухарев Основы Delphi. Профессиональный подход -
СПб.: Наука и Техника, 2004. - 600 с.: ил.;
15. Культин Н. Основы программирования в Delphi 7. - СПб.:
БХВ-Петербург, 2003. - 608 с.: ил;
16. Фаронов В.В. DELPHI 6. изд. «Номирис», 2001.;
17. Фленов М. Библия для программистов в среде DELPHI, 2002.
18. Культин Н. Б. Delphi в задачах и примерах. - 3-е изд.,
перераб. и доп. - СПб.: БХВ-Петербург, 2012. - 288 с.: ил.;
19. Дантеманн Дж., Мишел Дж., Тейлор Д. Программирование на
языке Delphi,1995.;
20. Каханер Д., Моулер К., Нэш С.
Численные методы и программное обеспечение (пер. с англ.).. - Изд. второе,
стереотип.. - М.: Мир, 2001. -575 с. .
21. Самарский А. А., Гулин А. В. Численные методы: Учеб. пособие для вузов. - М.:
Наука. Гл. ред. физ-мат. лит., 1989.- 432 с. .
22. Пискунов Н. С.
Дифференциальное и интегральное исчисления : Учеб. пособие для втузов: В 2
т. - 13-е изд.. - М.: Наука. Гл. ред. физ-мат. лит., 1985. - 432 с.
23. Болтачев Г.Ш. Численные методы в
теплофизике. Курс лекций Лекция 3: Численное интегрирование
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.