- •Содержание
- •Введение
- •2. «Вычисление суммы ряда»
- •1. Вычисление интеграла
- •1.1. Постановка задачи
- •1.2. Математическая формулировка задачи
- •1.3. Метод левых прямоугольников
- •1.4. Схема алгоритма программы вычисление интеграла
- •1.5. Текст программы
- •1.6. Инструкция программиста
- •1.7. Инструкция пользователя
- •1.8. Тестовый пример
- •2. Вычисление суммы ряда
- •2.1. Постановка задачи
- •2.2. Математическая формулировка задачи
- •2.3. Итерационный цикл
- •2.4. Схема алгоритма программы вычисление ряда
- •2.5. Текст программы
- •2.6. Инструкция программиста
- •2.7. Инструкция пользователя
- •3.6. Инструкция программиста
- •3.7. Инструкция пользователя
- •3.8. Тестовый пример
- •Заключение
- •Список использованной литературы
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.