Курсовая работа: Средства языка программирования Паскаль для решения математических задач
WRITELN('C должно быть меньше 1!. Повторите ввод.');
END;
UNTIL ((P_PAR>0) AND (P_PAR<1));
REPEAT
BEGIN
writeln('Начало интервала A: '); readln(PR_1);
writeln('Конец интервала B: '); readln(PR_2);
if not (PR_1<PR_2) then
writeln ('A должно быть меньше B !. Повторите ввод.');
END;
UNTIL (PR_1<PR_2);
REPEAT
BEGIN
writeln('Точность E: '); readln(POGR_PRO);
if not (POGR_PRO>0) then
writeln ('E должно быть больше 0 !. Повторите ввод.');
END;
UNTIL (POGR_PRO>0);
END;
FUNCTION integration(VAR GR_1,GR_2,F_PAR,POGR_FUNC:REAL):real;
VAR
INTEGRAL1, INTEGRAL2, X, H:REAL;
N:INTEGER;
READY:BOOLEAN;
begin
integral1:=0;
integral2:=0;
n:=1;
REPEAT
N:=N*2;
H:=(GR_2-GR_1)/N;
X:=GR_1;
Integral2:=0;
repeat
if x<=(-F_PAR) then
integral2:=integral2+((1/sqr(3))*(ln(F_PAR)-F_PAR))
ELSE IF((-F_PAR<x) and (x<=F_PAR))
THEN integral2:=integral2+ln(F_PAR)
ELSE if (X>F_PAR) THEN
Integral2:=integral2+LN(X)/LN(10);
X:=X+H;
until not (X<=B);
READY:=abs(integral1-integral2)<POGR_FUNC;
INTEGRAL1:=INTEGRAL2;
UNTIL READY;
INTEGRATION:=INTEGRAL2;
END;
BEGIN
ENTER_DATA(A,B,C,E);
ABS_Integral:=INTEGRATION(A,B,C,E);
Writeln;
Writeln( 'Ответ: ');
writeln('Интеграл на промежутке от ',A:0:2,' до ',B:0:2,' равен ');
writeln (ABS_Integral:1:3,' с точностью ',E:1:3);
ReadKey;
END.
1.7 Инструкция пользователю.
Данная программа вычисляет значение интеграла функции заданной графически. Интервал интегрирования, точность вычислений и параметр функции вводятся пользователем. Программа вычислит результат и выдаст его (в числовом виде) на экран монитора.
После запуска программы на экране появится описание программы.
В ответ на приглашение к вводу значений следует ввести требуемые величины. Программа не претендует на универсальность, поэтому не стоит вводить запредельные границы интервала или очень маленькую ( ~0.001) точность вычислений. Поскольку скорость выполнения этой программы напрямую зависит от частоты процессора, то на процессорах, различающихся значительно, время вычислений (и допустимая точность) будут разными. В общем случае это определяется опытным путем.
Если все величины заданы корректно и вычисления не прерывались, то через некоторое время, зависящее от тактовой частоты процессора, программа подсчитает значение интеграла и выдаст его на экран.
В случае если требуется повторное вычисление значения, следует заново запустить программу.
1.8. Тестовый пример.
Программа для нахождения значения интеграла на определенном промежутке
Введите границы интервала [A,B], причем (A<B), число C (0<C<1), число D (D<0) и точность E (E>0):
Число C:
0.9
Число D:
-0.1
Начало интервала A:
5
Конец интервала B:
10
Точность E:
1
Ответ:
Интеграл на промежутке от A до B равен
2.574 с точностью 1.000
Программа для нахождения значения интеграла на определенном промежутке
Введите границы интервала [A,B], причем (A<B), число C (0<C<1), число D (D<0) и
точность E (E>0):
Число C:
0.9
Число D:
-0.1
Начало интервала A:
-0.9
Конец интервала B:
0.9
Точность E:
1
Ответ:
Интеграл на промежутке от A до B равен
-0.300 с точностью 1.000
2. Составление таблицы значений функции, заданной в виде разложения в ряд
2.1 Вариант задания и постановка задачи.
Задание (вариант №15):
Разработать алгоритм и составить программу вычисления таблицы значений функции, заданной в виде разложения в ряд. Значение функции вычислять с точностью e>0, т.е. вычисление суммы членов ряда необходимо прекратить, когда абсолютная величина очередного члена ряда разложения окажется меньше e: | ак | <e.
При вычислении очередного члена целесообразно воспользоваться рекурентным выражением:
ак+1=скак; к= 0, 1, 2, ...,
где ак - некоторый к-ый член ряда; ак+1 - следующий к+1-ый член ряда; ск - коэффициент, определяемый номером к.
При составлении программы необходимо по возможности воспользоваться операторами организации циклов WHILE, REPEAT, FOR.
Границы интервала вычислений функций a и b, величина шага изменения аргумента h и точность вычисления функции e задаются при вводе. На печать выводятся номер по порядку, значение аргумента, соответствующие ему, значение функции и номер члена ряда, на котором закончилось вычисление значение функции, в форме таблицы:
№ |
Х |
f (x) |
№ чл.р. |
1 | |||
2 | |||
3 | |||
... |
Функция:
2.2 Математическая формулировка задачи.
Некоторые функции нельзя представить в виде конечной формулы, но вычисление значений таких функций часто бывает необходимо для различного рода расчетов. Такие функции могут быть заданы в виде разложения в бесконечный ряд, где при бесконечном увеличении членов ряда каждый последующий член меньше предыдущего. Каждый член ряда – это конкретное значение функции. Нахождение таких членов и дает возможность вычислить значение функции. И чем больше членов ряда рассмотреть, тем более точным получится значение функции.
2.3 Численный метод решения.
Пусть требуется приближённо вычислить значение функции, заданной в виде разложения в бесконечный ряд. Идея алгоритма вычисления суммы членов ряда состоит в следующем:
Очевидно, что вычисление значения функции нужно производить за конечное число шагов. А значит, необходим некий ограничивающий фактор, в качестве которого в нашей задаче будет выступать погрешность вычислений e (e>0). Следовательно, вычислив каждый новый член ряда ak, нам необходимо проверить, не будет ли абсолютная величина очередного члена ряда меньше, чем величина погрешности e, т.е. |ak| < e. Если это неравенство не выполнилось, то следует вычислить новый член ряда, иначе можно заканчивать вычисление и выводить результат работы на экран дисплея.
Кроме того, при вычислении очередного члена целесообразно воспользоваться рекуррентным выражением: ak+1 = ck * ak; k = 0, 1, 2, …, где ak – некоторый k-ый член ряда; ak+1 - следующий k+1-ый член ряда; ck – коэффициент, определяемый номером k.
В данном случае нахождение коэффициента ck можно произвести следующим образом:
ak=;
ak+1=;
ck =
Следовательно, зная значение предыдущего члена ряда, порядковый номер следующего и используя полученную формулу, мы значительно упрощаем нахождение нового члена нашего ряда:
ak+1 =ak*; k = 0, 1, 2, …
2.4 Описание переменных.
Имя переменной |
Тип переменной |
Значение |
K |
integer | Номер члена ряда |
number | integer | Порядковый номер |
A | real | Начало интервала |
B | real | Конец интервала |
H | Шаг интервала | |
E | Точность | |
X | Текущее значение аргумента | |
у | Значение члена ряда | |
f | Значение функции для текущего аргумента |
2.5 Схема алгоритма.
Программа предназначена для вычисления
таблицы значений функции,
заданной в виде разложения в ряд.
Введите границы интервала [A,B] ( причем (A<B) );
точность E (E>0)
и шаг изменения аргумента H (H>0)
ДА
НЕТ
НЕТ
ДА
нет
да
нет
да
нет
2.5.1 Схема алгоритма процедуры Table_begin