Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ККRR вар.20.doc
Скачиваний:
4
Добавлен:
19.11.2018
Размер:
595.46 Кб
Скачать

2. «Вычисление суммы ряда»

3. «Работа с массивами».

Все программы выполнены на языке Паскаль с применением функций и процедур, демонстрируют умение работать с основными типами данных, с использованием динамических переменных, умение осуществлять файловый ввод-вывод.

В программе предусмотрены комментарии, поясняющие выполняемые логические действия. Форма выдачи на печать побуждающих сообщений и результатов сделана понятной и удобной для пользователя.

1. Вычисление интеграла

1.1. Постановка задачи

Составить программу на языке Turbo Pascal 7.0 вычисления значения интеграла на интервале [a,b] для функции, заданной графически.

Численные значения всех величин, участвующих в вычислениях, считать параметрами программы, и определить их путём ввода.

График функции варианта №20:

Рисунок 1 — График функции

1.2. Математическая формулировка задачи

Значение интеграла вычислить приближённо по итерационной формуле левых прямоугольников:

(1)

где h=(b-a)/n - величина шага между двумя соседними точками разбиения интервала интегрирования; fi = f(xi) - значение функции в точке xi = a+h(i-1); i = 1,2,...n.

Вычисления закончить при выполнении условия (In-I2n) < e, где e > 0 достаточно малое значение, задаваемое пользователем (точность вычислений). Здесь In, I2n - значения интеграла, вычисленные по (1) при количестве интервалов разбиения n и 2n соответственно.

Для того, чтобы вычислить значение интеграла на интервале [a,b] для функции, заданной графически, необходимо составить уравнение функции, заданной графически (рисунок 1).

Где функция thx= | (ex -e-x)/ (ex +e-x) | - гиперболический тангенс.

Далее воспользоваться методом левых прямоугольников для вычисления интеграла по формуле (1) с требуемой точностью.

1.3. Метод левых прямоугольников

1. Пусть для заданной функции y=f(x) требуется вычислить интеграл на интервале [a,b] по формуле (1).

2. Тогда значение интеграла для заданной функции y=f(x) можно вычислить как сумму интегралов функций f1(x), f2(x), f3(x) и f4(x) на

интервале [a, b].

3. Выбрав шаг , разобьём отрезок [a,b] с помощью равносильных точек x0 = a, xi = x0+ih (i = 1,2, . . ., n-1), xn = b на n равных частей, и пусть yi= f(xi) (i = 1, 2, . . ., n-1).

4. Вычисления будем выполнять до тех пор, пока не выполнится условие (In-I2n) < e, где e > 0 - достаточно малое значение, задаваемое пользователем (точность вычислений). Здесь In, I2n - значения интеграла, вычисленные по (1) при количестве интервалов разбиения n и 2n соответственно.

1.4. Схема алгоритма программы вычисление интеграла

Алгоритм вычисления интеграла методом левых прямоугольников представлен на рисунках 2, 3.

Рисунок 2 - Схема алгоритма вычисления интеграла (начало)

Рисунок 3 - Схема алгоритма вычисления интеграла (конец)

1.5. Текст программы

Ниже следует текст программы, написанный на языке Turbo Pascal 7.0, предназначенной для решения поставленной задачи(описанной в задании).

Program Task_1_20;

Uses Crt;

Var a,b,e,c,R,Integ,Integlast,h,x,Sum,f:real;

n,i,z:integer;

BEGIN

clrscr;

Integ:=0;

n:=2;

Repeat

Writeln('Введите значения:');

Write(' левая граница промежутка: a= '); Readln(a);

Write(' правая граница промежутка: b= '); Readln(b);

Write(' введите точность (e>0): e= '); Readln(e);

Write(' введите число (с>0): с= '); Readln(c);

Write(' введите радиус (R>0): R= '); Readln(R);

Until (a<b) and (e>0) and (c>0) and (R>0);

Repeat

begin

h:=(b-a)/n;

sum:=0;

for i:=1 to n do

begin

x:=a+i*h;

if x>0 then z:=-1 else z:=1;

if abs(x)>=R+c then f:=0

else if abs(x)<=c then f:=(exp(2*x)-1)/(exp(2*x)+1)

else f:=z*sqrt(R*R-sqr(x+z*c));

Sum:=Sum+f;

end;

Integlast:=Integ;

n:=n*2;

Integ:=h*sum;

end

Until (abs(Integ-Integlast)<e);

Writeln('Значение интеграла на промежутке [',a:2:2,',',b:2:2,'] с точностью ',e:2:5,' равно ',Integ:2:5);

Readln;

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]