КУРСОВАЯ РАБОТА по курсу «Информатика» «Приближенное вычисление значений определенного интеграла» Вариант № 19 Выполнил: ст-т гр. __________ Проверил: __________ Оценки работы: Выполнение (оформление) записки и чертежей _________ балл Оценка рецензента _________ балл Оценка доклада _________ балл Ответы на вопросы _________ балл Итого __________ баллов Т У Л А 2017 Задание на курсовую работу Составить блок-схему алгоритма и написать программу на языке Паскаль, позволяющую вычислить значение определенного интеграла от функции f(x)= 19.80*exp(0.127/X) на отрезке [0.439, 1.440] с абсолютной погрешностью eps=0.0049, используя известные численные методы - метод левых прямоугольников, трапеции, Симпсона, Чебышева в соответствии с индивидуальным заданием. Программу, выполненную по модульному принципу, которая должна включать основной модуль и следующие обязательные функции и подпрограммы: - п/п описания вида функции; - п/п вывода графика функции; - п/п вычисления интеграла методом правых прямоугольников; - п/п вычисления интеграла методом трапеции; - п/п вычисления интеграла методом «трех восьмых»; - п/п вычисления интеграла методом Чебышева В работе программы предусмотреть ввод границ интервала интегрирования и значения погрешности с клавиатуры. В начале работы программы на экран дисплея должен выводиться график функции с оцифровкой осей и иллюстрацией одного из указанных методов интегрирования. После вывода графика функции на экран необходимо задать с клавиатуры начальное значение количества разбиений n, после чего программа должна продолжить работу. Результаты расчета вывести на экран дисплея и в дисковый файл в виде: КУРСОВАЯ РАБОТА ПО КУРСУ ИНФОРМАТИКА "ПРИБЛИЖЕННОЕ ВЫЧИСЛЕНИЕ ЗНАЧЕНИЙ ОПРЕДЕЛЕННОГО ИНТЕГРАЛА" Выполнил: студент гр. 320671 Сергеева Е.В. Вариант 10 y=19.80*exp(0.127/X) Xn=0.439 Xk=1.440 Eps=0.001 РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЙ Число разбиений ХХ Метод вычисления Левых прямоугольников ХХХХХ Точность Трапеции Симпсона Чебышева вычисления ХХХХХ ХХХХХ ХХХХХ ХХХХХХ *** Требуемая точность достигнута при ХХХ разбиениях *** 2 СОДЕРЖАНИЕ 1 Цель и задачи выполнения курсовой работы ............................................................ 4 2 Описание численных методов решения задачи ........................................................ 5 2.1 Метод левых прямоугольников ............................................................................ 5 2.2 Метод трапеции ...................................................................................................... 5 2.3 Метод Симпсона ..................................................................................................... 6 2.4 Метод Чебышева .................................................................................................... 7 3 Блок-схема основной программы ............................................................................... 9 3.1 БЛОК СХЕМА ОСНОВНОЙ ПРОГРАММЫ ..................................................... 9 3.3 Блок-схема метода трапеций ............................................................................... 11 3.4 Блок-схема метода Симпсона ............................................................................. 11 4 Текст программы на языке Паскаль ......................................................................... 13 5 Результаты работы программы, полученные в ходе выполнения программы в виде графика .................................................................................................................. 18 6 Результаты работы программы, полученные в ходе выполнения программы в виде таблицы .................................................................................................................. 19 Список литературы ....................................................................................................... 22 3 1 Цель и задачи выполнения курсовой работы Курсовая работа, выполняемая студентами, является завершающим этапом изучения дисциплины " Информатика". Курсовая работа является одной из важнейших форм учебной работы. Она имеет целью привить навыки самостоятельной работы, выявить знания студентов по данной дисциплине и умение применять эти знания в практической работе по выбранной ими специальности. В процессе выполнения курсовой работы студент должен проявить способность к самостоятельной работе с учебной и научно-технической литературой, умение обобщать полученные знания, делать обоснованные выводы, формулировать рекомендации по выбору технических и программных средств для конкретной работы, продемонстрировать навыки владения ПК и пакетами прикладных программ (ППП). В ходе выполнения курсовой работы должны быть изучены и проанализированы вопросы, связанные с различными аспектами использования компьютерной техники для решения инженерных задач. Выполнение курсовой работы предусматривает следующие задачи: 1. Закрепление и самостоятельное использование на практике знаний в области программирования на алгоритмическом языке "Паскаль" и применение численных методов при решении инженерно-технических задач. 2. Умение отлаживать составленную программу, применяя функциональные возможности различных ЭВМ. 3. Приобретение студентами навыков использования материалов стандартов единой системы программной документации по разработке алгоритма и программы курсовой работы. 4. Умение работать в офисных приложениях Word, Excel. 4 2 Описание численных методов решения задачи 2.1 Метод левых прямоугольников Метод прямоугольников — метод численного интегрирования функции одной переменной, заключающийся в замене подынтегральной функции на многочлен нулевой степени, то есть константу, на каждом элементарном отрезке. Если рассмотреть график подынтегральной функции, то метод будет заключаться в приближённом вычислении площади под графиком суммированием площадей конечного числа прямоугольников, ширина которых будет определяться расстоянием между соответствующими соседними узлами интегрирования, а высота — значением подынтегральной функции в этих узлах. Алгебраический порядок точности равен 0. (Для формулы средних прямоугольников равен 1). Если отрезок является элементарным и не подвергается дальнейшему разбиению, значение интеграла можно найти по формуле средних прямоугольников: Для формулы средних прямоугольников погрешность вычисляется по формуле: Формула левых прямоугольников: Рис. 1. Метод левых прямоугольников 2.2 Метод трапеции Отрезок интегрирования разбивается на несколько промежуточных отрезков, и график подынтегральной функции приближается ломаной линией: 5 Рис. 2. Метод трапеции Таким образом, наша площадь (синяя штриховка) приближается суммой площадей трапеций (красный цвет). Отсюда и название метода. Легко заметить, что метод трапеций даёт значительно лучшее приближение, чем метод прямоугольников (при одинаковом количестве отрезков разбиения). И, естественно, чем больше более мелких промежуточных отрезков мы рассмотрим, тем будет выше точность. формула трапеций: , – длина каждого из где: маленьких отрезков – значения подынтегральной функции в точках Таким образом, общая формула трапеций сокращается или шаг; . до приятных размеров: 2.3 Метод Симпсона Это наиболее широко известный и применяемый метод численного интегрирования. Метод аналогичен рассмотренным ранее методам прямоугольников и трапеций: интервал интегрирования разбивается на множество более мелких отрезков; однако для вычисления площади под каждым из отрезков через три последовательных ординаты разбиения проводится квадратичная парабола 6 Рис. 3. Метод Симпсона Формулу Симпсона выведем, проводя параболу через три ординаты на концах двух соседних интервалов и складывая получившиеся при этом площади. . Действительно, определяя y0, y1, y2: имеем , т.е. (2.1) окончательно: или (2.2) Последняя формула (2.2) называется формулой Симпсона. 2.4 Метод Чебышева П.Л. Чебышев предложил формулу: 7 в которой коэффициенты n фиксированы, а хn подлежат определению. Рис.2.4 Метод Чебышева. Пользуясь алгебраическими свойствами симметричных многочленов, опустив преобразования, ограничимся готовыми результатами. В таблице 1 приведены значения узлов квадратурной формулы Чебышева для значений n = 5. Таблица 1 - Коэффициенты Чебышева Число разбиений 5 Номер узла Значение коэффициента 1 0.083751 2 0.312730 3 0.5 4 0.687270 5 0.916249 8 3 Блок-схема основной программы 3.1 Блок-схема основной программы начало начало a,b,eps a,b,eps graphic n=n+100 0 Trp(S2) n=4,S1S =0 Pr(S1) Pr(S1) SIM(S3) Trp(S2) graphic n Ch(S4) n шапка P=|S1-S1S| шапка na,b,eps начало начало S2, S3, S4, P n=шапка S1S=S1 начало n =0 graphic n+1000 P>eps нет да n конец Рисунок 5. Блок-схема основной программы 9 3.2 Блок-схема метода прямоугольников начало h ba n S=0 i= 1, n конец x=a S = S+f(x)*h Рисунок 6 - Блок-схема методов прямоугольников 10 3.3 Блок-схема метода трапеций начало h ba n S = f(a)+f(b) i= 1, n-1, 1 ss h 2 конец x=a+h*i S = S +2f(x) Рисунок 7 - Блок схема метода трапеции 11 3.4 Блок-схема метода Симпсона начало H=(b-a)/n S=0 L=0, n-1 S=S*h/6 U=a+h*l S=S+f(u)+f(u+h) конец S=S+4*f(x+h/2) Рисунок 8 - Блок схема, метода Симпсона 12 3.5 Блок-схема метода Чебышева начало h ba n S=0 i=0,n-1,1 S S h 5 конец x=a+h*i S=f(x+hk1) S=f(x+hk2) S=f(x+hk3) S=f(x+hk4) S=f(x+hk5) Рисунок 8 - Блок схема метода Чебышева 13 4 Текст программы на языке Паскаль Program Kurs; uses crt, graph; var i,n:longint; ebs1,dx,xi,sum:real; a,b,eps,r,s,h:real; m0,m1,m2,m3,m4:real; lf:text; function f(x:real):real; begin f:=19.80*exp(0.127/X); end; procedure graphic(xn,xk:real); var x,y,mx,my,dx,dy, ymin,ymax,xh:real; xb,yb,xm,ym,xl,yv,xp,yn,bord1,bord2,bord3,bord4,xt,yt,xt1,yt1,dxp,dyp,nd,nr,i,kx,ky,k:integer; st:string; begin n:=20; k:=100; xh:=(xk-xn)/100; ymin:=f(xn); ymax:=ymin;; dx:=(xk-xn)/100; for i:=1 to 100 do begin x:=xn+dx*i; y:=f(x); if y>ymax then ymax:=y; if y<ymin then ymin:=y; end; nd:=detect; initgraph(nd,nr,' '); bord1:=60; kx:=20; bord2:=30; ky:=20; bord3:=30; bord4:=80; xb:=0; yb:=0; xm:=getmaxx; ym:=getmaxy; xl:=xb+bord1; xp:=xm-bord2; yv:=yb+bord3; yn:=ym-bord4; dxp:=(xp-xl) div kx; dyp:=(yn-yv) div ky; dx:=(xk-xn)/kx; dy:=(ymax-ymin)/ky; xl:=xp-dxp*kx; yn:=yv+dyp*ky; 14 mx:=(xp-xl)/(xk-xn); my:=(yn-yv)/(ymax-ymin); setfillstyle (1,15); bar(xb,yb,xm,ym); setcolor(0); setlinestyle (0,0,1); bar(xl,yv,xp,yn); rectangle(xl,yv,xp,yn); settextjustify(0,2); settextstyle(2,1,4); setcolor(4); for i:=0 to kx do begin xt:=xl+dxp*i; str(xn+dx*i:6:3,st); line(xt,yn-3,xt,yn+3); outtextxy(xt+4,yn+8,st); end; settextstyle(0,0,1); for i:=0 to ky do begin yt:=yv+dyp*i; str(ymax-dy*i:6:3,st); line(xl-3,yt,xl+3,yt); outtextxy(xl-56,yt-4,st); end; outtextxy(xl+100,bord3 div 2, 'у=19.80*exp(0.127/X) '); setcolor(12); if xn*xk<0 then begin xt:=xl-trunc(xn*mx); line(xt,yv,xt,yn); end; if ymax*ymin<0 then begin yt:=yv+trunc(ymax*my); line(xl,yt,xp,yt); end; xh:=(xk-xn)/n; for i:=0 to n do begin setcolor(3); x:=xn+xh*i; y:=f(x); xt:=xl+trunc((x-xn)*mx); yt:=yv+trunc((ymax-y)*my); circle(xt,yt,2); if i>0 then line (xt,yt,xt1,yt1); setcolor(6); rectangle(xt1,yt,xt,yn); xt1:=xt; yt1:=yt; end; readkey; closegraph; end; procedure pr(var s:real); var x:real; 15 begin s:=0; h:=(b-a)/n; for i:=0 to n-1 do begin x:=a+i*h; s:=s+f(x); end; s:=s*h; end; procedure ch(var s:real); var x:real; begin s:=0; h:=(b-a)/n; for i:=0 to n-1 do begin x:=a+h*i; s:=s+f(x+h*0.083751)+f(x+h*0.312730)+f(x+h*0.5)+ f(x+h*0.687270)+f(x+h*0.916249); end; s:=s*h/5; end; procedure trp(var s:real); begin h:=(b-a)/n; s:=f(a)+f(b); for i:=1 to n-1 do s:=s+2*f(a+h*i); s:=s*h/2; end; procedure Simp(var s:real); begin h:=(b-a)/n; for i:=0 to n do begin s:=s+f(a+h*i); s:=s+4*f(a+h*i+h/2); s:=s+f(a+h*(i+1)); end; s:=s*h/6; end; begin write('Введите значение левого предела: '); readln(a); write('Введите значение правого предела '); readln(b); write('Введите значение погрешности '); readln(eps); graphic(a,b); write('Введите начальное количество разбиений '); readln(n); writeln; assign(lf,'Vivod.txt'); rewrite(lf); m0:=0; writeln(lf,' Курсовая работа'); 16 writeln(lf,' По курсу информатики'); writeln(lf,' Приобритенное вычисление значения определенного интеграла '); writeln(lf,' Выполнила: студентка гр. 320671 '); writeln(lf,' Вариант 19 у=19.80 *exp(0.127/X)Сергеева Е.В.'); writeln(lf,' Xn=',a:5:3,' Xk=',b:5:3,' Eps=',eps:5:3); writeln(lf); writeln(lf,' Результат вычислений'); writeln(lf,' +-------------+------------------------------------------------+-------------+'); writeln(lf,' | | Метод вычисления | |'); writeln(lf,' | Число +------------------------------+-------------------------------+ Точность |'); writeln(lf,' | | | | | | |'); writeln(lf,' | разбиений |Прямоуго- | Трапеция | Симпсона |Чебышева | Вычисления |'); writeln(lf,' | | льники | | | | |'); writeln(lf,' +-------------+--------------+-------------+-----------------+-------------+----------------+'); writeln(' Курсовая работа'); writeln(' По курсу информатики'); writeln(' Приобритенное вычисление значения определенного интеграла '); writeln(' Выполнила: студентка гр. 320671 Сергеева Е.В. '); writeln(' Вариант 19 у=19.80 *exp(0.127/X)'); writeln(' Xn=',a:5:3,' Xk=',b:5:3,' Eps=',eps:5:3); writeln; writeln(' Результат вычислений '); writeln(' +-------------+------------------------------------------------+-------------+'); writeln(' | | Метод вычисления | |'); writeln(' | Число +------------------------------+-------------------------------+ Точность |'); writeln(' | | | | | | |'); writeln(' | разбиений |Прямоуго- | Трапеция | Симпсона |Чебышева | Вычисления |'); writeln(' | | льники | | | | |'); writeln(' +-------------+--------------+-------------+-----------------+-------------+----------------+'); repeat h:=(b-a)/n; pr(Ыm1); trp(m2); ch(m4); Simp(m3); r:=abs(m1-m0); writeln(lf,' | ',n:7,' |',m1:11:6,'|',m2:11:6,'|',m3:11:6,'|',m4:11:6,' |',r:11:6,' |'); writeln(' | ',n:7,' |',m1:11:6,'|',m2:11:6,'|',m3:11:6,'|',m4:11:6,' |',r:11:6,' |'); m0:=m1; n:=n+10; until (r<=eps) or (n>10000000); writeln(lf,' +-----------+-----------+------------+-----------+-----------+-------------+'); writeln(lf,'***Точность вычисления достигнута при n=',n-10:7,'***'); writeln(' +-----------+-----------+------------+-----------+-----------+-------------+'); writeln('***Точность вычисления достигнута при n=',n-10:7,'***'); close(lf); end. 17 5 Результаты работы программы, полученные в ходе выполнения программы в виде графика 18 6 Результаты работы программы, полученные в ходе выполнения программы в виде таблицы Курсовая работа По курсу информатики Приближенное вычисление значение определенного интеграла Выполнила: студентка гр. 320671 Сергеева Е.В. Вариант 19 у=19.80*exp(0.127/X) Xn=0.439 Xk=1.440 Eps=0.001 Результаты вычислений Число Метод вычисления Точность разбиений Прямоугольники Трапеции Симпсона Чебышева вычисления 40 23.137613 23.077340 23.617270 23.076500 23.137613 50 23.125256 23.077038 23.587984 23.076500 0.008201 60 23.117055 23.076873 23.502691 23.076500 0.005839 70 23.111216 23.076774 23.441626 23.076500 0.004008 80 23.106847 23.076710 23.395872 23.076500 0.004369 90 23.103454 23.076666 23.360312 23.076500 0.003393 100 23.100744 23.076634 23.331879 23.076500 0.002710 110 23.098529 23.076611 23.308625 23.076500 0.002215 120 23.096684 23.076593 23.289253 23.076500 0.001844 130 23.095125 23.076580 23.272866 23.076500 0.001559 140 23.093789 23.076569 23.258823 23.076500 0.001336 150 23.092633 23.076560 23.246654 23.076500 0.001157 160 23.091621 23.076553 23.236009 23.076500 0.001012 170 23.090728 23.076547 23.226617 23.076500 0.000892 180 23.089935 23.076542 23.218269 23.076500 0.000793 190 23.089226 23.076537 23.210802 23.076500 0.000709 200 23.088588 23.076534 23.204081 23.076500 0.000638 ***Точность вычисления достигнута при n=200*** 19 7 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ При создании программы для решения сложной задачи выполняется разделение этой задачи на подпрограммы, подзадач — на ещё меньшие подзадачи и т.д., до легко программируемых элементарных задач. Процедуры и функции являются важным средством в большинстве языков программирования. С их помощью можно скомпоновать группу операторов для выполнения некоторого единого действия. Процедуру/функцию можно вызывать из различных мест программы, она может возвращать вычисленные результаты, и ей можно передавать информацию, которую она использует для вычисления. Для того чтобы процедура/функция начала работу, её нужно вызвать (активизировать). Процедуры и функции состоят из операторов, локальных данных и внутренних процедур и функций. Структура описания процедуры и функции имеет следующий вид: PROCEDURE Имя (Список Формальных Параметров); LABEL CONST Описание локальных меток, TYPE констант, типов и переменных VAR PROCEDURE Описание внутренних FUNCTION процедур и функций BEGIN Операторы END; FUNCTION Имя (Список Формальных Параметров): Тип результата; LABEL CONST Описание локальных меток, TYPE констант, типов и переменных VAR PROCEDURE Описание внутренних FUNCTION процедур и функций BEGIN Операторы, среди которых должен быть хотя бы один, который присваивает имени функции значение результата. END; 20 Отличия в описании функции и процедуры касаются только заголовка и раздела операторов, что отмечено непосредственно в приведённых рисунках. В программе используются функция Fun(x) для вычисления текущего значения функции и процедура Zet, определяющая коэффициенты для метода Чебышева. Для сохранения результаты работы программы были помещены в дисковый файл. Для работы с каким-либо дисковым файлом, находящемся на ЖМД или ГМД, необходимо первоначально связать его с файловой переменной (логическим файлом), с помощью которой будет осуществляться доступ к этому дисковому файлу. Связывание дискового и логического файлов выполняется процедурой Assign, которая может использоваться только для закрытого файла. Первым параметром этой процедуры является файловая переменная, вторым параметром – строковая константа или идентификатор строковой переменной, значением которых должно быть имя дискового файла, указанное согласно правилам записи идентификаторов в MS-DOS. Assign (out, ‘out.Dat’); Перед выполнением каких-либо операций чтения и записи в файлах, эти файлы должны быть открыты. Открытие файлов выполняется процедурами Reset (для ввода информации из файла) и Rewrite (для вывода информации в файл), а закрытие—процедурой Close. Rewrite(out); Операция вывода информации в файл осуществляется с помощью оператора Write(out,’’); Writeln(out,’ ‘); 21 Список литературы 1.Курносов А.П. Информатика: учеб.пособие для вузов / А.П.Курносов [и др.]; под ред. А.П.Курносова .— М. : КолосС, 2015 .— 272с. — (Учебники и учебные пособия для высших учебных заведений) .— Библиогр.в конце кн. 2. Алексеева И.В. Сборник задач и упражнений по курсу «Информатика». – Обнинск: Обнинский институт атомной энергетики, 2017. 3. Власов В.К., Королев Л.Н. Элементы информатики./ Под. Ред. Л.Н. Королева.М.: Наука, 2015 г. 4. Информатика.- / Под ред. Н.В. Макаровой. – М.: Финансы и статистика, 2017. – 768 с. 5. Информатика: Учебник для вузов.- / Под ред. С.В. Симоновича. – СПб.: Питер, 2014. 6. Кураков Л.П., Лебедев Е.К. Информатика. – М.: Вуз и школа, 2015. – 636с. Могилев и др. Информатика: Учебное пособие для вузов / А.В.Могилев, 7. Н.И.Пак, Е.К.Хеннер; Под ред. Е.К. Хеннера. - М.: Изд. центр "Академия", 2016 8. Острейковский В.А. Информатика. – м.: Высшая школа, 2017.- 512с. 9. Першиков В.И., Савинков В.М. Толковый словарь по информатике. – 2-е изд. Доп. – М.: Финансы и статистика, 2016. 10. Фигурнов В.Э. IBM PC для пользователей. – М.: 2017. 11. Якубайтис Э.А. Информационные сети и системы: Справочная книга.- М.: Финансы и статистика, 2014 22