ВЫЧИСЛЕНИЕ ОПРЕДЕЛЕННЫХ ИНТЕГРАЛОВ.
Пояснительная записка к курсовой работе по дисциплине «Информатика»
Задание.
Составить программу вычисления определенного интеграла
с погрешностью не превышающей заданную величину . В программе предусмотреть защиту от зацикливания итерационного процесса, подсчет и вывод на печать числа итераций, за которое удается найти значение интеграла с заданной погрешностью. Для проверки программы интегрирования вычислить
Метод вычислений – Формула Гаусса.
№
f(x)
a
b
c
d
1
edx/2cos2(cx)
0
p
0.9; 1; 1.05; 1.1
2.4; 2.5; 2.6
10-4
2
(x ln(cdx))2
1
e
3; 3.2; 3.4; 3.5
0.5; 0.4; 0.85
10-3
Содержание.
Задание.................................................................................................................. 1
Содержание........................................................................................................ 2
Описание метода решения...................................................................... 3
Блок-схема программы.............................................................................. 4
Текст программы и результаты счета............................................ 5
Заключение........................................................................................................ 7
Библиографический список................................................................... 7
Описание метода решения.
В формуле Гаусса на каждом интервале интегрирования значение функции f(x) вычисляется не в равномерно распределенных по интервалу узлах, а в абсциссах, выбранных из условия обеспечения минимума погрешности интерполяции:
где n- число интервалов интегрирования, m – число вычисляемых на каждом интервале значений функции. , – границы интервалов интегрирования; и - коэффициенты значения которых определяются величиной m. Для m=3 A1=5/9, A2=8/9, A3=5/9, , t2=0, t3=-t1
Блок-схема программы.
Блок-схема1: Функция вычисления интеграла.
Блок-схема 2: Основная программа.
Текст программы и результаты счета.
program Kursovoy;
const A1=5/9; A2=8/9; t=-0.77459;{константы для взятия интеграла методом Гаусса}
type func=function(x,c,d:real):real;{прототип функции от которой берется интеграл}
var a,b,eps:real;{пределы интегрирования и точность вычисления}
c:array[1..4] of real;{параметры функции, от которой берется интеграл}
d:array[1..5] of real;{взяты из таблицы 2}
function f_test(x,c,d:real):real;{тестовая функция sin(x)}
begin{интеграл от 0 до пи теоретически равен 2}
f_test:=sin(x);
end;
function f1(x,c,d:real):real;{первая функция из таблицы 2}
begin
f1:=exp(d*x/2)*sqr(cos(c*x));
end;
function f2(x,c,d:real):real;{вторая функция из таблицы 2}
begin
f2:=sqr(x*ln(c*d*x));
end;
{Функция взятия интеграла от функции f, прототип(вид) которой описан в типе func
a,b- пределы интегрирования, cm,dm-параметры c и d функции f, eps -точность вычислений
k-число итераций, за которые удалось найти интеграл }
function Integral(f:func;a,b,cm,dm,eps:real; var k:integer):real;
var S,z,h,c,d,l,x,x1,x2,x3:real;{S-текущее приближенное значение интеграла,
z-предыдуще приближенное значение интеграла,h-шаг интегрирования,
c,d,l,x,x1,x2,x3-вспомогательные переменные см. стр.25 методички}
i,n:integer;{i-счетчик цикла, n-число интервалов интегрирования}
begin
n:=1; S:=0; k:=0;
repeat
k:=k+1;{увеличиваем число итераций}
z:=S; {предыдущее значение интеграла равно текущему}
n:=n*2;{в два раза увеличиваем число интервалов интегрирования}
h:=(b-a)/n; x:=a; S:=0; c:=h/2; l:=c*t;{определение шага интегрирования,
начального значения x, сам интеграл сначала равен 0,
вспомогательные переменные считаем }
for i:=0 to n-1 do{перебираем все интервалы интегрирования}
begin
d:=x+c; x1:=d-l;x2:=d; x3:=d+l;{вычисляем значения абцисс узлов,
выбранных из условия обеспечения минимума погрешности интерполяции}
S:=S+A1*(f(x1,cm,dm)+f(x3,cm,dm))+A2*f(x2,cm,dm);{добавляем к сумме}
x:=x+h;{переходим на новый интервал интегрирова