С О Д Е Р Ж А Н И Е
TOC o f t «ЗАГОЛОВОК 4;4» *MERGEFORMAT Введение… 2
1.Постановка задачи… PAGEREF _Toc501213173 h 3
2.Математическая часть… 4
3.Описание метода решения задачи… 9
4.Описание алгоритма решения задачи… 10
5. Текстпрограммы… 11
6.Результаты работы программы… 15
Заключение… 16
Списокиспользованных источников:… 17 TC Введение
История появленияи развития персональных компьютеровявляется одним из наиболее впечатляющих явлений нашего века. С моментапоявления первых образцов персональных компьютеров прошломеньше 25 лет, но сейчас без них уже немыслимо огромное количество областей человеческой деятельности — экономика,управление, наука, инженерное дело, издательское дело, образование, культура и т.д. Интереск персональным компьютерам постоянно растет, а круг ихпользователей непрерывно расширяется. В число пользователей ПЭВМвовлекаются как новички в компьютерномделе, так и специалисты по другим классам ЭВМ.
Язык Паскаль — это один из наиболеераспространённых языков программирования 80-90х годов, поддерживающий самыесовременные методологии проектирования программ (нисходящее, модульноепроектирование, структурное программирование) имеют свою достаточно богатуюисторию развития.
Новую жизнь языку дала фирма Борланд,разработавшая на его базе семейство Паскаль – систем, называемых ТурбоПаскалем. Интегрированная среда, обеспечивающая многооконную разработкупрограммной системы, обширный набор встроенный в неё средств компиляции иотладки, доступный для работы через легко осваиваемое меню, — всё этообеспечивает высокую производительность труда программиста, недостижимую приработе со старыми средами.
Язык Турбо Паскаль хорошо подходит для обучения программированию. TC 1. Постановка задачи
Заданием на курсовую работуявляется создание программы на языке программирования Турбо Паскаль, котораядолжна осуществлять решение следующей задачи :
Вычислить приближённое значение интеграла функцииf(x) на интервале с точностью до 0.01 методами Симпсона и трапеции с цельюсравнения.
Интегрируемая функция:
Определить метод, который решает поставленнуюзадачу за минимальное число повторений.
Построить график функции f(x) на заданноминтервале. Решить поставленную задачу с использованием функций и процедуралгоритмического языка Турбо Паскаль. TC 2. Математическая часть
Для приближённого вычисления интеграла функцииf(x) используются методы приближённого интегрирования, наиболее употребительныеиз них основаны на замене интегралаконечной суммой. Для вычисления 0) до b(xn) разбиваетсяна n равных частей, и для точек деления x0, x1, x2, x3,..., xn-1, xn вычисляются значенияинтегрируемой функции y. Затем необходимо воспользоваться формулой приближённогоинтегрирования:
1) Формула трапеций (рис.1):
Рис.1.
2) Формула Cимпсона (парабол) (рис.2):
(2)
Рис.2.
В моей курсовой работерассматривается приближенное вычисление интеграла (1)
При его аппроксимациизаменим функцию f(x) параболой, проходящей через точки т.е представимприближенно f(x) в виде
где — интерполяционныймногочлен Лагранжа второй степени,
Проводя интегрирование получим
Таким образом приходим к приближенному равенству
(3)
Котрое называется формулой Симпсона или формулой парабол.
На всем отрезке [a,b] формула Симпсона имеет вид
Чтобы не использовать дробныхиндексов можно обозначить
xi=a+0,5hi, fi=f(xi), i=1,2,…,2N, hN=b-a
и записать формулу Симпсона ввиде
(4)
Прежде чем переходить коценке погрешности формулы (3) заметим, что она является точной для любогомногочлена третьей степени, т.е. имеет место точное равенство
если f(x)=a0+a1x+a2x2+a3x3.Это утверждение нетрудно проверить непосредственно.
Для оценки погрешности формулыСимпсона воспользуемся интерполяционным многочленом Эрмита. Построим многочлентретьей степени H3(x) такой, что
Такой многочлен существует иединствен.
Однако нам даже не потребуетсяявный вид многочлена H3(x). Вспоминая, что формула Симпсона точнадля любого многочлена третьей степени, получим
(5)
Представим теперь f(x) в виде
f(x)=H3(x)+ri(x), Î[xi-1,xi], (6)
где ri(x) –погрешность интерполирования многочленом Эрмита H3(x). Интегрируя(6) и учитывая (5), получим
(7)
Далее имеем
поэтому из (7) для погрешности формулы (3) получаемоценку
где
Вычисляя интеграл приходим кокончательной оценке
(8)
Погрешность составной формулыСимпсона оценивается так
(9)
Отсюда видно, что формулаСимпсона существенно точнее, чем формулы прямоугольников и трапеций. Начастичном отрезке она имеет точность О(h5), а на всем отрезке – O(h4) TC 3. Описание метода решения задачи
Для решения поставленной задачи необходимовыполнить следующие действия:
1)Ввести значения границ отрезков;
2)Вывести график функции на экран с учётом масштаба;
3)Вычислить интеграл методом трапеций;
4)Вычислить интеграл методом Симпсона;
Для успешной реализации этих действий программадолжна состоять из следующих функциональных модулей:
1)Функция f — вычисляет значение интегрируемой функции;
2)Функция trap — вычисляет интеграл методом трапеций;
3)Функция simpson — вычисляет интеграл методом Симпсона;
4)Процедура norm — вычисляет порядок числа, необходимый для построения графикафункции с учётом масштаба;
5)Процедура out_gr — строит график функции на экране а графическом режиме сучётом масштаба.
Основная (главная) программа должна осуществлятьввод значения границ отрезков, вызов функций и процедур вычисления и выводрезультатов на экран. TC 4. Описание алгоритма решения задачи
В соответствии с приведённым словесным описанием алгоритма решения поставленнойзадачи разработана блок схема решаемой задачи, которая изображена на рис. 3.
В изображенном алгоритме блоки имеют описанное ниже назначение:
Блок 1. Начало программы;
Блок 2. Очистка экрана;;
Блок 3. Запрос на ввод значений А и В;
Блок 4. Ввод значений А и В с клавиатуры;
Блок 5. Вызов процедуры вывода графика функции на экран;
Блок 6. Установка начального значения счётчика отрезков равным 3;
Блок 7. Вычисление значения начального значения интеграла методом трапеций;
Блок 8. Запоминание предыдущего значения интеграла, вычисленного методомтрапеций, увеличение значения числа отрезков на 2, вычисление следующегозначения интеграла методом трапеций;
Блок 9. Проверка условия: абсолютное значение разности текущего и предыдущегозначений интегрирования меньше чем 0.001, если да, то выход из цикла, если нет,то переход на блок 8.
Блок 10. Вывод результатов, полученных при вычислении интеграла методом трапецийна экран.
Блок 11. Установка начального значения счётчика отрезков равным 3;
Блок 12. Вычисление значения начального значения интеграла методомСимпсона;
Блок 13. Запоминание предыдущего значения интеграла, вычисленного методомСимпсона, увеличение значения числа отрезков на 2, вычисление следующегозначения интеграла методом Симпсона;
Блок 14. Проверка условия: абсолютное значение разности текущего и предыдущегозначений интегрирования меньше чем 0.001, если да, то выход из цикла, если нет,то переход на блок 13.
Блок 15. Вывод результатов, полученных при вычислении интеграла методомСимпсона на экран.
Блок 16. Конец программы. TC 5. Текст программы
program tr_s;
uses crt,graph;
var
a,b:real; { Границы отрезка }
r,r2:real; { Предыдущее и текущее приближенные значения интеграла}
n:integer; { Счетчик }
{ Интегрируемая функция }
function f(x:real):real;
begin
f:=1/(x*ln(x)*0.43429);
end;
{ Метод трапеций }
functiontrap(a,b:real;n:integer):real;
var
s:real; { Полученная сумма }
h:real; { Шаг }
m:integer; { Счетчик }
begin
h:=(b-a)/(n-1); { Определяется шаг }
s:=(f(a)+f(b))/2; { Начальное значение суммы }
for m:=1 to n-2 do s:=s+f(a+m*h); {Суммиование остальных элементов}
trap:=s*h; { Возвращается значениеинтеграла }
end;
{ Метод Симпсона }
functionsimpson(a,b:real;n:integer):real;
var
s:real; { Сумма }
h:real; { Шаг }
m:integer; { Счетчик }
mn:integer; { Очередной множитель }
begin
h:=(b-a)/(n-1); { Рассчитывается шаг }
s:=f(a)+f(b); { Начальное значение шага}
mn:=4; { Первый мнодитель- 4 }
{ Суммирование остальныхэлементов }
for m:=1 to n-2 do begin
s:=s+mn*f(a+h*m);
if (mn=4) then mn:=2 else mn:=4;{ Именениемноителя 24 }
end;
simpson:=s*h/3; { Возвращается вычисленноезначение }
end;
{ Процедура вычисленияпорядка числа }
procedure norm(a:real);
var n:real;
begin
{ Если число слишком мало- возвращается ноль }
if (a
else begin
{ Если число меньшеединицы }
if (a
n:=1;
repeat
a:=a*10;
n:=n/10;
until (trunc(a)0);
end else begin
{ Если число большеединицы }
n:=1;
repeat
a:=a/10;
n:=n*10;
until (trunc(a)=0);
end;
end;
a:=n;
end;
{ Построение графикафункции }
procedureout_grp(xmin,xmax,ymin,ymax:real);
var
drv,mode:integer;
mx,my:real; { Масштабы по осям }
xx,yy:real; { Текущие координаты }
sx:real; { Шаг по оси X }
dltx,dlty:integer;{ Приращение на графике присмещении графика }
s:string; { Строка }
begin
{ Инициализация графики }
drv:=VGA;
mode:=VGAHi;
initgraph(drv,mode,'');
{ Выяснение порядковминимумов и максимумов }
norm(xmax);
norm(ymax);
norm(ymin);ymin:=ymin/10;
norm(xmin);ymin:=ymin/10;
if (xmin/xmax)>0.01 then dltx:=20 elsedltx:=0;
if (ymin/ymax)>0.01 then dlty:=20 elsedlty:=0;
{ Расчет масштабов }
mx:=500/(xmax-xmin);
my:=400/(ymax-ymin);
{ Расчет приращения по X}
sx:=(xmax-xmin)/550;
{ Вывод системы координат}
settextjustify(1,1);
xx:=xmin;
repeat
setcolor(1);
line(trunc(40+mx*(xx-xmin)+dltx),20,trunc(40+mx*(xx-xmin)+dltx),469);
str(xx:4:2,s);
setcolor(15);
outtextxy(trunc(40+mx*(xx-xmin)+dltx),475,s);
xx:=xx+50*sx;
until (xx>(xmax+50*sx));
yy:=ymin+(ymax-ymin)/10;
repeat
setcolor(1);
line(41,trunc(470-my*(yy-ymin)-dlty),630,trunc(470-my*(yy-ymin)-dlty));
str(yy:4:2,s);
setcolor(15);
outtextxy(20,trunc(470-my*(yy-ymin)-dlty),s);
yy:=yy+(ymax-ymin)/10;
until (yy>(ymax+(ymax-ymin)/10));
line(40,0,40,480);
line(0,470,640,470);
line(40,0,38,10);
line(40,0,42,10);
line(640,470,630,472);
line(640,470,630,468);
{ Вывод графика }
xx:=xmin;
repeat
yy:=f(xx);
putpixel(trunc(40+mx*(xx-xmin)+dltx),trunc(470-my*(yy-ymin)-dlty),7);
xx:=xx+sx;
until (xx>xmax);
outtextxy(300,10,' Press ESC to continue ');
repeatuntil (readkey=#27);
closegraph;
end;
{ Основная программа }
begin
{ Ввод границ отрезков }
clrscr;
write(' Введите A,B: ');
readln(a,b);
{ Выводится графикфункции }
out_grp(a,b,f(b),f(a));
{ Вычисляется интеграл пометоду трапеций }
n:=3;
r:=trap(a,b,n); { Начальное значение }
repeat
r2:=r; { Запоминается предыдущеезначение }
n:=n+2; { Увеличивается количество шагов}
r:=trap(a,b,n); { Рассчитывается новое значение }
until (abs(r-r2)
{ Вывод результатов }
writeln(' Резльтат пометоду трапеций равен: ',r:6:3);
writeln(' для получениянеобходимой точности
интервал был разбит на');
writeln(n,' отрезков');
{ Вычисляется интеграл пометоду Симпсона }
n:=3;
r:=simpson(a,b,n); { Начальное значение }
repeat
r2:=r; { Запоминается предыдущеезначение }
n:=n+2; { Увеличивается количество шагов }
r:=simpson(a,b,n); { Рассчитывается новое значение }
until(abs(r-r2)
точности }
{ Вывод результатов }
writeln;
writeln(' Резльтат по методу Симпсона равен:',r:6:3);
writeln(' для получения необходимой точностиинтервал
был разбит на ');
writeln(n,' отрезков');
end. TC 6. Результаты работы программы
Введите A,B: 2 3
Результат по методутрапеций равен: 1.062
для получения необходимой точности интервалбыл разбит на 11 отрезков
Результат по методуСимпсона равен: 1.061
для получения необходимой точности интервалбыл разбит на 7 отрезков.
Анализ полученных в ходе работы программы результатов говорит о том, что поставленная задача успешно решается.
Метод трапеции является наиболее простым методомприближённого интегрирования, этот метод позволяет точно интегрироватьмногочлен первой степени, а для интегрирования данной функции требуетсядовольно много итераций. Более совершенным является метод Симпсона, которыйпозволяет точно интегрировать многочлен второй производной и даже некоторыемногочлены третьей степени, поэтому он требует почти в 2 раза меньше количестваинтервалов для получения результата. TC TC Заключение
В данной курсовой работерешена задача приближённого интегрирования функции
методами Симпсона итрапеции.
В процессе создания курсовой работыразработан алгоритм решения поставленной задачи. По этому алгоритму на языкеТурбо Паскаль 7.0. составлена и отлажена программа.
В ходе тестирования были полученырезультаты работы метода трапеции и метода Симпсона, по которым видно, чторезультаты интегрирования обоими методами совпадают с достаточной точностью.Заметна лишь разница в качестве приближения интервалов.
Программа является полностьюработоспособной, что подтверждается результатами её тестированием.. TC Список использованныхисточников:
1.БронштейнИ.Н., Семендяев К.А. Справочник по высшей математике для инженеров и учащихсявтузов. — М.: Наука, 1981. — 718 с.
2.Белецкий Я. Турбо Паскаль с графикой для персональных компьютеров перевод с польского Д.И.Юренкова. -М.:Машиностроение, 1991. — 320 с.
3.Сергиевский М.В., Шалашов А.В. Турбо Паскаль 7.0; язык, среда программирования. -М: Машиностроение.-1994,-254 с.ил.
4.Справочник по процедурам и функциям Borland Pascal 7.0. — Киев: Диалектика, 1993. — 272с.
5.Самарский А.А, Гулин А.В. Численные методы.М.: Наука,1989. – 430 с.