Laba_infa3 (Все ЛР)
Описание файла
Файл "Laba_infa3" внутри архива находится в папке "Labs". Документ из архива "Все ЛР", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Онлайн просмотр документа "Laba_infa3"
Текст из документа "Laba_infa3"
Задача
Требования к отчёту:
-
Титульный лист;
-
Формулировка задания;
-
Листинг программы;
-
Набор исходных тестовых данных с результатами (скриншоты окна).
Общее задание: Вычислить сумму данного ряда (индивидуальные задания на картинках) в прямом и обратном направлениях при введённых с клавиатуры аргументе Х и точности. Для вычисления очередного слагаемого использовать рекурентную формулу. Результаты вывести в таблицу вида:
Номер Значение Частичная
члена ряда члена ряда сумма
1 - -
2 - -
.
.
n - 1
n
n
.
.
1 - -
Ниже таблицы вывести:
-
Приближенное значение суммы — S
-
Точное значение суммы (через стандартные функции)
-
Абсолютная ошибка abs(значение - S)
-
Относительная ошибка abs((значение функции - S)/значение функции)
Вычислить с точностью E:
-
Приближенное значение по формуле S = , используя рекурентную формулу для вычисления члена ряда;
-
Точное значение функции ;
-
Абсолютную и относительную ошибки и приближенного значения.
Обоснование типов данных
Для большой части данных стоит использовать тип double из-за наличия немалого количества нецелых чисел в больших степенях
Номера членов, переменные счётчики можно обозначить целочисленными переменными типа integer, byte.
Обозначение | Идентификатор | Тип данных |
Значения настоящего и предыдущего элемента соответственно | Sn, Sn1 | double |
Суммы ряда в прямом и обратном порядке соответственно | sum, sum1 | double |
Погрешность | Acc | double |
Абсолютная и относительная ошибка | abserr, relerr | double |
Точка, для которой происходит расчёт значения и её степень | X, X1 | double |
Переменная-счётчик | i | byte |
Номер элемента суммы | n | integer |
Факториал | fact | double |
Знак перед членом | k | integer |
Код
program Laba3;
{Выполнил Кирдин М.Д., Вариант 9, Группа ФН12-11Б. Вычислить значение функции при помощи данного ряда, }
var
Sn, Sn1: double;
sum, sum1: double;
Acc: double;
abserr, relerr: double;
X, X1: double;
i: byte;
n: integer;
fact: double;
{вводим погрешность и точку х, на которой производится расчёт, до того момента, пока Х не будет внутри области определения, а погрешность больше 0}
begin
writeln('Enter accuracy');
readln(Acc);
while (Acc <= 0) do
begin
writeln('Incorrect accuracy input!');
writeln('Enter accuracy');
readln(Acc);
end;
writeln('Enter point');
readln(X);
{Вывод таблицы}
writeln('Member #': 25, 'Value of the member': 25, 'Partial sum': 25);
for i := 1 to 75 do
Write('-');
writeln;
{Прямой расчёт ряда}
k := -1;
repeat
Sn1 := Sn;
sum := sum + Sn;
n := n + 1;
fact := 1;
X1 := 1;
{Цикл, расчитывающий факториал и степень Х}
for i := 1 to 2 * (n - 1) do
begin
fact := fact * i;
X1 := X1 * X;
end;
k := -k;
Sn := k * X1 / fact;
{Условие выхода из цикла(выполняется хотя бы один раз и находится в пределах погрешности)}
if (n > 1) and (abs(Sn - Sn1) < Acc) then
begin
k := -k;
n := n - 1;
Sn := Sn1;
break;
end;
writeln(n: 25, Sn: 25: 5, sum: 25: 5);
until False;
{Обратный расчёт ряда}
repeat
sum1 := sum1 + Sn;
Sn1 := Sn;
writeln(n: 25, Sn: 25: 5, sum1: 25: 5);
n := n - 1;
{Условие выхода из цикла (номер элемента >= 1)}
if (n < 1) then
break;
fact := 1;
X1 := 1;
for i := 1 to 2 * (n - 1) do
begin
fact := fact * i;
X1 := X1 * X;
end;
k := -k;
Sn := k * X1 / fact;
until False;
for i := 1 to 75 do
Write('-');
writeln;
{Расчёт ошибки}
writeln('Approximated function value (straight order): ', sum: 0: 5);
writeln('Approximated function value (reverse order): ', sum1: 0: 5);
sum1 := cos(X);
writeln('Exact functon value: ', sum1: 0: 5);
abserr := abs(sum1 - sum);
writeln('Absolute error: ', abserr: 0: 5);
relerr := abs((sum1 - sum) / sum1);
writeln('Relative error: ', relerr: 0: 5, ' percent.');
readln();
end.
Тестовые данные
X | Погрешность | Значение ряда | Значение функции | Абсолютная ошибка | Относительная ошибка |
3.1415 | 0.01 | -0.99990 | -1.00000 | 0.00010 | 0.00010% |
0 | 0.1 | 1 | 1 | 0 | 0% |
5 | 0.1 | 0.27693 | 0.28366 | 0.00673 | 0.02374% |
1 | 0.00001 | 0.54030 | 0.54030 | 0 | 0% |
10 | 0.1 | 0.39905 | 0.40808 | 0.00903 | 0.02214% |