Функцию f2(x) вычислить для ряда точностей ε = 10-2, ε = 10-3, ε = 10-4.Для указанных точностей определить количество N элементов ряда, суммируемых для достижения заданной точности. Результаты расчетов свести в таблицу.
2). Схема алгоритма На рис. 1 приведена схема алгоритма по ГОСТ 19.701-9.
Рис. 1. Схема алгоритма по ГОСТ 19.701-90
3).Текст программы на языке Pascal (с описанием алгоритма) Program Ex1; Uses Crt; {Подключение модуля Crt} Const eps1 = 0.01; {Точность 10-2} eps2 = 0.001; {Точность10-3} eps3 = 0.0001; {Точность 10-4} a = -0.6; {Начальное значение x} b = 0.05; {Шаг} N = 20; {Количество значений функции} Var k1, k2, k3, i: integer; {Вспомогательные переменные: k – количество элементов ряда, суммируемых для достижения заданной точности} f1, f2_1, f2_2, f2_3, step, slag, x: real; BEGIN ClrScr; {Очистка текущего окна на экране} {Рисуется шапка таблицы} Writeln ('_____________________________________________'); Writeln ('| | | e = 0.01 | e = 0.001 | e = 0.0001 |'); Writeln ('| x | f1(x) |--------------|---------------|----------------|'); Writeln ('| | | f2(x) | N | f2(x) | N | f2(x) | N |'); Writeln ('|____|________|______|___|_______|___|_______|___|'); x := a; {Начальное значение х} For i := 1 to N DO {Цикл с параметром от 1 до 20} Begin {Начало цикла с параметром} f1 := 3*x-(x+(1/x))*ln(1-Sqr(x))+2*ln((1-x)/(1+x)); {Вычисляется значение функции f1} {Вычисляется значение функции f2} step := x; {Начальное значение степени х} f2_1 := 0; {Начальное значение функции f2_1} k1 := 0; {Начальное значение количества элементов ряда} Repeat {Итерационный цикл для точности 10-2} inc(k1); {Наращивание количества элементов ряда} step := step*Sqr(x); {Наращивание степени} slag := step/(k1*(k1+1)*(2*k1+1)); {Считается очередное слагаемое} f2_1 := f2_1 + slag; {Считается значение f2_1} Until abs(slag) <= eps1; {Выход из цикла, когда слагаемое становится меньше точности 10-2} f2_2 := f2_1; k2 := k1; Repeat {Итерационный цикл для точности 10-3} inc(k2); {Наращивание количества элементов ряда} step := step*Sqr(x); {Наращивание степени} slag := step/(k2*(k2+1)*(2*k2+1)); {Считается очередное слагаемое} f2_2 := f2_2 + slag; {Считается значение f2_2} Until abs(slag) <= eps2; {Выход из цикла, когда слагаемое становится меньше точности 10-3} f2_3 := f2_2; k3 := k2; Repeat {Итерационный цикл для точности 10-4} inc(k3); {Наращивание количества элементов ряда} step := step*Sqr(x); {Наращивание степени} slag := step/(k3*(k3+1)*(2*k3+1)); {Считается очередное слагаемое} f2_3 := f2_3 + slag; {Считается значение f2_3} Until abs(slag) <= eps3; {Выход из цикла, когда слагаемое становится меньше точности 10-4} {Вывод результатов} Writeln ('|', x:5:2, '|', f1:12:9, '|', f2_1:5:2, '|', k1:2, '|', f2_2:6:3, '|', k2:2, '|', f2_3:7:4, '|', k3:2, '|'); x := x + b; {Увеличение значения аргумента на шаг 0,05} End; {Конец цикла с параметром} {Завершение таблицы} Writeln ('--------------------------------------------------'); ReadKey END.