|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Приближенное вычисление значений определенного интегралаПриближенное вычисление значений определенного интеграла2 Федеральное агентство по образованию РФТульский государственный университетКафедра АОТ и ОСКУРСОВАЯ РАБОТАпо курсу информатика"ПРИБЛИЖЕННОЕ ВЫЧИСЛЕНИЕ ЗНАЧЕНИЙ ОПРЕДЕЛЕННОГО ИНТЕГРАЛА"Тула, 2007СодержаниеВведение Метод средних прямоугольников Метод трапеций Метод Ньютона-Котеса Метод Чебышева Блок-схема основной программы Блок-схема процедуры: метод трапецийБлок-схема процедуры: метод Ньютона-КотесаБлок-схема процедуры: метод ЧебышеваТекст программыСписок используемой литературыВведениеНа практике редко удается вычислить точно определенный интеграл. Например, в элементарных функциях не вычисляется функция Лапласа широко используемая в теории вероятностей для вычисления вероятностей, связанных с нормально распределенными случайными величинами. Задача численного интегрирования состоит в нахождении приближенного значения интеграла: (1) от непрерывной на отрезке [a, b] функции . Численные методы интегрирования применяются в случаях, когда не удается найти аналитическое выражение первообразной для функции либо если функция задана таблично. Формулы численного интегрирования называются квадратурными формулами. Пример: Приближенное неравенство (2) где qj - некоторые числа, xj - некоторые точки отрезка [a, b], называется квадратурной формулой, определяемой весами qj и узлами xj. Говорят, что квадратурная формула точна для многочленов степени m, если при замене на произвольный алгебраический многочлен степени m приближенное равенство (2) становится точным. Рассмотрим некоторые широко используемые примеры приближенного вычисления определенных интегралов, квадратурные формулы. Метод средних прямоугольниковВычисление определенного интеграла геометрически означает вычисление площади фигуры, ограниченной кривой , прямыми х=а и х=b и осью абсцисс. Приближенно эта площадь равна сумме площадей прямоугольников.Обозначим , гдеn - количество шагов.Формула левых прямоугольников:Формула правых прямоугольников:Более точной является формула средних прямоугольников:Метод трапецийПлощадь под кривой заменяется суммой площадей трапеций:или Нетрудно убедиться, что Поскольку точность вычислений по приведенным формулам зависит от числа разбиений n исходного отрезка [a; b], то вычислительный процесс целесообразно строить итерационным методом, увеличивая n до тех пор, пока не будет выполнено условие<где - значения интеграла на шаге, а - точность вычислений.Метод Ньютона-КотесаЗаменим подынтегральную функцию f(x) интерполяционным многочленом Лагранжа: .Тогда; (1)Так как dx=hdq, тоТак как , тоОкончательно получаем формулу Ньютона-Котеса: (2)Величины Hi называют коэффициентами Ньютона-Котеса. Они не зависят от f(x). Их можно вычислить заранее для различного числа узлов n (таблица 1).Формула Ньютона-Котеса с n узлами точна для полиномов степени не выше n. Для получения большей точности не рекомендуется использовать формулы с большим числом узлов, а лучше разбивать отрезок на подотрезки, к каждому из которых применяется формула с одним и тем же небольшим числом узлов.Таблица 1. Значения коэффициентов Ньютона-Котеса
program Curs; uses crt, graph; var i, n:integer; t:byte; a, b, eps, h:real; x, sum1, sum2, seps, m0, m1, m2, m3, m4:real; lf:text; st:string; function f (x:real):real; begin f:=19.44*exp (0.224*x); end; procedure gr (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 k:=100; xh:=(xk-xn)/100; ymax:=f(xn); dx:=(xk-xn)/100; for i:=1 to 100 do begin x:=xn+dx*i; y:=f(x); if y>ymax then ymax:=y; end; ymin:=0; ymax:=round(ymax); nd:=detect; initgraph (nd, nr, 'c:\tp7\bgi'); bord1:=60; kx:=6; bord2:=30; ky:=8; 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; 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(9); 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,'y=19.44*exp (0.224*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)/5; for i:=0 to 5 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, 3); if i>0 then line (xt, yt, xt1, yt1); setcolor(5); rectangle (xt1, yt1, xt, yn); xt1:=xt; yt1:=yt; end; repeat until keypressed; closegraph; end; function pr:real; var s, x:real; begin s:=0; x:=a; for i:=1 to n do begin s:=s+abs (f(x))*h; x:=x+h; end; pr:=s; end; function tr:real; var s, x:real; begin s:=0; x:=a; for i:=1 to n do begin s:=s+(f(x)+f (x+h))/2*h; x:=x+h; end; tr:=s; end; function ch:real; var s, dp, kf, a1, b1:real; begin s:=0; kf:=sqrt (1/3); for i:=2 to n+1 do begin a1:=a+h*(i_2); b1:=a1+h; s:=s+((b1_a1)/2)*(f((a1+b1)/2_kf*((b1_a1)/2))+f((a1+b1)/2+kf*((b1_a1)/2))); end; ch:=s; end; function si:real; var s, x, f1, f2:real; begin s:=0; x:=a; i:=1; f1:=0; repeat f1:=f1+f (a+h*i); i:=i+2; until i>=n; i:=2; f2:=0; repeat f2:=f2+f (a+h*i); i:=i+2; until i>=n; s:=h/3*(f(a)+f (b-h)+(4*f1)+(2*f2)); si:=s; end; begin assign (lf, 'otchet.txt'); rewrite(lf); clrscr; write ('Введите значение левого предела интегрирования: '); readln(a); write ('Введите значение правого предела интегрирования: '); readln(b); write ('Введите значение погрешности: '); readln(eps); write ('Введите начальное значение количества разбиений: '); readln(n); writeln; gr (a, b); write ('Ждите, идет обработка данных '); m0:=0; writeln (lf, ' КУРСОВАЯ РАБОТА'); writeln (lf, ' ПО КУРСУ ИНФОРМАТИКА'); writeln (lf, ' «ПРИБЛИЖЕННОЕ ВЫЧИСЛЕНИЕ ЗНАЧЕНИЙ'); writeln (lf, ' ОПРЕДЕЛЕННОГО ИНТЕГРАЛА» '); writeln (lf, ' Выполнил: студент гр. '); writeln (lf, ' Вариант 22 y=19.44*exp (0.224*x)'); writeln (lf, ' Xn=', a:5:3,' Xk=', b:5:3,' Eps=', eps:5:3); writeln(lf); writeln (lf, ' РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЙ'); repeat h:=abs (b-a)/n; m1:=pr; m2:=tr; m3:=si; m4:=ch; seps:=abs (m1_m0); writeln (lf, ' ¦', n:7,' ¦', m1:11:8,'¦', m2:11:8,'¦', m3:11:8,'¦', m4:11:8,'¦', seps:11:8,'¦'); m0:=m1; n:=n+200; until (seps<=eps); clrscr; reset(lf); while not eof(lf) do begin readln (lf, st); writeln(st); end; {write ('Нажмите <Enter> для выхода из программы'); repeat until keypressed;} close(lf); end. Список используемой литературы1. Бахвалов Н.С. «Численные методы». М.: Наука, 1987 - 598 с.2. Калиткин Н.Н. «Численные методы». М.: Наука, 1988 - 512 с.3. Крылов В.И. «Вычислительные методы». М.: Наука, 1977 - 408 с.4. Нечаев В.И., Нечаева О.А., Почуева Л.Н. «Численные методы». Тула, 1999. |
РЕКЛАМА
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |